목요일, 5월 20, 2010

[독서광] iPhone Advanced Projects: 아이폰 개발자를 위한 실전 프로젝트 개발서



1등만 기억하는 더러운 세상이 아니라 아이폰과 안드로이드만 기억하는 더러운 세상에서 살아남기 위해 아이폰 책을 하나 읽어보았다. 오브젝티브 C 문법은 어느 정도 알고(C+스몰토크. ㅋㅋ), 매킨토시 프로그래밍도 아주 약간을 알고 있기에 입문서를 건너 뛰고 실전 프로젝트 개발서로 직행했다.



"iPhone Advanced Projects: 아이폰 개발자를 위한 실전 프로젝트 개발서"은 아이폰 개발자들이 앱을 개발하는 과정에서 얻은 노하우를 정리한 책이라고 보면 틀림없다. 물론 전체 원시 코드와 개발 과정을 담았으면 국내 독자들이 환호성을 질렀겠지만, 지면 관계상 필요한 부분만 집중해서 설명하는 방식을 따르고 있기에 그리 친절하지는 않다. 하지만 "Hello, world"에서 맴도는 독자라면 실제 앱 프로젝트를 시작하기에 필요한 좋은 힌트가 되리라는 생각이다.



목차를 보면 알겠지만, 예제를 위한 억지 예제가 아니라 실제 앱에서 사용하는 각종 기술들을 정리하고 있다. 각 장에서 파티클 시스템, 체스를 위한 통신 시스템, 웹 라디오용 오디오 스트리밍 기법, 아이폰 디버깅 기법, 데이터베이스 접근을 위한 SQLite, WebObject를 연상하게 만드는 데이터 모델인 코어 데이터, 와이파이 네트워킹, 반응성 향상 기법, 푸시 알람 서비스, OpenGS ES 기법을 사용한 실제 예를 소개한다.



일반 데스크탑 클라이언트 응용이나 웹 프로그래밍, 서버와 시스템 프로그래밍과는 상당히 다른 앱 프로그래밍 나름의 모형을 아이폰 환경에 맞춰 제시하기 때문에 아이폰스러운 앱을 만드는 과정에 힌트가 되리라는 생각이다. 전문적인 프로그래머가 어떻게 앱을 설계하고 구현했는지 그리고 구현 과정에서 어려움을 어떻게 극복했는지 훔쳐볼 수 있으므로 이미 어느 정도 기초적인 지식을 습득하고 자신만의 뭔가를 만들어보려고 이리저리 시도해보는 앱 프로그래머가 보기에 적당하다. 입문서로 처음 읽으려고 구입한 독자라면 1장부터 바로 좌절 모드로 돌입할지도 모르겠다.



번역 상태는 중간이고((비록 완결된 예제는 아니지만) 코드가 상당한 부분을 차지하고 있으므로 오브젝티브 C 프로그래밍에 익숙한 독자라면 뭐... 못읽을 수준은 아니다), 역자주 상태는 최악이다. 보통 본문에서 사고가 터지는데 이 책은 어떻게 된 영문인지 역자주에서 대형 사고가 몇 개 터졌다(한 두 개라면 실수라고 치고 넘어갔을거다). 같이 읽어보자.



레이스 컨디션의 예를 들어보자. 스레드를 말이라 가정하자. 1번 말과 2번 말 두 마리가 경주를 한다. 1번 말이 항상 우승해야 정상 동작이라고 할 때, 만약 2번 말이 우승하게 된다면 무언가 잘못된 것이다. 이런 결과가 프로그램에서 나타나면 크래쉬될 수 있다. 비실비실한 2번 말이 우승할 확률은 굉장히 적기 때문에 크래쉬를 재현할 수 있는 확률도 낮다. 이러한 경우를 레이스 켠디션이라 하며, 레이스 컨디션은 늘 발생하는 게 아니므로 수정하기가 어렵다.


B급 프로그래머 촌평: 그냥 삶에 찌들린 불쌍한 프로그래머들을 마구 웃기려고 이렇게 썼다고 믿는다. 정말 심각하게 고민해서 (나름 독자를 위해) 저런 역자주를 달았다면, 뭐 여기서 더 할 말이 없다.



SQL을 어셈블리 언어에 비유한다면, 고수준 도메인 모델은 C 언어를 이용한 접근 방법이라 생각하면 된다.


B급 프로그래머 촌평: SQL을 어셈블리 언어에 비유한 책은 처음 봤다. 앞으로도 찾아보기 어려울 것 같다.



스텁 함수란 내용이 없는 빈 함수를 의미한다.


B급 프로그래머 촌평: dummy랑 stub이랑 햇갈렸나?



픽사의 스타트랙에 나오는 우주선의 이름을 기억하는가? 그 이름이 바로 기업(enterprise, 엔터프라이즈)이다.


B급 프로그래머 촌평: 스타트랙은 픽사가 아니라 파라마운트에서 만든 시리즈물이다. 그리고 굳이 기를 쓰고 번역한다면 '기업'이 아니라 '모험'이겠지.



EOB

댓글 5개:

  1. 이런 내용이라면...

    꼭 읽어보고 싶어지는데요. 역주만... ㅎㅎ

    답글삭제
  2. 역자주만 보니 아마도 번역하신 분이 컴퓨터 공학을 전공하시지는 않은 것으로 보이고 영어 실력만 가지고 문맥에서의 뉘앙스만으로 역자주를 코멘트하신 것 같네요
    역자주를 안해주셔도 되었을 거 같은데...^^;

    그런데 확실히 독자들에게 재미를 준 효과는 있는 거 같네요 위의 예시만으로도 충분히 재미있었습니다 역(?)재미라고 해야하나요...

    답글삭제
  3. 이 바닥에서 꽤 오래 굴렀습니다만 여전히 C급이라능 ^^

    암튼,

    근데 지적하신 역자주의 내용을 보니...
    주로 이해를 돕기위해 비유를 한 것이고..
    이 비유라는 것이 개인적 취향이 들어가는 거라..
    굳이 그렇게까지 비난할 필요까지는 없어보이는군요.
    보는 포인트가 다른 것일뿐..

    답글삭제
  4. 익명님, 비유도 비유 나름입니다. 굳이 수고스럽게 이런 포스트까지 찾아와서 익명으로 댓글을 다실 필요까지는 없어보이는군요. 보는 포인트가 다를 뿐입니다.

    - jrogue

    답글삭제