티스토리 뷰

개발에 있어서 기본은 무엇보다 중요합니다. 기본이 흔들리거나 없다면 정말 정말 큰 프로젝트를 할 경우에 무너지는 건 한순간입니다. 아주 사소하지만 중요한 포인트를 놓쳐서 일을 그르치는 경우를 많이 봤습니다. '전문가를 위한 C'란 책을 읽으면서 마음 한편으로 기본이 항상 중요하단 생각이 문득문득 드네요.

전문가를 위한 C - 한빛미디어

C는 시스템 프로그래밍과 임베디드 시스템 등 다양한 분야에서 사용되는 프로그래밍 언어입니다. 지금은 다들 자바, 자바스크립트, 코틀린 등 여러 현대 언어들을 쓰지만 그 모든 것들의 할아버지 격인 언어인 C는 아직도 현업에서 쌩쌩하게 사용되고 있는 정말 최장수 언어이기도 합니다.

기본적인 C 학습에는 다음과 같은 부분들을 공부하는게 기본이 됩니다.

  1. C 언어의 기본 문법과 표준 라이브러리의 이해 : C 언어의 문법을 이해하고 사용하는 것은 매우 중요합니다. 이를 위해 변수, 연산자, 제어문, 함수 등에 대한 이해와 사용법을 학습해야 합니다. 또한 표준 라이브러리 함수를 이해하고 활용할 수 있어야 합니다. 여기에 책에서 언급한 최신 C의 경우는 값을 반환하지 않는 함수라던가 익명 구조체와 익명 공용체, 멀티스레딩 등 이전과 달라지고 개선된 부분들이 꽤 있습니다.
  2. 포인터의 이해 : C는 메모리를 직접 조작할 수 있는 언어이기 때문에 C 언어에서 포인터는 중요한 개념 중 하나입니다. 포인터는 메모리 주소를 가리키는 변수로서, 동적 메모리 할당과 같은 메모리 작업을 수행하는 데 필요합니다. 포인터 연산과 포인터를 사용한 데이터 구조의 구현 등을 학습해야 합니다. 더불어서 책에 나온 허상포인터까지 알게 된다면 더 좋죠.
  3. 메모리 관리의 이해 : C 언어에서 메모리를 효율적으로 관리하는 것은 중요합니다. 동적 메모리 할당과 해제, 메모리 누수 방지, 스택과 힙 메모리의 차이 등을 이해하고 사용해야 합니다. 좀 더 나아가면 BSS, 데이터, 텍스트 세그먼트의 정적 메모리 레이아웃, 동적 메모리 레이아웃의 프로세스 메모리 구조를 이해하면 좋습니다.
  4. 파일 입출력 : C 언어에서 파일 입출력을 다루는 방법을 학습해야 합니다. 파일 읽기, 쓰기, 열기, 닫기 등의 함수를 이해하고 사용할 수 있어야 합니다.
  5. 네트워크 프로그래밍의 이해 : 파일 입출력에 이해하다 보면 자연스럽게 네트워크로 넘어가게 됩니다. 소켓 프로그래밍과 TCP, UDP, 네트워크 계층에 대해 공부해야 합니다.
  6. 프로그램 구조 : 대규모 C 언어 프로그램을 작성하기 위해서는 코드의 구조화와 모듈화가 필요합니다. 이를 위해 함수, 구조체, 열거형, 헤더 파일 등을 사용하는 방법을 학습해야 합니다.
  7. 디버깅 : C 언어 프로그램에서 버그를 찾고 해결하는 능력은 매우 중요합니다. gdb와 같은 디버깅 도구를 사용하는 방법과 디버깅 기술 등을 학습해야 합니다.
  8. 프로그래밍 패러다임 : C 언어는 절차지향적인 프로그래밍 언어입니다. 그러나 객체지향적인 코드를 작성하는 방법을 이해하고 사용할 수 있어야 합니다. 함수형 프로그래밍 또한 C 언어에서 사용할 수 있습니다. OOP와 캡슐화를 쓰려면 면 객체지향 사고를 해야하는데 제 경우는 이 부분이 좀 어렵더군요. 상속과 다형성, 합성과 집합. 추상화 등 자주 쓰지 않으면 항상 헷갈리는 개념들입니다.
  9. 컴파일러 최적화 : 컴파일러 최적화를 배우면 메모리 사이즈나 프로그램의 속도를 향상 시킬 수 있습니다.

그 외에도 책에 정말 많은 내용들이 나와있어서 필요할 때마다 찾아보기 참 좋은 책이네요. 물론 텍스트와 두꺼운 분량은 가볍게 소설처럼 읽기에는 무리가 있지만요.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."