대학에서 처음으로 프로그래밍 과목을 들은 이후로 졸업하기 전까지 전산 관련 과목을 들었는데, 돌이켜 보니 그 중에 많은 시간을 프로그래밍 언어에 익숙해지는 데 보냈던 것 같다. 지금이야 처지가 그나마 낫지만 당시에는 교과 과정에서 배운 내용을 명쾌하게 이해하면서도 실습 시간에 C, C++, 자바로 짠 프로그램이 해당 언어의 세부 사항과 맞물려 도저히 이해하기 힘든 증상을 보여 애타했던 적이 한두 번이 아니었다. 그때는 그게 왜 그렇게 어렵고 힘들었는지 지금 생각하면 허탈하기만 하다.
이 책을 옮기면서 생각해봤다. '학교에서 수업을 들을 때 파이썬이라는 언어로 수업을 진행했다면 어땠을까'하고. 본문에도 나오지만 처음 프로그래밍을 배울 땐 주객이 전도되는 현상을 자주 겪는다. 코드 한 줄 이해하는 데 도리어 그것을 표현한 프로그래밍 언어의 세부 사항에 압도돼 버리는 현상 말이다.
동영상 사이트인 유튜브에 들어가 'MIT Introduction to Computer Science'로 검색해보자. 검색 결과로 나오는 동영상을 보면 알겠지만 세계적으로 이름난 대학 중 하나인 MIT에서도 파이썬을 이용해 프로그래밍 개론 강의를 진행한다. 그 밖에도 대학에서 프로그래밍을 가르칠 때 파이썬을 채택한 사례는 어렵지 않게 찾아볼 수 있다. 그런데 수많은 언어 가운데 굳이 파이썬을 채택한 이유는 뭘까?
본문의 예제 코드를 보면 알겠지만 파이썬 코드는 자체가 알고리즘에 가깝다. 언어 자체의 간결함과 높은 가독성은 파이썬을 배우고 쓰기 쉽게 해준다. 따라서 목적하는 개념 이해와 문제 해결에만 오롯이 집중할 수 있다. 더불어 풍부한 라이브러리와 짧은 개발 주기, 다른 프로그래밍 언어와의 손쉬운 통합은 오늘날 기업의 지상 과제인 적기출시(Time to Market)를 실현하는 데도 도움이 될 것이다.
하지만 무엇보다도 파이썬 언어가 주는 매력은 바로 프로그래밍의 재미다. 여기서 재미란, 프로그래밍 언어로 내가 하고 싶은 일에만 집중할 수 있을 때 성립하는 요소다. 특히 프로그래밍을 처음 접하거나 익숙지 않은 전산 전공자의 경우에는 이런 요소가 더 중요하리라 생각한다. 언어적 세부 사항에 압도돼 프로그래밍이 주는 즐거움을 느끼기 힘들었다는 사람이라면 더더욱 그렇다.
이런 점을 감안한다면 저자가 파이썬을 선택한 이유는 자명하다. 사실 이 책에서 저자가 전하고자 하는 바는 언어적 세부 사항에 있지 않기 때문이다. 이 책은 기본적인 프로그래밍 요소부터 알고리즘, 디버깅, 객체지향 프로그래밍, 테스트 주도 개발, GUI 제작, 데이터베이스 활용법까지 전산 전공자뿐 아니라 현장에서 근무하고 있는 프로그래머라면 꼭 짚고 넘어가야 할 내용을 이해하기 쉽게 설명한다. 다시 한 번 '예전에 프로그래밍을 처음 배울 때 이 책으로 시작했으면 어땠을까'하는 생각을 해본다.
자바스크립트가 프론트엔드를 위한 가장 강력한 언어로 자리매김한 지 벌써 수년이 지났지만 시중에 나온 책 가운데 극히 일부를 제외하면 초보자에게 올바른 자바스크립트 코딩 기법을 체계적으로 알려주는 책은 많지 않다. 게다가 기존에 나온 책들은 대부분 자바스크립트 문법이나 코드 작성법에만 초점을 맞추고 있고 실제 프로젝트에서 자바스크립트를 올바르게 활용하는 방향이나 기법에 대해서는 다루지 않는 경우가 대부분이다. 하지만 실제 프로젝트에서는 단순히 자바스크립트 코드를 잘 작성하는 것은 기본이고 자바스크립트라는 기술이 본연의 목적을 잘 달성하고, 다른 요소와 조화롭게 어우러지게끔 적절히 배치하고 구성하는 등의 기술도 필요하다.
이 책에는 현장에서 꼭 필요로 하는 현대적인 자바스크립트 개발 방법론이 간결하게 정리돼 있다. 기본적인 자바스크립트 코드 작성법은 물론, 점진적 기능 향상(progressive enhancement)과 단계적 기능 축소(graceful degradation) 등의 현대적인 자바스크립트 개발 기법, 효율적인 코드 구성, 웹의 동작 원리와 HTML5 자바스크립트 API, 외부 라이브러리 활용법 등 자바스크립트 개발을 둘러싼 다양한 주제를 간결하고도 빠짐없이 소개한다. 게다가 웹 개발을 처음 시작하는 개발자나 디자이너도 읽고 이해할 수 있을 정도로 쉽게 쓰여 있어서 웹 개발에 막 입문한 분들이 올바른 자바스크립트 개발 기법을 체계적으로 익히는 데 적당하다.
요즘 자바스크립트는 전례 없는 부흥기를 맞고 있다. Node.js 같은 서버 측 자바스크립트까지 나오면서 자바스크립트는 활동 영역을 급격히 확대해 나가고 있으며, 새로 만들어지는 오픈소스 프로젝트에서도 자바스크립트가 압도적으로 많이 사용되고 있다. 이 같은 자바스크립트의 부흥기에 이런 책이 나왔다는 것이 반갑고, 이 책을 번역할 수 있게 되어 감사하다.
그야말로 자바스크립트의 전성시대다. 그동안 갖은 오해를 받아온 자바스크립트는 이제 업계에서 가장 관심받는 프로그래밍 언어로 자리 잡았고, 그 기세를 꺾을 만한 언어는 당분간 보기 힘들 것 같다. Ajax로 시작해서 Node.js까지, 웹을 보조하는 도구에 불과한 것으로 여겨졌던 자바스크립트 언어는 이제 서버 측 프로그래밍까지 활동 영역을 넓혀가고 있다.
이처럼 자바스크립트의 인기가 날로 높아지고는 있지만 일각에서는 자바스크립트 프로그래밍을 여전히 어렵게 받아들이는 사람이 많다. 이런 사람들은 대개 자바스크립트 언어를 폼 유효성 검증을 위한 스크립트로만 사용해 왔을 것이다. 아울러 강력한 프로토타입 기반 객체지향과 유연한 타입 시스템 같은 자바스크립트의 특징을 오히려 번거롭고 성가신 요소로 여기는 사람도 많을 것이다. 하지만 본문에도 나오지만 '큰 힘에는 큰 책임이 따르는 법'이다. 자바스크립트의 특장점을 십분 활용하려면 그에 걸맞은 노력이 필요하다. 그러자면 자바스크립트라는 프로그래밍 언어를 제대로 익히는 데 도움이 될 만한 실질적인 가이드가 필요하다.
이 책은 바로 이러한 '실질적인 가이드'에 해당하는 책이다. 먼저 프로그래밍 자체, 그리고 프로그래밍을 둘러싼 배경 지식을 소개하면서 초보자의 관점에서 프로그래밍이란 무엇인가를 알려준다. 이어서 자바스크립트를 통해 프로그래밍 전반에 관해 배운다. 초보자는 이 책을 통해 프로그래밍에 입문할 수 있고, 프로그래밍 경험이 있는 경우에는 자바스크립트 프로그래밍을 제대로 익힐 수 있다. 더불어 핵심을 관통하는 명쾌한 설명과 간결한 예제는 다른 두껍고 지루한 자바스크립트 입문서에 지친 사람에게 자바스크립트를 다시 한 번 제대로 배울 수 있는 기회를 만들어줄 것이다. 그리고 아직 프로그래밍이나 자바스크립트에 입문하지 않았다면 두말할 나위 없이 이 책이 안성맞춤일 것이다.
참고로 이 책의 내용은 상당 부분 인터넷에 공개돼 있다. http://eloquentjavascript.net에서는 이 책의 원문을 읽어보거나 예제 코드를 직접 실행해볼 수 있다. 적은 분량으로 프로그래밍과 자바스크립트라는 주제를 한 번에 잘 다룰 수 없으리라는 의구심이 든다면 위 사이트에서 직접 확인하길 바란다. 게다가 이 책의 내용을 토대로 쓴 커피스크립트 책도 있으니 내용상의 검증은 이미 돼 있다고 생각한다.
그동안 자바스크립트에 관한 책은 많았지만 상당수 자바스크립트를 너무 피상적으로 소개하거나, 특정 주제만 다루거나 세세한 사항 하나하나까지 다루는 책들이 많았다. 초보자가 자바스크립트에 입문하기에 딱 적합한 책을 찾기가 힘들었는데, 이 책이 바로 그러한 책이고, 내가 직접 우리말로 번역하는 기회까지 누릴 수 있게 됐다. 자바스크립트에 입문하고자 하는 사람들에게 자신 있게 추천할 수 있는 책이 하나 생긴 것 같아 감회가 새롭다.
오랜 기간 동안 번역해온 『하이버네이트 완벽 가이드』가 드디어 세상의 빛을 보게 됐습니다. 우선 함께 번역하느라 고생하신 박찬욱, 백기선 님께 감사드립니다. 용어 선정 과정도 쉽지 않았고 문장 하나하나를 옮길 때마다 저자의 의도가 충분히 반영됐는지 고민하느라 힘든 시간을 보냈습니다만 이 책을 읽고 하이버네이트를 올바르게 현장에 적용하는 개발자가 늘어나는 것만으로도 충분히 보람을 느낄 수 있으리라 생각합니다.
저는 이 책을 번역하면서 많은 내용을 소화하고 공부해야 했습니다. ORM이라는 생소한 개념과 동작원리, 그리고 하이버네이트의 API 구성 등으로 처음 접했을 때 가파른 학습곡선을 거쳐야 했습니다. 단순히 SQL 쿼리를 던져 처리할 수 있는 일을 하는데도 별도의 매핑이나 설정 과정을 거쳐야 하기에 처음 접하는 분이라면 되려 거부감을 느끼실지도 모르겠습니다.
하지만 더 넓은 관점에서 보면 이런 학습 비용은 충분히 감내할 만한 가치가 있습니다. 오늘날 거의 모든 기업에서 쓰는 관계형 데이터베이스와 엔터프라이즈 시장에서 위세를 떨치고 있는 자바 사이의 간극을 메워줄 수 있는 실용적인 대안은 현재 ORM이 유일합니다. 그리고 그러한 ORM 도구 가운데 오픈소스이면서 ORM이 반드시 제공해야 할 기능을 충실히 지원하고 있는 하이버네이트는 엔터프라이즈 시장에서 끊임없이 더 나은 개발 방법을 추구하는 자바 개발자라면 반드시 알고 있어야 한다고 생각합니다.
그런 점에서 이 책의 원서인 『Java Persistence With Hibernate』는 하이버네이트 프로젝트를 만든 장본인이 직접 쓴 책이기에 다른 어느 책에서도 볼 수 없는 내용을 담고 있습니다. 책 분량이 만만치 않은 만큼 ORM을 비롯해서 하이버네이트, 자바 퍼시스턴스 표준에 대해 완벽하게 설명하고 있습니다. 아울러 처음 ORM에 입문한 개발자라도 이 분야와 관련된 핵심 주제에 대해 폭넓고 깊이 있게 이해할 수 있을 겁니다.
처음 이 책을 번역해야 할지 많이 고민했습니다. 단순히 책을 읽는 거라면 그냥 읽고 넘어갈 수 있겠지만 원문을 우리말로, 그것도 가장 적절한 표현으로 옮긴다는 것은 결코 쉬운 일이 아니기 때문입니다. 하지만 국내에 하이버네이트를 제대로 다룬 책이 없다는 점과 국내에 하이버네이트를 소개하는 데 일조할 수 있으리라는 생각에서 결국 번역을 시작하게 되었습니다.
끝으로 현장에서 ORM 기술을 어떻게 적용할지 고민하고 언제나 더 나은 개발 환경을 만드느라 고군분투하시는 개발자분들께 미약하나마 이 책이 도움됐으면 좋겠습니다.