C언어란?
C언어는 1972년 AT&T 벨 연구소에서 개발된 범용 프로그램 언어입니다. UNIX라고 불리는 OS(운영체제)를 개발하기 위해서 만들어진 언어로, 고수준 언어의 특징을 가지면서, 메모리 관리나 하드웨어의 제어를 실시할 수 있는 저 수준 언어로서도 동작합니다. 그 때문에 높은 범용성을 가지고 하드웨어에 밀착된 처리를 필요로 하는 분야에서도 활용할 수 있는 것이 특징입니다. OS에서 기간 계 시스템, 로봇 등 제어계, IoT 기기로의 임베디드, 우주 개발 등 동작 환경의 자원 제약이 엄격하거나 실행 속도 성능이 요구되는 조건에서의 개발 외에 스마트폰 앱 개발 등 폭넓은 분야에서 활용되고 있습니다.
C언어의 특징
C언어의 특징으로는 주로 다음과 같은 4가지 점을 들 수 있습니다.
- 절차형 언어
절차형 언어인 C언어는 구조가 단순합니다. 현재 많은 언어에서 채택되고 있는 객체 지향과 비교하면 위에서 아래로 처리가 흘러가는 경우가 많기 때문에 소스 코드의 흐름을 이해하기 쉽다는 특징이 있습니다.
- 처리 속도가 빠르다
실행에 컴파일을 필요로 하는 컴파일러 언어이며, 특히 C언어는 컴파일러 언어 중에서도 처리 속도가 가장 빠르다고도 합니다. 속도가 빠르기 때문에 에지 AI 등 단말기에 내장하는 타입의 AI 등에서도 활용할 수 있습니다.
- 어떤 환경에서도 실행할 수 있다
C언어는 원래 멀티플랫폼이기 때문에 환경에 의존하지 않고 실행할 수 있습니다. 따라서 실행 환경에 얽매이지 않고 동일한 코드를 다른 환경에서 컴파일하여 사용할 수 있습니다.
- 어떠한 실행 환경에도 implement 할 수 있다
다양한 분야에 응용되고 있다(OS, 임베디드 제어 기기, IoT, 로봇 등)
OS 개발부터 소프트웨어, 스마트폰 앱, 임베디드 제어 기기, 차량 탑재 기기, IoT와 AI, 로봇 제어 등 매우 다양한 분야에서 C언어가 채용되고 있습니다. 특히 제약이 엄격한 하드웨어에 내장 및 개발에 강하고 인공위성이나 우주정거장 제어 등에도 사용되고 있습니다.
C언어로 할 수 있는 일
앞서 언급한 바와 같이 C언어는 범용성이 높은 것이 특징입니다.그 때문에, 기존의 시스템의 보수 운용 이외에도, 광범위한 최첨단 분야에서 개발 언어로서 채용되고 있습니다.
OS(운영체제)
C언어는 하드웨어 제어가 가능하기 때문에 세세한 하드웨어 관리를 필요로 하는 OS(운영체제) 개발에 이용되고 있습니다.
C언어에 의해서 개발된 OS의 대표적인 예로는, macOS가 베이스로 하고 있는 UNIX나, Linux등이 있습니다.그 밖에도, 임베디드 계열의 OS 등에 사용되고 있습니다.
IoT/AI
최근 수요가 확대되고 있는 IoT나 AI 분야에서도 C언어가 사용되고 있습니다. AI라고 하면 머신러닝이나 인공지능 개발에 강한 파이썬 이미지가 있지만 임베디드에 사용되는 에지 AI의 경우 하드웨어적으로 리소스가 적은 단말기에 AI를 내장해야 하기 때문에 실행 파일 크기가 작고 처리 속도가 빠른 C언어가 선택될 수 있습니다.
마찬가지로 IoT 기기도 하드웨어적 제약이 크고, 더불어 지속적인 전원 공급이 없는 장소에서 장기간 사용될 수 있으므로 절전해야 합니다. 그런 점에서도 하드웨어 제어까지 파고들어 프로그래밍할 수 있는 C언어는 다른 언어보다 강점이 있습니다.
C언어 학습을 추천하는 사람
앞으로 프로그래밍 언어를 배우려고 하는 경우 커리어를 목표로 하고 싶은 분야나 목표에 따라 C언어를 추천합니다. C언어는 습득의 문턱이 높은 언어임은 이미 설명한 바와 같이 오래된 언어에서도 최첨단으로 활용되고 있기 때문에 최신 분야를 목표로 할 때 C언어를 선택하는 것이 최적인 경우도 적지 않습니다.
구체적으로 어떤 분야에 C언어가 적합한지 분야별로 소개해 드리겠습니다.
IoT/AI를 하고 싶은 사람
사물인터넷이라 불리는 IoT와 에지 AI는 통신망이 5G로 강화되면서 앞으로 수요가 더 늘고 인기가 높아질 것으로 예상되고 있습니다. 최첨단 IoT/AI 분야에 도전하고 싶은 사람에게 임베디드에 강하고 하드웨어 제어를 잘하는 C언어는 필수라고 할 수 있습니다.
프로그램의 기본을 제대로 배우고 싶은 사람
C언어는 역사가 긴 언어이며 프로그래밍에 대해 기초부터 배울 수 있습니다. 스크립트 언어인 PHP나 Java Script, Ruby 등과 비교해 습득이 어렵다고 되어 있지만, 그만큼 대부분의 언어에서는 언어의 핵심 부분에서 자동으로 처리하고 있는 메모리 관리에 대해 이해를 깊게 하거나 보다 효율적인 프로그램 작성법 등을 다른 언어보다 자세히 배울 수 있습니다.
C언어가 맞지 않는 사람
한편 C언어 학습에 적합하지 않은 사람도 있습니다. C언어는 범용언어로 지식이 동반되면 어떤 분야에서도 개발이 가능하지만 현재는 각 분야에 적합한 언어가 개발되고 있기 때문에 반드시 C언어가 최적의 선택이라고는 할 수 없습니다.
C언어가 적합하지 않은 분야에 대해 몇 가지 소개하겠습니다.
웹쪽 일을 하고 싶은 사람
Web 계의 개발에서는 대부분의 경우, PHP나 Ruby, Perl과 같은 스크립트 언어나 Java 등이 사용되고 있습니다. 대규모 서버사이드 개발에서는 C언어가 사용되기도 하지만 결코 메이저 언어는 아닙니다.
빠른 처리가 필요한 클라우드 AI를 다루는 분야에서는 다소의 수요가 있지만, 일반적인 웹의 프런트엔드나 서버사이드를 개발하고 싶다면 C언어보다 주류인 PHP 등 스크립트 언어가 더 좋을 것입니다.
개인 개발을 하고 싶은 사람
기타 언어에 비해 습득의 문턱이 높기 때문에 쉽게 애플리케이션을 작성하고 프로그래밍으로 놀고 싶은 용도라면 C언어는 별로 추천할 수 없습니다.
C언어는 다른 언어에서는 자동으로 처리하고 있는 메모리 관리를 비롯한 다양한 처리를 스스로 코딩해야 합니다. 그렇기 때문에 원하는 애플리케이션 개발에 도달하기까지의 학습 시간이 길어지기 때문에 중간에 좌절하기 쉽습니다.
또한 C언어의 강점인 처리 속도를 중시하여 제대로 설계하고 만드는 경우가 아니면 굳이 C언어를 선택한 장점이 나오지 않습니다.
현재 하드웨어 성능도 크게 향상되었기 때문에 다소의 처리 속도 차이라면 체감에서 큰 차이가 없을 수도 있고 개인적인 앱 개발이라면 다른 언어가 더 좋을 것입니다.
'IT' 카테고리의 다른 글
Azure란? (0) | 2023.03.05 |
---|---|
코드 리뷰란? (0) | 2023.03.04 |
Flutter 에 대한 소개 (0) | 2023.03.04 |
Java 의 Class 란 무엇인가? (0) | 2023.02.05 |
JavaScript란? JavaScript의 특징 (0) | 2023.02.05 |
댓글