|
작년 말에 팟캐스트 "나는 프로그래머다" 자바스크립트 편을 들을 때, 만약 헤밍웨이가 자바스크립트로 코딩한다면 이라는 재미있는 책이 나왔다는 말을 들었다. 프로그래밍 관련 서적은 대부분이 특정 언에에 대한 입문 서적인데, 특이하게 문학의 거장들의 프로그래밍을 주제로 책이 나왔다니. Yes24에 접속해서 미리보기로 처음 몇 장을 읽어보니 정말 특이했다. 첫 이야기가 바로... 헤밍웨이가 피보나치 수열을 짠다면? 이 책은 자바스크립트에 대한 책이 아니다. 자바스크립트가 어떤 언어인지, 문법은 어떠한지에 대한 설명따위는 없다. 고로, 자바스크립트를 모르는 사람은 이 책을 이해할 수가 없다. 나도 자바스크립트를 잘 하는 것은 아니지만, 학부때 컴퓨터를 전공했고, 웹 프로그래밍 경험이 몇 번 있다보니 자바스크립트에 대해 어느 초급 이상의 지식은 충분히 갖고 있다고 생각하고 있었다. 이 책을 읽기 전 까지는... 이 책에서는 헤밍웨이를 포함한 총 25명의 문학거장들이 자바스크립트를 이용하여 피보나치수열 등의 간단한 알고리즘을 코딩한다면 과연 어떻게 코딩했을까? 에 대해 다루고 있다. 직접 자바스크립트 코드를 보여주고, 왜 해당 문학거장이 이런 식으로 코딩을 했을지에 대해 설명해주는 패턴이다. 절대 잘 짜여진 코드는 아니다. 철저하게 해당 문학거장의 스타일만을 담고 있다. 심지어 무슨 말인지 알아볼 수 없는 코드도 있다. 괴짜같은 문학 거장이 코딩했다면 당연히 코드리뷰따위는 고려도 하지 않고 자기만 알아볼 수 있게 짰을테니까. 해설을 한참 들여다보고서야 겨~우 이해가 될 법 한 코드도 많다. 코드골프 같기도 하고. 최근에 셜록홈즈 전집을 읽었던 터라, 책 내용 중에 코난 도일의 계승 알고리즘 코드가 매우 마음에 남았다. 코난 도일이 작성한 코드는 "주어진 인수의 계승(팩토리얼)을 반환하는 함수". 셜록홈즈는 관찰한 내용을 기반으로 철저하게 과학적으로 접근한다. 이런 셜록홈즈의 스타일이 반영된 코난 도일의 코드는 첫 줄 부터 남다르다. "use strict"; 고백하건데, 자바스크립트에서 "use strict"; 가 뭘 뜻하는지 몰랐다... 그냥 코드 처음부터 쌩뚱맞에 문자열이 나왔구나 라고 생각만 했는데 해설을 보면서 "use strict";를 이용하여 strict mode로 코드를 실행하도록 했다는 사실을 알았다. 이 뿐만 아니라, 매우 개성이 강한 문학거장들의 코드답게 이해하기 어려운 부분들이 몇 군데 있었다. 덕분에 깨달았다. 나는 아직 자바스크립트 한참 초보이구나... 최근에 "대통령의 글쓰기"라는 책이 인기가 있었다. 청와대에서 연설비서관으로 일했던 저자가 김대중, 노무현 전 대통령의 연설문을 이야기하면서 글쓰기에 대해 이야기하는 책이라 매우 재미있게 읽었던 기억이 난다. 문득, 한국 문학가들 스타일로 자바스크립트로 코딩을 한다면?! 또는, 상상해보자. 박근혜가 자바스크립트로 코딩을 한다면? 문재인이 자바스크립트로 코딩을 한다면? 굳이 자바스크립트가 아니어도 괜찮을 것 같다. 유재석이 파이썬으로 코딩한다면? 설현이 자바로 코딩한다면? 이 또한 재미있지 아니하겠는가. 이 책에 나온 코드들이 좋은 코드가 아닌 것은 분명하다. 하지만 그 코드의 의미를 하나하나 생각하며 읽는 재미가 매우 쏠쏠하다. 심지어 주석마저도. 이 책을 읽고나니 이 책에 나온 피보나치, 팩토리얼 등의 간단한 알고리즘을 짜보고 싶어졌다. 궁금하다. 남이 보는 나의 코딩은 어떤 스타일일까? 내 코드에는 내 개성이 얼마나 묻어날까? function review(book) { if book==="만약 헤밍웨이가 자바스크립트로 코딩한다면" return "Read it, Right Now" }
|
|
만약 헤밍웨이가 자바스크립트로 코딩한다면(한빛미디어) 이 책은 제목부터 참신하다. 옮긴이의 말에서는 이 책을 ‘한 문학덕후 프로그래머가 문학 거장들에게 빙의되어 코딩하고 쓴 책’이라고 되어있는데 문이과가 확실히 구분되어 온 환경에서 자라온 나에게 아주 흥미로운 묘사였다. 작가는 책의 앞부분에서 꿈에서 문학 거성들에게 숙제를 내고 답변을 받았다고 표현한다. 책 자체의 내용도 그렇고 책의 크기도 일반적인 책이 아니라 약간 그림책? 같은 느낌의 크기에 상하좌우로 여백도 많아서 소설처럼 읽었다. 사실 나는 문학과 거리가 멀어 이 책에 나오는 대부분의 사람을 이름만 알거나 아예 모른다. (추리 소설로 유명한 아서 코난 도일만 조금 아는 정도이다…) 그러나 인물마다 서술된 설명이 매우 친절하고 문학도만 알 수 있는 내용이 아니라서 오히려 기술서적보다 가볍게 읽기 좋았다. 또 중간중간에 문제 풀이가 아닌 개념에 대한 시적 간주가 있는데 작가의 창의력이 정말 뛰어난 것 같다. 코드 또한 쭉 훑어보면 이해되는 정도라 문학이나 코딩에 익숙하지 않은 사람이라도 재밌게 읽을 수 있을 것 같다.
이와는 반대로 가볍게 읽었지만, 원론적인 것도 생각하게 되었다. 자료구조와 프로그래밍 기초를 공부하고 나서 그런지 약간 기계처럼 코딩하는 습관이 있는데 이 책을 읽으면서 한 줄 한 줄 의미를 생각해보는 기회를 가졌다. 주석이나 엔터를 치는 것 같은 세세한 면에서도 사람의 특성이 드러나지만 가장 좋았던 점은 한 문제에 대해 여러 명의 풀이방식을 보는 것이었다. 시간이나 공간복잡도를 고려해서 최적의 코드만 쓰는 것이 아니라 다른 방식도 생각해 볼 수 있었고, 또 책에서 제시하는 문제들이 코딩인터뷰에 나올법한 문제들이라 나도 생각해보는 시간을 가질 수 있었고 코딩인터뷰를 앞둔 사람이라면 시간이 날 때 읽어봐도 좋을 것 같다. |
|
책 제목이 특이해서 한번 읽어보고 싶었는데 한빛미디어 리뷰어로 선정되어 책을 받게 되었다. 우선 책 제목부터 특이했다. 헤밍웨이가 자바스크립트로 코딩을 한다고?? 왜?? 어떻게?? 다소 엉뚱한 상상이다. 책 내용이야 어찌됐던 이런 상상을 했다는것 자체가... 그저 "세상에는 이런 생각을 하는 사람도 있구나.."라는 감탄을 할 정도이다. 책에서는 하나의 알고리즘을 제시하고 이 알고리즘을 헤밍웨이가, 또는 코난 도일이 구현을 했다면 이런 형태일 거다라는 이야기를 하고 있다. 각각의 코드에서는 작가들이 쓴 작품에 나와있는 특징들이 그대로 녹아들어가기 때문에 같은 알고리즘이더라도 다양한 형태가 나온다. 작가의 성격, 취향, 작품에서 나타나는 서체등등.. 내용에서 볼 수 있듯이 이 책은 자바스크립트를 공부하기 위한 기술적인 책이 아니다. 오히려 작가별로 특징과 성향을 정리해놓은 인물 사전 같은 느낌이다. 우리나라에서 작년에 한참 유행했던 인문학과 IT 의 만남을 아주 잘 표현한 책이라고 생각해면 될것 같다. 내용과 발상에 대한 참신함은 의심할것이 없지만 아쉬운점도 있다. 작가들이 너무 많이 나오다 보니 내가 알고 있는 작가들에 대해서는 어느정도 공감이 가지만 들어보지도 못한 작가에 대해서는 공감을 얻기가 힘들었다. 문학 작품을 읽으면서 작가의 성향이나 문체등을 고려하고 읽은것은 학교다닐대 국어시간에 교과서에 나온 작가 이외에는 없기때문에 더 어려웠던것 같다. 책 저자 자체가 외국인이니 더 그런것 같다. 그래서 만약 이 책에 나온 작가들이 외국 작가가 아닌 국내 인물들.. 특히 예전에 국어나 문학 교과서에 나왔던 인물이었다면 나에게는 더 이해가 쉬웠을것 같다. |
|
만약 헤밍웨이가 자바스크립트로 코딩을 한다면? 해리포터로 유명한 조앤K롤링이 자바스크립트 알고리즘 문제를 푼다면? 이 책은 그런 자그마한 상상에서 피어난 책이다. 흔히 개발자들이 하는 소리 중에 '그 사람의 코드를 보면 그 사람의 성격이 보인다'는 말이 있다. 이 책은 그러한 가정을 바탕으로 쓰여진 책이다. 인문과 기술의 융합이 중시되고 있는 시대에 이 책은 개발자들의 인문학 교양서라 할 수 있을 것이다. 헤밍웨이를 몰라도, 프란츠 카프카를 몰라도, 다빈치코드로 유명한 댄브라운의 책을 안읽어봤어도 이 책에서 작가들의 (가상의)코드를 통해 그 문학적 성격을 가늠해볼 수 있다. 개중에는 작가들의 코드를 보고 작품세계에 대한 호기심이 동한 개발자가 그 작가의 문학작품을 찾아보면서 인문학에 입문하게 되는 계기가 될 수도 있으니 1석 2조 아닌가. 이 책은 초급자들을 위한 책은 아니다. 자바스크립트! (제이쿼리 라이브러리가 아닌) 에 어느정도 지식이 있는 사람이 읽는 편이 작가들의 코드 성향을 이해하기에 더 좋을 것 같다. 개인적으로 순수 자바스크립트 보다는 라이브러리를 사용하여 일을 주로 했기 때문에 이해되지 않는 코드가 몇가지 있었는데, 이를 계기로 자바스크립트를 깊게 파봐야겠다는 생각이 들었다. 아무래도 작가들의 성향을 바탕으로 구현된 코드다 보니 도중에 쓸데없는 코드가 들어간다던지(로베르트 블라뇨의 코드에서- 의미없는 수학자들의 이름나열이 뜬금없이 등장한다) 변수명을 그 작가의 작품에 등장한 마법주문으로 쓴다던지(조앤K롤링 챕터가 그랬다)하는 코드의 변주가 있는데, 이 때문에 지식적인 측면에서보다 흥미를 가지고 이 책에 접근하길 권하는 바이다. 기술면접에 나올법한 피보나치, 팩토리얼, 행복수, 소수, 메서드체인에 대한 알고리즘 문제를 여러 작가들의 성향에 따라 구현된 코드가 그 작가와 문학작품에 대한 짧막한 소개와 함께 챕터를 구성하고 있다. 따라서 이전 챕터가 기억나지 않아도 자투리시간에 짧막짧막하게 읽어볼 수 있다는 편리성이 있다. 다소 딱딱한 개발서만 보다가 이런 책을 접하게 되니 학창시절 장난스럽게 작성하던 코드들도 생각나고 공부가 아닌듯 하면서도 다시한번 자바스크립트를 무심하게 접할 수 있어 흥미로운 책인것같다. 무엇보다도 어린이 동화책같은 이 책의 크기와 편집이 마음에 든다. 열심히 자바스크립트를 공부하다 머리를 식히고 싶은 개발자들에게, 인문학적 소양을 키우고 싶은 사람들에게 권할만한 책이다. 문학작가와 엮여서 문학에 거부증이 있는 사람들에게 접근하기 힘들 수 도 있지만 우리나라의 개발자 커뮤니티에서 다른 방법으로 이런 코드의 변주를 시도해보는 것도 재밌는 일 일것같다. 예를들어 요즘에 화제가 되고 있는 그분에 빙의했다면.. 연설문이 검토되지 않았으면 영원히 for문에서 벗어나지 못한다던지.. 코드를 가지고 놀수있는 흥미로운 프로젝트가 될 것같다, |
|
대다수의 프로그래머가 그러하지 않을까 싶지만, 상당히 이색적인 느낌의 서적입니다. 우선 제목부터가 IT와는 거리가 상당한 문학의 거장 헤밍웨이가 거론되며, 그 헤밍웨이와는 상당히 어울리지 않는 '코딩'이라는 단어가 등장합니다. 책 자체도 195p 정도의 얇은 두께와 전체적으로 붉은 색감을 주는 이전에 접해보지 못한 느낌을 줍니다. 책을 즐겨 읽습니다만 그 분야가 편향된 편이라 헤밍웨이라던가 몇몇 유명한 이들 외에 등장하는 기타 거장들의 이름은 상당히 낯섭니다. 어쨋든 인문학의 융합이라는 단어가 한참 거론됬었던 것에서 비롯하여 이 책을 집어들어봅니다. 책의 전개는 피보나치와 팩토리얼, 행복수와 소수, 메서드 체인에 대한 문학 거장들의 기발한 해법으로 진행됩니다. 각 거장들의 문제 해법을 풀이하기 전에, 각 문학의 거장들의 입장에서 본 자바스크립트에 대한 간략한 의견이 나오는군요. 개인적으로는 이 부분이 상당히 재미있었습니다. 또한 제인 오스틴 부분에 나온 말이 상당히 재미있더군요. '프로그래머, 특히 재수없게 뭔가를 알게 된 프로그래머라면 가능한 그것을 숨겨야 한다.'. 물론 그래서는 안되지만 작가의 작풍 스타일이라던가 삶에 대한 태도가 반영된 느낌이었습니다. 이러한 간략한 의견 이후에는 각 거장들의 풀이를 이해하기에 도움이 될 간략한 문학 구절이라던가 그 삶의 스타일에 대한 기술이 있습니다. 중간중간에 아래 사진과 같이 재미있는 부분도 있구요. 문학 작품을 읽을때보다 더 감정이입해서 따라 읽은 부분이었습니다.
사실 어느 순간부터는 프로그래머지만 각 문학 거장들이 풀이한 코드- 보다는, 앞 부분에서 자바스크립트에 대한 간략한 의견 부분과 코드 주석을 이해하기에 도움이 될만한 각 문학거장들의 작품과 그 해석을 읽고 있더군요. 책을 전부 읽고나니 제인 오스틴과 실비아 플래스와 같은 거장들의 서적을 한번 읽어보는 시간을 가져봐야겠다는 생각이 듭니다. 인문학에 관심이 있는 프로그래머라면 상당히 즐겁게 읽을 수 있는 책이라 판단됩니다. |