이제는 스위프트가 애플 생태계를 벗어나려 몸부림치는 것이 절실히 느껴진다. 이미 오픈소스화된 것도 있겠지만, IBM에서도 리눅스와 스위프트를 함께 쓸 수 있는 기술을 적극적으로 개발하고 있다. 스위프트로 개발된 IBM 웹 서버만 보더라도 스위프트는 이제 애플이라는 회사에서만 다루는 폐쇄적인 언어가 아님을 보여준다.
이 책을 통해 애플 플랫폼에서의 개발 경험과 아무런 상관없이 리눅스에서 애플리케이션 및 서버 개발의 기초를 다질 수 있기를 바란다. 번역하면서 가능한 한 원문의 의도를 곡해하지 않으려 많은 노력을 기울였다. 특히 번역하면 오히려 이상해지는 문장은 원문을 병행 표기했다. 이 책은 백과사전식 나열을 지양하고 필요한 핵심을 정리해준 느낌이다. 읽는 데 큰 어려움이 없겠지만, 종종 한 번에 이해되지 않는 부분도 있을 것이다. 그런 내용은 반드시 코딩해본 후에 읽어볼 것을 권한다. 크게 어려운 개념은 아니지만, 코딩해보지 않으면 감이 오지 않는 부분도 있을 것이다. 저자도 언급한 사항이지만, 특히 옵셔널 부분은 더욱 실습이 필요한 부분이다. 코딩 없이 정독하는 것은 피아노 교본만 읽고 연주를 해보지 않는 것과 비슷하다고 생각한다.
사실상 이 책은 입문서에 해당하지만 원제의 'Mastering'이 뜻하는 것처럼 얕은 지식 전달에만 그치지는 않는다. 1장부터 순서대로 읽어나가도 큰 무리는 없을 것이다. 하지만 스위프트를 처음 접하는 경우나 전체적인 느낌을 알고 싶다면, 우선 빠르게 일독하고 흥미가 가는 내용부터 다시 읽어보길 권한다. 특히 옵셔널, 제네릭, 클로저를 처음 접하는 개발자도 있을 것인데, 이 주제는 먼저 읽어보고 처음부터 진도를 나가는 것도 하나의 방법이 될 수 있을 것이다. 모쪼록 스위프트를 시작하는 독자들에게 이 책이 많은 도움이 되기를 바란다.
번역을 하면서 가능한 원문의 의도를 곡해하지 않으려 많은 노력을 기울였다. 특히 번역하면 오히려 이상해지는 부분은 원문을 병행 표기했다. 이 책은 백과사전식 나열을 지향하고 반드시 필요한 핵심을 정리한 느낌이다. 읽는 데 큰 어려움은 없겠지만 종종 한번에 이해되지 않는 부분도 있을 수 있으므로, 그런 부분은 반드시 코딩을 해본 후 읽어 보길 바란다. 크게 어려운 개념은 아니지만 코딩해보지 않으면 감이 오지 않는 부분도 있을 수 있다. 원서의 저자도 언급한 사항이지만, 특히 옵셔널 부분은 더욱 실습이 필요한 부분이다. 코딩없이 정독을 하는 것은 피아노 교본만 읽고 연주를 해보지 않는 것과 비슷하다고 생각한다.
이 책은 사실상 입문서에 해당하지만 원제의 'Mastering'이 뜻하는 것처럼 얕은 지식 전달에 그치지는 않는다. 특히 옵셔널과 클로저 부분을 주의 깊게 읽고 확실한 기초를 다지길 바란다.
얼마간 오브젝티브C와 스위프트는 공존하겠지만, 애플은 스위프트를 굉장히 강력하게 추진하고 있다. 스위프트가 당장 오브젝티브C를 대체할 수는 없겠지만 생각보다 멀지 않은 미래에 그 날이 올 수도 있다. 애플 과거의 유산을 과감하게 청산하는 회사이기 때문이다. 근래 여러모로 스위프트라는 언어를 배워야 할 이유가 늘어나고 있다. iOS를 계속 개발하려면 결국 스위프트를 배워야 할 시점이 도래할 것이다. 지금도 늦지 않았으니 이 책과 함께 스위프트의 기본을 잘 다질 수 있는 기회를 만들길 바란다.
-기존 오브젝티브 개발자들에게
스위프트는 앞으로도 계속 발전하고 개선 사항이 추가될 것이다. 하지만 최신 문법이 정리될 때까지 기다리면 다른 개발자들에게 뒤쳐질 수밖에 없다. 스위프트 개발에 발 맞춰 사용하다보면 추후 업데이트될 스위프트 관련 자료를 이해할 때도 큰 도움이 될 것이다. 초기 문법 대비 많은 것이 바뀌었고 앞으로도 변경의 가능성은 있지만, 스위프트3부터는 소스 호환성을 유지해준다고 하니 조금씩 실전 개발에 적용하기에 가장 적절한 타이밍이 아닌가 생각된다.
하나의 프로젝트 안에 오브젝티브C와 스위프트를 같이 사용해서 개발할 수 있는 믹스 앤 매치(Mix and Match)도 소개하고 있는데, 분량은 작지만 기존 오브젝티브C 개발자들에게 굉장히 유용한 챕터다. 레거시 프로젝트를 스위프트로 변환 할 때 굉장히 유용할 것이다.
-읽는 방식
1장부터 순서대로 읽어도 큰 무리는 없지만, 스위프트를 처음 접하는 경우나 전체적인 느낌을 알고 싶다면 먼저 빠르게 일독을 한 후 흥미가 가는 부분부터 다시 읽어볼 것을 권한다. 특히 옵셔널, 제너릭, 클로저는 처음 접하는 개발자도 있을 텐데, 그 부분을 먼저 읽어보고 처음부터 진도를 나가는 것도 하나의 방법이 될 수 있다.
처음 이 책의 원서의 엄청난 페이지를 보고 놀랐던 기억이 난다. 하지만 그보다 근거 없는 도전 의식이 불타 올라 번역을 시작하게 됐다. '아무리 페이지 수가 많아도 파이썬인데 뭐?'라는 생각과 함께. 그런데 이 책을 번역하는 것보다 내가 직접 쓰는 게 더 좋지 않을까 하는 생각이 들 정도로 긴 여정이 되고 말았다. 그리고 이제는 파이썬 앞에서 겸손해졌다.
일부 시각에서 사실 파이썬은 언어 자체가 간결하지 못한 취미용 언어 정도로 치부된 측면도 있다. 하지만 이 책을 번역하면서 파이썬이 이렇게 방대한 표준 라이브러리를 품고 있었나 놀랐다. 과연 모든 라이브러리 사용법을 하나하나 아는 사람이 있을까하는 의구심도 생겼다. 이런 레퍼런스류의 책을 비치하고 있지 않다면 매번 구글링을 해야 하지 않을까라는 생각도 들었다. 왜 구글과 같은 큰 기업을 필두로 빅데이터와 인공지능에서 파이썬이 맹활약을 할 수 있는지 어느 정도 이해가 됐다.
개인적으로 6장을 번역하면서 배운 점을 활용해 번역 자체 작업 시간을 줄여주는 스크립트를 작성했던 점이 참 재미있었다. 기존에는 일일이 텍스트를 번역해야 하는 수작업이었는데, 파이썬으로 번역 자동화 프로세스를 만들어 보는 재미를 느꼈고 작업 시간도 줄일 수 있었다. 책은 파이썬 3를 기본으로 다루고 있기 때문에 파이썬 2는 전혀 고려하지 않았다는 것을 양해 바란다.
파이썬 2가 없어질 것이라는 이야기가 나온 지 수 년이 지났지만 아직도 쓰이는 것을 보면 파이썬 3도 앞으로 10년 이상은 더 쓰이지 않을까라는 생각도 해본다. 파이썬은 매우 쉽다는 장점이 있다. 하지만 이것이 표준 라이브러리를 바로바로 사용할 수 있다는 뜻은 아니다. 라이브러리는 그 자체로 또 다시 배워야 하는 과정이 필요하다. 다만 독자 여러분께 드리고 싶은 말은 모든 내용을 읽어보고 기억하면서 공부할 책이 아니므로 겁먹을 필요는 없다는 것이다. 레퍼런스 책이기 때문에 필요한 부분만 빨리 찾아서 밑줄 그어가며 실무에 당장 적용해보면 된다. 본인이 필요한 부분만 하나씩 공부하다 보면 어느 날 모인 내용만 다시 정리해도 어마어마한 분량이 될 것이다. 파이썬의 기본 라이브러리에 대한 설명을 부족하게나마 무리 없이 옮겨 적었기를 바라며 독자들의 건투를 빈다.