본문 바로가기
모던 C

들어가며

by 왕초보 독학 코딩 2024. 2. 2.

이 포스트는 '모던 C'를 요약한 내용입니다.

 

이 책은 C언어에 대한 숙련도와 전반적인 프로그래밍 실력에 따라 단계를 나눠서 구성됐다. 특히 포인터와 같은 어려운 주제를 처음부터 깊이 다루어 개념을 잘못 이해하지 않도록 여러 레벨에 걸쳐 설명한다.

 

C버전

현재 국제 표준 기구인 ISO에서 C 언어 표준을 관리하고 있다. 그래서 흔히 C89, C99, C11, C17(각각 1989년, 1999년, 2011년, 2018년에 재정)으로 부르는  C 표준이 발표됐다. C 표준 위원회는 최신 표준을 구현한 컴파일러가 예전 버전으로 작성된 코드를 컴파일 할 수 있도록 하위 호환성을 보장하는 데 상당한 노력을 기울인다. 아쉽게도 이런 하위 호환성 때문에 새 기능을 사용하면 큰 도움이 되는 프로젝트라도 코드 베이스를 업데이트하지 않도록 하는, 의도하지 않은 부작용이 생겼다. 

이 책은 C17(2018)을 다룬다. 하지만 지필 시점에 이 버전을 완벽히 지원하지 않는 컴파일러도 몇몇 있었다. 이 책에 나온 예제를 컴파일하고 싶다면 최소한 C99를 지원하는 컴파일러 사용을 권장한다.

 

C와 C++

C++는 C를 바탕으로 몇 가지 기능을 추가해서 진화한 언어라고 잘못 아는 사람들이 많다. 역사적인 관점에서는 완전히 틀린 말은 아니지만 현재는 크게 관련이 없다. 두 언어는 차이점이 많으며 이 책에서는 C를 주로 다룬다. 이 책에서 소개하는 코드 예제는 대부분 C++ 컴파일러로는 컴파일되지 않을 것이다.

 

준비 사항

이 책을 제대로 활용하려면 몇 가지 사항을 준비해야 한다. 이 과정을 생략하고 책을 읽으면 시간 낭비만 하게 될 것이다.

무엇보다 프로그래밍은 직접 해 보지 않고는 절대 배울 수 없다. 따라서 PC나 노트북에 적절한 프로그래미이 환경부터 갖추고, 이에 어느 정도 익숙해지기 바란다.

 

구성

이 책은 레벨 0부터 레벨 3까지 단계별로 구성됐다.

레벨 0 '만남'에서는  C 프로그래밍에 대한 아주 기본적인 사항을 간략히 소개한다. 이 레벨의 주 목적은 주요 개념을 상기하고 C 언어의 전문 용어나 스타일에 익숙해지는 것이다.

레벨 1 '친숙'에서는 C 언어의 핵심 개념과 기능(예: 제어 구문, 데이터 타입, 연산자, 함수)에 대해 자세히 소개한다. 이 단계에서는 C 언어에서 어렵다고 손꼽히는 기능인 포인터에 대해 간단히 소개하고 넘어간다.

레벨 2 '이해'에서는 C 언어에서 가장 핵심적인 영역을 다룬다. 포인터에 대해 구체적으로 설명하고 C의 메모레 모델에 대해서 자세히 다루는데, 이 개념은 C 라이브러리 인터페이스를 이해하는 데 중요하다. 이 레벨을 마치면 C 코드를 전문가 수준으로 작성할 수 있다. 이때부터 C 프로그램의 구성과 작성법에 대한 주요 내용을 다루기 시작한다.

레벨 3 '숙달'에 이르러서는 성능, 재진입, 원자성, 스레드, 타입-독립 프로그래밍과 같은 세부 주제를 다룬다.