Skip to main content

[리뷰] 스위프트 프로그래밍

스위프트 3 가 발표된 이후로 국내에도 스위프트 3 내용을 다루는 책들이 하나둘씩 출간되고 있습니다. 그리고 지금부터 이야기할 <스위프트 프로그래밍> 역시 그중 한 권입니다.




이 책은 기존에 있던 책들과는 달리 iPhone이나 Mac App 개발에 필요한 내용을 다루지는 않습니다. 개인적으로는 이러한 점 때문에 스위프트란 언어 자체에 좀 더 집중할 수 있었습니다.

책은 크게 다섯 개의 파트로 구성되어 있으며 각 파트별 목차는 다음과 같습니다.


Part Ⅰ 스위프트 기초
1. 스위프트
2. 스위프트 처음 시작하기
3. 데이터 타입 기본
4. 데이터 타입 고급
5. 연산자
6. 흐름 제어
7. 함수
8. 옵셔널


Part Ⅱ 객체지향 프로그래밍과 스위프트
9. 구조체와 클래스
10. 프로퍼티와 메서드
11. 인스턴스 생성 및 소멸
12. 접근제어


Part Ⅲ 함수형 프로그래밍과 스위프트
13. 클로저
14. 옵셔널 체이닝과 빠른종료
15. 맵, 필터, 리듀스
16. 모나드


Part Ⅳ 확장
17. 서브스크립트
18. 상속
19. 타입캐스팅
20. 프로토콜
21. 익스텐션
22. 제네릭
23. 프로토콜 지향 프로그래밍


Part Ⅴ 스위프트 고급
24. 타입 중첩
25. 패턴
26. where 절
27. ARC
28. 오류처리



Part1, 2 까지는 스위프트 언어에 대한 기본적이고 전반적인 내용을 설명합니다. 스위프트를 처음 배우는 독자뿐만 아니라 스위프트를 조금 공부해 본 독자에게도 유용한 내용이 많았습니다. 특히, 스위프트 언어를 사용하는 데 있어 지켰으면 하는 규칙을 반복적으로 설명함으로써 자연스럽게 그러한 규칙이 손에 익히도록 한 점이 좋았습니다. 다만 중간중간 난이도가 갑자기 높아지는 부분이 있어 초심자에게는 책 앞부분에서 조금 힘들 수도 있겠다는 생각이 들었습니다.



Part3 는 아마도 이 책에서 가장 흥미로운 부분이 아닌가 싶습니다. 최근 함수형 프로그래밍의 인기를 그대로 반영한 듯한 목차부터 기본서에는 잘 나오지 않는 <모나드> 까지. 개인적으로 가장 흥미를 가지고 읽은 부분이 아닐까 싶습니다. 다만 <맵, 필터, 리듀스> 나 <모나드> 부분은 Part 4 이후에 나왔으면 어땠을까? 하는 생각이 계속 들었습니다. 사실 제네릭이나 프로토콜을 제대로 알지 못한 상태에서는 Part3 의 내용을 완벽하게 이해하기는 힘들기 때문입니다. 개인적으로 Part 4, 5 를 읽은 다음 Part3 를 읽는다면 더욱 이해하기 쉬울 것이라고 생각합니다.



Part4와 Part5 에서는 스위프트가 가진 특징들을 잘 성명해 주고 있습니다. 특히 스위프트 2부터 자주 언급되고 있는 <프로토콜 지향 프로그래밍> 에 대한 개념과 스위프트를 어떻게 하면 더욱 스위프티하게 사용할 수 있는지를 잘 설명해 주고 있습니다.

마지막에 있는 부록 역시 내용이 알찹니다. Part6 로 분류해도 좋을 정도로 그냥 지나치기에는 아까운 내용이 많으니 반드시 필독하시길 권합니다.



책을 읽는 동안 스위프트가 가진 매력을 설명하기 위해 저자가 얼마나 많은 고민을 했는지 어렴풋이 느낄 수 있었습니다. 특히 기본서에는 잘 언급되지 않는 내용들도 포함시키면서 초보 개발자뿐만 아니라 스위프트로 개발을 하고 있는 개발자에게도 좋을 내용들이 많아 스터디 교재로도 훌륭하겠다는 생각이 들었습니다.

다만 앞부분에서 내용을 간단하게 다루고 뒷부분에서 좀 더 심화 내용을 다루다 보니 흐름이 잠깐씩 끊기는 부분은 아쉬운 점으로 남았습니다. 또한 초판의 경우 중간중간 오탈자가 보이는데 이러한 오탈자로 인해 설명이 잘못되는 부분도 있어 초판을 구입한 독자라면 반드시 한빛 미디어 사이트에서 오탈자를 확인해 봐야 할 것입니다. (한및미디어 사이트: http://www.hanbit.co.kr/media/books/book_view.html?p_code=B5682208459

또한, 초반부에 설명한 사이트 중 일부가 문을 닫아 사용할 수 없는 경우도 있었습니다. 사실 이러한 부분은 어쩔 수 없는 부분이기도 하지만 최신 도서인 점을 감안하면 마지막 검수 단계에서 한번 더 확인되었으면 어땠을까 하는 아쉬움이 듭니다. 

마지막으로 스레드 관련 부분이 없는 점이 조금 아쉬웠습니다. GCD가 스위프트 언어 자체에서 지원하는 기능은 아니지만 그래도 언어에서 스레드를 어떻게 다루는지에 대한 간단한 설명이 있었으면 어땠을까 하는 생각이 들었습니다.



이 책은 스위프트라는 언어가 가진 매력을 보여주기에 충분한 책입니다. 코코아나 코코아 터치 프래임워크에서 벗어나 언어가 가진 본질적인 매력을 느끼고자 하시는 기존 개발자나 스위프트를 처음부터 제대로 공부하고 자하는 개발자에게는 더없이 좋은 책이 될 것입니다. 개인적으로는 한 두세 번 정도 정독을 해야 책에서 전달하고자 하는 내용을 이해하는데 무리가 없을 것으로 생각됩니다. 그만큼 책 내용이 가볍지 않으며 난이도는 조금 있는 편이라고 생각합니다.

Comments

Popular posts from this blog

[Googe I/O 2014] 국산 재료로 Cardboard 만들기!

올해 Google I/O 에서 가장 흥미있었던 내용중 하나가 바로 Cardboard 였다고 한다. 사실 난 Android L Preview 와 Material Design 에 때문에 상대적으로 이녀석을 홀대하고 있었는데, 회사 선임님께서 요놈이 얼마나 대단한 녀석인이 알려주신 덕분에 관심을 갖게 되었다. 더군다나 제작 방법은 물론 Libraray 까지 제공하다니... 그래서 바로 만들기로 결정. 우선 아래 사이트를 참고하자. 1. Reference SIte - Cardboard 제작 - Cardboard API 사이트를 들어가면 친절하게 구매할 수 있는 사이트까지 링크되어 있으나...전부 아마존. 참고로 이 글을 쓰고 있는 지금까지 아마존에서 주문한 렌즈를 받지 못했다.(한 2주 된듯.) 그래서! 결국 국내에서 파는 제품들로 꾸려보기로 했다. 순수 국내산으로~ 이미 nurinamu 님 께서 블로깅을 하셨지만... 여튼. 필수 재료는 아래를 참고하자. 2. 국내에서 구입한 재료 목록 1)  렌즈 - 양면 볼록 렌즈 : 유리 / 직경 : 30mm / 초점거리 : 46mm (한알당 3,300원) 2)  자석 - 네오디움 원형사라 자석 : 지름 : 20mm / 두께 4T (1,460원) - 페라이트 자석 : 지름 : 20mm / 두께 5.0mm (2,000원) 3)  골판지 - 택배 박스 사용 (0원) NFC 는 집에서 저장할 방법도 없으니 Pass. 고무줄이나 밴드는 취향에 맞게... 사실 도면도 공개되어 있고, 재료만 구하면 만드는건 쉽다. 굳이 설명을 하자면... 자르고... 자르면 ... 골격완성! 그리고... 오랜 기다림 끝에 결국 받지못한 아마존 렌즈를 뒤로하고, 국내 사이트에서 주문한 렌즈를 끼워주면... (국내산 렌즈는 오전에 주문하고 다음날 점심에 바로 겟.) 이렇게 완성! 개인적으로 신기했던 것중 하나가 자석을 사용한다는 것

[Tip] Android Studio, Intellij 에서 Source Code Pro font 적용

예전에 코딩할 때 좋은 폰트 에 Source Code Pro 가 1등으로 선정된 것을 본 적이 있다. 그전까진 나눔고딕코딩 을 자주 썼는데, Source Code Pro 를 쓰면서 가독성이 좀더 향상된 것을 느낄 수 있어 요즘 주력 폰트로 사용 하고 있다. 그런데 Mac에서는(윈도우는 어떨지 모르겠지만...) Eclipse 나 Xcode 에서는  문제없는 이 폰트가 유독 Intellij 혹은 Android Studio 에서는 폰트 설정 시, 이탤릭체가 깨지는 문제가 발생하고 있다. 폰트 설치 후, Intellij 에 적용하면 아래와 같이 이텔릭 채 부분에서 깨지기 시작한다. 이같은 문제는 이미 Source Code Pro Github issue 에 등록되어 있는데, issue 에서 가이드 하는 수정방법은 다음과 같다. 먼저 Source Code Pro Font 를 다운받고, 설치하자. Source Code Pro Font 다운로드   그 후 아래 폴더로 이동하자. /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/fonts 위 경로에 Source Code Pro 의 TTF 에 포함되어 있던 폰트들을 모두 복사하여 붙여넣는다. 그리고 Intellij (혹은 Android Studio) 를 재부팅 후, 다시한번 폰트를 설정하러 들어가면 아래와같이 폰트들이 나타나는것을 확인 할 수 있다. 개인적으로 Medium 을 선호하기 때문에 Medium 을 선택. 그러면 아래처럼 정상적으로 출력됨을 확인할 수 있다.

[Android] Gradle, Groovy Books

최근 Android 는 Android Studio 라는 통합 개발툴과 함께 새로운 빌드 시스템을 공개 했다. 그동안  Android  의 유명한 Opensource Library 는 대부분 Maven 을 기반으로 배포되고 있었는데  Android  가 채택한 빌드툴은 바로  Gradle  이다. figure 1. Gradle Logo Gradle  은 Java 진영에서  Maven  이후 주목받고 있는 차세대 빌드툴 이다. Ant 와  Maven  의 장점과 함께 더 발전된 기능들을 제공하고 있고,   Groovy 라는 언어를 기반으로 동작 한다고 한다. 나 역시  Maven  까지는 어깨너머로 본 기억이 있지만,  Gradle  은 정말 처음인지라  Android  를 하는데 이런것 까지 해야되나 라는 생각이 들기도 한다. 하지만,  Android  의 성장과정을 생각해 보면 이러한 빌드툴은 반드시 필요하긴 하다. 최근 Android Project 는 단일 Project 로 진행 되는 경우가 거의 없을 정도로 다양한 Opensource 및 Libraries 를 포함하고 있다. 단순히 Eclipse 에서 Compile 로 Device 에 App 을 올리기에는 덩치가 너무 커지고 있고, 기본이 되는 Build Tool 이 없기 때문에  Ant  나  Maven  등 기존 Java 진영에서 많이 사용하고 있는 여러 Builde Tool 들이 사용되다 보니 개발자 입장에서는 여러 Library 를 사용할때 어려운 점에 봉착 하기도 하기 때문이다. 그런데 이  Gradle  를 공부하기 위해서는  Groovy  라는 언어에 대한 이해가 먼저 선행 되어야 한단다. figure 2. Groovy Logo Groovy  가 Java 기반의 언어라고는 하지만 Android 하나 하기도 벅찬데 Build 를 위해 새로운 언어를 공부해야 된다는 점은 부담으로 작용된다. 더욱이 우리나라에  Groovy  번역 도서는 달랑