흔히 컴퓨터 구조/아키텍처 관련 서적이라고 하면 두툼하고 일상 생활과는 전혀 무관한 구석기 시대 컴퓨터 CPU를 소개하는 졸립고 따분한 교과서를 연상하기 쉽다. 전산이나 컴퓨터 전공이라면 학교에서 당한 나쁜 추억에 이를 가는 사람들도 많으리라... 이런 상황에서 좀 현대적인 책이 나왔으면 좋겠다는 생각이 들지 않는가?
"임베디드 프로그래밍 입문: C와 어셈블리로 확실히 배우는"은 조금 특이한 컴퓨터 구조/아키텍쳐 교과서라고 볼 수 있다. 잘 사용하지도 않는 이론만 잔뜩 설명하고 막상 진짜 현실에 필요한 핵심 내용은 모두 누락시킨 일반 서적과는 달리 시작부터 가장 많이 사용하는 x86을 잡아서 열심히 두드려패는 모습이 보기 좋다. 물론 ARM이나 PowerPC를 사용하는 임베디드 개발자에게는 2% 부족하기에 아쉬운 면이 있긴 하지만, 개념을 튼튼하게 잡아주고 C와 어셈블리 언어 사용법을 임베디드 부문에 특화시키는 기술을 연마한다는 측면에서 부족함이 없기에 이런 사소한 단점은 충분히 가리고도 남는다.
7월부터 (아직 대학교에 다니고 있는) 인턴 사원이 들어와서 요즘 전산/컴퓨터 공학 교과 과정에 C가 포함되어있느냐는 질문을 했을 때, "아니오"라는 대답을 듣고 화들짝 놀랐는데, 이 책 저자는 이런 상황을 의식하고 이 책을 만든 듯이 보인다. 서문을 한번 같이 볼까?
대부분 학교에서 프로그래밍 입문 과정(CS1, CS2)은 더 이상 C 나 파스칼 같은 구조적 프로그래밍 언어를 가르치지 않는다. 그보다는 C++나 자바 같은 객체 지향 프로그래밍 언어를 사용한다. 이런 변화에도 불구하고 고급 과정에서는 여전히 구조적 언어를 사용하는 일이 드물지 않으며, 업계에서도 그런 언어를 쓰는 경우가 흔히 있다. 필자가 몸담고 있는 학교에서는 이 책에 있는 내용을 중심으로 전통적인 어셈블리어 과정을 다시 개설함으로써 이러한 모순을 해결했다. 구조적 접근을 다루고 임베디드 시스템이라는 인기 있는 주제를 소개하느라 이미 꽉 짜인 커리큘럼에 여유도 주고, 학생들이 CS1과 CS2에서 처음 배웠던 파라미터 전달, 스코프, 메모리 할당 방식을 좀더 잘 이해할 수 있게 했다.
서문을 보면 바로 알겠지만, 이 책은 대학교 학부 2학년 정도 학생을 대상으로 임베디드 부문에 대한 수요가 늘어나면서 대학교 교과 과정에 변화를 줘야 한다는(아니 저수준을 다뤘던 과거로 회귀한다는) 사상으로 집필했다. SI 업체나 대기업 구미에 맞춰 편협한 교과 과정만 운영하는 한국 교수들은 반성해야 할 것이다.
자, 그러면 실제 무슨 내용을 다루고 있을까? 고전적인 자료 표현 방법, C 프로그래밍 언어를 임베디드 부문에서 제대로 사용하는 방법, 컴퓨터 기본 구조, C와 어셈블리 섞어 쓰는 방법, I/O 프로그래밍, 멀티스레드 프로그래밍, 스케줄링, 메모리 관리, 공유 메모리, 시스템 초기화를 다룬다. 비록 내용이 _아주_ 깊지는 않지만 임베디드 개발자로 새로(또는 거듭) 태어나기 위해 필요한 기본적인 내용은 거의 다 들어가 있기 때문에 학생은 물론이고 패키지 소프트웨어나 웹 관련 소프트웨어를 제작하느라 컴퓨터 하드웨어에 밀접한 내용을 거의 다 잊어버린 개발자에게도 적합하다. GREAT CODE와 함께 읽으면 더욱 좋겠다. 본문 중에 C와 어셈블리 코드가 아주 많이 나오므로 프로그래밍 지식이 부족한 상황에서 일반 컴퓨터 구조/아키텍처 책을 상상하고 덤비면 힘들지도 모르겠다. 따라서 이 책을 펼치기 전에 C언어와 x86 어셈블리 언어에 대한 입문서를 미리 한번 읽어두기 바란다.
번역 상태에 대해 살펴보자. jrogue군 후배가 작성한 책이니 버럭! 못하겠다는 생각이 들지 모르겠지? 그래서 버럭! 하기 전에 jrogue군이 미리 손을 좀 봤다(감수했다는 이야기). :P 활자화 하기 전에야 버럭! 1000번 해도 무방하다. 그래도 사람이 한 일인지라 혹시 오탈자나 어색한 부분을 찾으면 출판사나 역자나 jrogue군에게 신고해주시면 감사하겠다.
뱀다리: 이 책을 감수한다고 졸린 눈을 비비고 책을 읽는 도중에... jrogue군이 입사 지원자를 대상으로 하는 면접관으로 뛸 때 시험 문제로 자주 내는 몇 가지 프로그래밍 주의 사항과 아키텍처 관련 사항이 나와서 화들짝 놀랐다. 혹시 누가 알아? 독자 여러분이 혹시 나중에 jrogue군이랑 면접장에서 대면했을 때 이 책에 나오는 문제를 놓고 서로 토론하게 될지?
EOB