본문 바로가기
프로그래밍/C언어

C언어 공부하기 - 개요

by 헬맷쓰다 2020. 7. 14.
반응형

1. C 언어의 탄생

 

C언어는 1972년 벨 연구소(Bell Labs)의 켄 톰슨(Kenneth Lane Thompson)과 데니스 리치(Dennis Ritchie)가 새로 개발된 유닉스 시스템에 사용하기 위해 개발한 프로그래밍 언어입니다. 켄 톰슨은 BCPL언어를 필요에 맞춰 개조해서 'B'라는 언어를 개발했고, 데니스 리치는 이를 개선하여 'C'언어를 만들었습니다. (B다음이 C니까 그렇게 지었다고 합니다.)

 

 

2. C언어의 역사

 

2.1. K&R C (1978년)

1978년 브라이언 커니핸(Brian Wilson kernighan)과 데니스 리치가 그 유명한 The C Programming Language 책의 초판을 출간 했습니다. 저자의 앞자를 따서 K&R C 라 불리는 이 책은 C프로그래머들에게 바이블과 같은 역할을 했으며 2판은 ANSI C표준을 다루게 되었습니다. 

 

2.2. ANSI C (1989년), ISO C (1990년)

1983년에 ANSI가 K&R C를 확장 겸 표준화를 위해 위원회를 소집하여 1989년에 C언어 표준인 C89를 제정했습니다. 이후 ANSI는 ISO에 C언어 표준을 불려 변경없이 C90이라고도 불립니다. 사실 현 시점에서도 C89를 거의 표준으로 사용하고 있는데, OS제조사 (특히 마이크로소프트) 컴파일러 제조사 (동사, 또는 볼랜드사 등)에서 표준안을 제대로 지키지 않은 영향이 큰 것으로 알고 있습니다.

 

2.3. C99 (1999년)

1999년에 여러 컴파일러에서 비표준적이지만 프로그래머들이 명시적으로 사용하는 몇가지 사항을 추가하여 C99로 제정하였습니다. 대부분은 C89와 상호 호환이 가능합니다.

 

2.4. C11 (2011년), C18 (2018년)

2007년부터 비공식적으로 C1X라 불렸던 C언어 표준의 개정판의 논의가 2011년 확정되었는데, 제네릭 매크로, 익명구조, 향상된 유니코드 지원, 원자적 조작, 멀티스레드, 경계 검사 기등 등 문법 및 라이브러리에 새로운 기능들이 대거 추가 되었습니다. 2018년 최신 표준인 C18이 최종 승인 되었는데 새로운 기능은 없고 C11의 결함에 대한 수정 및 설명이 추가 되었다고 합니다. 하지만 아직 C11, C18은 실무에서는 잘 쓰이지 않는다고 합니다. 

 

 

3. C언어 꼭 배워야 하나요?

 

사실 요즘 추세는 Java, Python, C# 등 고수준 언어를 한학기 배워 제법 근사한 프로젝트 몇개를 뚝딱 만들어 낼 수도 있지만, C언어를 공부하면 고작 프롬프트에서 명령어 실행이나 하는 수준으로 생각할 수 있기 때문에 갈수록 입문 언어로서 매력이 떨어지고 있습니다. 게다가 가비지컬렉션도 직접 해줘야 하는 등 디버깅이 어려운게 더 어려움이 있습니다.

 

하지만, C언어는 OS 또는 하드웨어 수준의 공부를 하는 목적에 있어서는 아주 적합한 선택이라고 할 수 있습니다. 유닉스의 역사와 함께한 C언어이므로 Unix-like한 Linux 시스템프로그래밍을 하는데도 많은 도움이 됩니다. 또한 속도에 크리티컬한 문제는 다른 고수준 언어보다 C/C++을 사용하는게 좋으며 실제로 그렇게 프로젝트가 진행되는 경우가 많습니다.

 

 

4. 여기서 다루는 것

 

4.1. C언어 문법 (K&R C 2nd Edition 참고)

  • 변수, 상수, 연산자
  • 제어흐름
  • 함수
  • 포인터
  • 구조체
  • 입출력

4.2. 리눅스 / 유닉스 시스템 프로그래밍

  • 개발환경
  • 프로세스와 시그널
  • 프로세스간 통신 (파이프/세마포어/메시지큐/공유메모리)
  • 소켓
  • 디버깅 

 

5. 여기서 다루지 않는 것

  • C++ : 이름에서 C언어에서 점진적으로 발전한 언어로 생각할 수 있지만, 사실은 완전히 다른 개념의 언어입니다. 
  • (거의) 완성된 프로젝트 : 대부분 CLI(Command Line Interface)로만 실행

    

반응형

댓글