C언어는 1972년 Bell 연구소의 데니스 리치가 UNIX라는 운영체제(Opreation System)을 만들기 위해
개발한 언어로, 당시의 운영체제들은 비교적 low-level(저급 언어)인 어셈블리어로 개발되어
만들기 어렵고, 하드웨어간의 호환성또한 좋지 않아
이런 단점들의 극복을 위해 만들어진 고급 언어입니다.
위에서 저급언어와 고급언어가 나오는데 저급 언어가 질이 낮은 언어라는 뜻이 아니라
기계어 <-------------------> 자연어(인간의 언어)가 있을때
기계어에 가까울 수록 로우 레벨 언어라고 부르며 자연어에 가까울 수록 하이 레벨 언어라고 부릅니다.
이후로 UNIX는 많은 새로운 운영체재들의 아이디어의 뿌리가 되었으며
C언어도 많은 프로그래밍 언어들의 기원이 되었습니다.
특징으로는
1. 다른 고급 언어들(Python, Java)에 비해 입문용으로는 난이도가 높습니다
역사가 오래되기도 했고 어플리케이션이 아닌 운영체재를 만들기 위한 언어였기때문에
하드웨어나, 소프트웨어 특히 기계제어쪽의 상당한 지식이 프로그래머에게 있다는 전재를 두고
많은 부분들을 프로그래머에게 맡기는 문법을 사용하기 때문에 배워야 할것이 부분이 상당히 깊습니다
2. 절차 지향적 언어입니다.
흔히들 '절차 지향적 언어' 와 '객체 지향적 언어'라는 말을 한번씩 들어 보셨을 겁니다.
절차 지향적 언어란 C언어처럼 위에서 아래로 순차적으로 프로그래밍하여 유기적인 연결이 되게 하는 언어이며
객제 지향적 언어는 C언어의 '구조체'문법에서 파생된 Class 문법(비슷한 특징의 변수들과 함수(기능)이
한 Class에 묶는 문법)을 가집니다. 대표적으로 Java나 Python이 있습니다
절차 지향적 언어는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체 지향적 언어보다 처리속도가 빠르다는 장점이 있습니다
객체 지향적 언어는 소프트웨어와 컴파일러의 발달을 하드웨어의 발달이 따라오지 못한탓에
모듈이라는 기능별 묶음으로 하드웨어의 처리양을 획기적으로 줄여주는 장점이 있습니다
3. 쓰이는 분야가 한정적입니다
C는 주로 한정된 자원으로 최고의 효율을 뽑아야하는 임베디드 시스템 분야나 운영 체재,
속도와 성능이 중요한 암호학 분야 등에 쓰입니다.
또한 제대로 사용하려면 하드웨어의 충분한 지식들과 어셈블리어를 익혀야 합니다.
따라서 예전에는 입문자에게 많이 추천되는 언어였지만 요즘은 Python이나 Ruby등의 언어의 인지도가
높아진탓과 더불어 입문용어로는 많이 추천빈도가 적어졌습니다
5. 다차원 배열과 포인터의 포인터 (0) | 2020.10.04 |
---|---|
4. 문자열을 배열, 포인터에 저장하는법과 특징 (0) | 2020.10.04 |
3. 지역변수, 전역변수 그리고 Static 지역변수 (0) | 2020.10.04 |
2. NULL 문자 : 네이버 블로그 (0) | 2020.10.04 |
1. return 0; 의 2가지 의미 (0) | 2020.10.04 |