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

[리뷰] 러스트 핵심 노트

C 와 C++ 의 성능을 보이면서 동시성 문제를 좀 더 쉽게 처리할 수 있는 언어에 대한 소개가 종종 이루어 지곤 하는데 최근까지 이러한 분야에서 가장 두드러진 활약을 보이는 언어를 꼽으라면 단연 Go 와 러스트 를 꼽을 수 있을 것입니다.  [러스트 핵심 노트] 는 예제를 통해 제목 그대로 러스트의 핵심 부분을 설명하면서 러스트란 언어란 이런 언어다 라고 소개하고 있습니다. [러스트 핵심 노트] 는 언어 입문서에 가깝기 때문에 러스트 언어를 세세하게 설명하지는 않습니다. 그러나 러스트가 가지고 있는 특징들을 잘 설명하고 있어 새로운 언어가 나와서 흥미를 느끼시는 분들이 가볍게 읽을 수 있는 책이라 생각 됩니다. 다만 중간 중간 오타가 눈에 띄기 때문에 (원서도 같은 오류가 있었습니다.)  추가적으로 검색을 해 보거나 한빛 미디어 사이트에서 오탈자를 반드시 확인할것을 추천 드립니다. (http://www.hanbit.co.kr/realtime/books/book_view.html?p_code=E2088508957) 책 분량은 많은 편은 아니지만 내용은 절대 가볍지는 않습니다. 앞에서 이야기 했듯이 러스트를 빠르게 살펴본 다음 토이프로젝트를 하고자 하시는 분께는 좋은 시작점이 될 것입니다.

[Android] DialPad 자동완성 기능

Android 4.3 에 추가된 기능 중 "다이얼 패드 자동완성" 기능이 란 것이 있다. 말 그대로 Dialpad 에서 전화번호 입력시, 해당 번호를 먼저 검색해서 화면에 노출 시키는 기능이다. 그런데 4.3 으로 업데이트 했음에도 불구하도 번호 입력시 자동검색이 이루어지지 않는다. 확인결과 기본적으로 해당 기능이 ON 으로 세팅되어 있지 않기 때문.. 해당 기능을 설정하기 위해서는 dialer -> option menu(설정) -> 통화설정 화면에서 "다이얼패드 자동완성" 체크. 그런데 앞자리 수 부터 차례대로 입력해야 검색 해 주는것은 좀... end.