|
모바일 플랫폼은 크게 둘로 양분된다. 구글에서 주도하고 있는 안드로이드와 애플에서 만들어 낸 iOS가 그것이다. 워낙 정보가 넘쳐나고 모바일 기기에 관심이 많은 사람들이 많은지라, 관련 지식이 없는 사람들일지라도 안드로이드나 iOS에 대한 내용은 쉽게 접하는 시대이다. 이 책은 iOS 플랫폼 상에서 구동가능 한 어플리케이션 혹은 앱을 개발하는 방법을 다룬 책이다. 이해를 돕기 위해 모바일 얘기를 했지만, 정확히 말하자면 Mac OS 상에서 구동되는 어플리케이션 개발에 관련된 책이다. 단지 같은 개발환경 상에서 모바일 개발도 진행되므로 동일한 지식습득 과정이라 할 수 있겠다. 개발을 하는 사람이라면 다들 잘 알겠지만, 안드로이드는 베이스 언어가 Java로 되어 있고, iOS의 경우에는 베이스 언어로 C/C++(정확히 말하자면 이를 기본으로 하여 자신들만의 언어를 제작했는데 그것이 Objective C이다)을 채택했다. 이 책이 iOS 개발을 위한 책이므로 안드로이드 플랫폼은 논외로 하고 말해보자면, iOS의 경우 개발을 위해 "코코아"라는 프레임워크를 제공한다. 또한 개발언어로서 Objective C를 제공한다. 뭔가 복잡한 이름들이 등장하는 것 같지만 프레임워크란 개발 편의성을 위해 애플에서 제공하는 기능들(함수 모음)이라고 이해하면 된다. "코코아" 프레임워크는 크게 Foundation과 Application Kit의 두 부분으로 구성되어 있다. 이름에서 유추 가능하듯 Foundation은 앱의 기반기술이 되는 Core를 위한 영역을 담당하고, Application Kit은 사용자가 실제 화면에서 보게 되는 UI(User Interface) 영역을 담당한다. 사실 Application Kit의 경우 화면의 처리와 관련된 부분이기 때문에 엄청나게 많은 정보가 존재하고, 그것을 이 책 내에서 전부 다루기란 불가능에 가깝다. 이 책은 3분의 2가량을 Foundation 영역에 대해 설명하고 있다. 보통 개발자들이 어떤 언어를 공부할 때 입문서로 언어의 문법을 공부하고, UI와 관련된 부분은 해당 라이브러리를 설명하는 책이나 문서를 참조해서 개발할 것이다. 비슷한 개념으로 이 책은 정확히 말하자면 Objective C 언어 입문서 쪽에 보다 가깝다. 입문서라 하더라도 아무 것도 모르는 사람이 이 책을 본다는 것은 매우 힘든일이 될 것이다. C언어를 공부하면서 제일 처음 만나게 되는 난관이 포인터인데, 이 책은 시작부터 포인터가 등장한다. 즉, 기본적으로 C언어에 대한 개념 정도는 이해를 하고 있어야 볼 수 있다는 것이다. 그렇다고 해서 매우 어려운 정도는 아니고 초급 수준의 개발자라면 볼 수 있을 정도라고 생각된다. 보통 모바일 플랫폼 개발을 위해 베이스 언어에 대해서 선행학습을 하고 공부를 시작하게 되기 때문에 전반적으로 크게 무리가 없을 것이다. 내용을 간략히 살펴보자면, Objective C 언어의 맛보기 부터 시작해서 객체지향에 대한 개념 설명, Objective C 개발을 위한 개발 도구인 XCode의 설치와 사용법, 메모리 관리와 같은 내부 동작 개념부터 클로져 등 언어에서 지원하는 문법들까지 다양한 내용을 담았다. 책의 후반부에는 앞서 말했던 것처럼 실제 앱 개발을 위한 UI Kit에 대한 설명을 예제 프로그램 제작을 통해서 설명하고 있다. 마지막에는 다른 언어들을 가지고 개발해 왔던 개발자들을 위한 간단한 팁과 조언들이 담겨 있다. 반복해서 말하지만 개발을 처음 시작하고자 하는 사람은 이 책을 보기 이전에 C++ 혹은 자바 언어를 숙지하고 읽기를 바란다. 입문서에 흔히 보이는 제어문이나 반복문에 대한 설명조차 없기 때문에(이는 당연하다) 선행학습은 필수이다. 개인적으로 입문서로 보는 책들은 개념에 대한 설명이 많아야 좋은 책이라 생각이 되는데, 그런 관점에서 봤을 때에는 이 책은 괜찮은 책이다. 무조건 따라하기 식의 책은 접근성이 쉬울 지는 몰라도 깊이가 얕아지는 것이 흠인데, 그런 부분에 있어서는 적절한 밸런스를 유지하고 있다는 생각이 든다. 모든 일이 그렇듯이 개발 일 역시도 기본기가 탄탄해야 된다는 것은 말할 필요도 없는 소리일 것이다. 애플의 폐쇄성과 안드로이드의 개방성. 승자는 누가 될 지 모르겠지만 개발자가 가져야 할 자세는 어떠한 환경에 놓이더라도 빠르게 적응할 수 있는 기본 능력을 배양하는 일일 것이다. Mac OS, 아이폰 앱 개발에 관심이 많은 개발자들이라면 한번쯤 읽어봄직 하다. |
|
애플 기기가 정말 많이 퍼져있지? 한때 애플하면 비싸고 소수 매니아나 갖는 사치품 취급이었는데 말야. 여전히 비싸지만 이제 마성을 가지고 있지. 이제 수적으로는 안드로이드 폰이 압도하다고들 하지. 그래도 iOS에서 꽃피운 앱 생태계를 살펴봐. 그 숲을 이루는 나무들이 오브젝티브 C로 이뤄져있대. 나야 윈도우즈 기반이 전부인양 우물 안에서 펄쩍 뛰어보는 개구리 한 마리지만 말야. 바깥의 세상 소식을 귀 기울이다보니 이 언어가 서버 프로그램을 만드는데도 은근히 쓰였다는 거야. 사실 이런 프로젝트를 만날지도 모를 일이지.
그러나 생각 뿐이고 놀거 다 놀면서 생각도 희미해질 무렵 기회가 생겼네. 새로운 언어를 익힌다는 건 즐거운 일이야. 외국어 배우는 거하고 비슷한 느낌이라니까. 이건 말할 상대가 없어도 써먹을 수 있다니까. 출퇴근 길에 틈틈이 읽었어. 책 편집이 좋고 가볍게 이뻐서 들고 다니기 참 좋아. 소설책 같아. 이게 중요한 이야기는 아니지만 말야.
이 언어 참 멋져! 이것도 활짝 핀 꽃을 감탄하는 걸지도 모르지. 내가 다니고 있는 회사에서 어떤 분에게 들은건데 말야. 디버거도 없이 이 언어로 만들어진 서버를 디버깅하셨다지 뭐야. 어쨌거나 C++이 이제서야 시대의 조류를 타고 엄청난 수의 표준 라이브러리와 새 문법을 들고 뛰쳐 나왔지. 아무래도 역사도 깊고 광범위한 분야에서 쓰다보니 수많은 사람들의 의견을 조율해야겠지. 이제 구식 티를 벗고 때깔이 좋아진 거 같은데 말이야. 이 언어는 조금 특별해. 좀 더 엄격한 객체 구조와 메시지 방식의 통신 체계가 언어의 프레임워크에 내장되어 있어. 하이브리드 언어같은 느낌이더군.
책은 쌩초보에게는 별로일 것 같아. 따라하세요 며칠 완성 류의 책이 아냐. 책의 적당한 분량 만큼 내용이 핵심 위주거든. 책 어디선가 본 것 같은데 말야 경험있는 개발자가 새 언어에 도전해보고 싶을 때 볼만한 책이라고 할까. 너무 쉬운 책은 싱겁고 너우 어려우면 부담되고 그럴 때 있잖아. 하긴 이것저것 다 넣으면 베고 자기 적당한 높이가 되겠지. 나 같은 경우에는 C++ 프로그래밍 언어 3판을 베고 자봤는데 적당하더라구.
이 언어로 뭘 할 수 있을까. 당연히 앱이겠지. 무엇보다 풍요로운 애플 세계에 접속할 수 있는 통행권 같은거 같아. 누군가 그러더군. 프로그램을 만드는데 언어의 세부적인 내용은 필요없다고. 툴이나 라이브러리도 고속 개발하는 것이 핵심이라고. 그럴지도 모르지. 근데 내 생각은 좀 달라. 어쨌든 그 울타리를 벗어날 수는 없는 거잖아. 라이브러리에 들어가 있으면 누군가는 그걸 호출할 꺼고 말야. 앞서나가려면 프로그래밍 언어를 써서 새로운 건물을 조립할 수 있어야 할 것 같아. 그래서 이런 책이 필요하거지.
새로이 표준이 제정된 C++도 몹시 풍부해졌다지? 비야네 님이 쓰신 C++ 프로그래밍 4판 샘플을 보니 정말 그렇더군. 3판하고 내용이 딴판이더라구. 이 책을 보니 더더욱 기대가 돼. 오브젝티브 C가 제시한 새로운 언어 세상에 어떤 승부수를 던질지 말야. 서점에서 노란 표지를 가진 깜찍한 책이 보이면 한번 살펴봐. 나는 소설 읽는 기분이었는데 말야. 흥미진진하고 재밌었다구. 이 책 덕에 새 언어가 친근해졌어. |
|
음. 일단 오.탈자 심심치 않게 보이며, 편집이 잘못 된 것인지도 모르겠지만, 소스 코드 설명이 나와야 할 때 나오지 않고, 몇 페이지 뒤에 나오는 경우도 있네요.(예를 들어 @interface 부분 설명할 때 private에 대한 부분에 대해서는 설명하지 않다가, @implement 부분에서 뜬금없이 @interface의 private 부분에 대해서 설명함) 책을 읽으면서 정신 바짝 차리고 읽어야 합니다. 새로운 언어를 배움이 있어 언어 자체에 대해서 집중하기도 바쁜데, 편집이 잘 되었는지에 대해 앞뒤 문맥 확인하면서 해야하는 부분이 좀 보이네요. C를 20년 이상 한 사람이어서 대충 잘못 된 부분이 보이면 그러겠거니 하지만, 언어를 처음 접하는 분들에게는 이 책은 좀 어렵지 않나 싶네요. 또한 번역에서의 아쉬움도 있습니다. (전반적으로는 문제 없지만 간혹 당황케하는 문장이 나오네요.) 10장 객체 초기화 부분중 이런 내용이 있네요 "어떤 클래스의 init 메소드는 지정된 이니셜라이져 메소드다" 라는 말이 있습니다. 대체 무슨 소리인지... 어떤 클래스의 init 메소드??? 어떤 클래스의 init 메소드가 지정된 이니셜라이져 메소드란 말인가?? 우와 무슨 말인지...그래서 원서 찾아 봤습니다. 어떤을 무엇으로 이해해야 할지 막막해서. (what? which?) 원서에는 "One init method in a class is the designated initializer." 라고 나왔더군요.
물론 원문 자체도 참 아쉽기는 마찬가지지만, 그래도 읽고 무슨 말인지 인지할 수 있도록 약간의 의역 정도만 있었어도 좋지 않았을까 생각합니다. 앞뒤 문장 따져 보면 "class 의 여러 개 init 메소드 중 하나가 지정된 이니셜라이져이다" 정도로만 번역 됐어도 이해하기 쉽지 않았을까요??? 번역자 보다는 출판사 교정 담당자께서 좀 챙겨주셨으면 좋았을 것을.... 개정판에서 좋아지길 기대합니다. |
|
이번 책이 본인이 Objective-C에 관해 읽은 두번째 책이다. 첫 번째 읽은 책에 비해 설명은 쉬운 편이었고 예제 또한 어려지 않았다. 양도 너무 많지도 적지도 않은 적당한 편이다. 다만 번역서이다 보니... 문장의 어색함이나, 오탈자 등 거슬리는 점이 있는데 이는 약간의 번역서를 읽어본 경험과 프로그래밍 언어에 대한 경험이 있다면 충분히 오해없이 읽을 수 있는 수준이었다. |