|
함수형 자바스크립트. 함수형 언어에 대한 이야기를 종종 들어왔다. 이를 반영이라도 하듯 한빛미디어에서 함수형 언어 번역서가 출판되었다. 무엇보다도 점점 강력해지고 있는 자바스크립트를 이용한다. 자바스크립트에 대해 어느 정도 이해하고 있다고 생각했고, 함수형 언어에 대한 호기심을 가지고 읽기 시작했다. 책은 300페이지 남짓 정도로 다른 서적에 비해 얇은 편이다.
책은 언더스코어(Underscore.js) 라이브러리를 사용하며, 기존에 자바스크립트와 프로그래밍에 익숙하지 않은 독자라면 다른 책을 먼저 읽어보기를 권한다. 자바스크립트 입문자가 읽기에는 어렵다. 처음 책을 읽었을 때, JAVA를 통해서 객체지향프로그래밍을 접했을 때의 거부감을 다시 한 번 느꼈다. 일부 페이지는 한 번에 이해하기 어려워 넘긴 부분도 있다. 코드는 일반적인 자바스크립트 코드에 비해 상당히 짧다. 짧아진만큼 생각해야하는 부분도 많아졌다. 함수형 언어로 기존의 복잡한 코드가 상당히 가벼워질 것이라 생각하지만, 아직은 낯설다. 객체지향언어와 함수형언어의 특징을 잘 살려서 코딩을 한다면, 서로의 장점을 살려 좋은 결과를 만들 수 있을 것이다. 이 책을 한 번에 이해하기에는 어렵다. 시간을 가지고 다시 한 번 볼 생각이다.
높은 자바스크립트에 대한 이해와 기존 객체지향언어에 지쳐 함수형 프로그래밍에 대해 접해보고 싶은 독자에게 접합한 책이라 생각된다. 몇 줄 안되는 코드가 보여주는 결과는 다소 놀랍고, 함수형 언어에 대해 관심을 가지게 될 것이다. 함수형 언어를 받아들이기 위해서는 무엇보다도 기존 객체지향적인 생각 방식에서 벗어나 조금은 유연하게 사고를 해야할 필요가 있다. |
|
자바 스크립트를 작성하다보면 빠지지 않는것이 함수이다. 그런데 과연 이 함수가 적절히 사용된건지, 아니면 문법에 맞게 작성된것인지 알기 힘들때가 있다. 같은 기능인데 다른 선언 방식, 다른 형태의 함수들이 소스상에 존재하게 되면.. 거의 이건 블랙홀이다 싶을 정도이다. 그런 면에서 이책은 보다 이론적으로 지식을 쌓기에 좋을 것 같다는 생각이 든다. 아주 기본적인 책 보다는 그보다 한단계 위정도? 기초를 익힌 후에 자신이 그동안 작성한 자바스크립트 소스를 보며 이건 이래서 틀렸구나, 이런 방법보다는 다른 방법이 효율적이구나 라는 생각을 할 수있게 하는 책인것 같다. 그래서 기본서에서는 간단히 다루는 내용들을 이 책에서는 심화적인 내용까지 볼수 있다. 특히 마음에 들었던 것은 클로저에 대한 내용이었다. 인터넷을 찾아봐도, 소스를 봐도 좀 헷갈리는 부분이 있었고 다른 책들에서는 그냥 한두페이지로 지나갔던 내용인데. 이책에서는 고맙게도 자세한 내용이 있었다ㅏ. 그래서 이해하는데 상당히 도움이 됐다. 또 중간중간 예제들이 많이 있어서 내용을 이해하는데 전체적으로 많은 도움이 됐다. (역시 컴퓨터 서적의 핵심은 예제다. ^^;;;) 다른 책들과 마찮가지로 한번읽어서는 내것으로 만들기에는 양이 좀 많다. 실제 책은 그렇게 두껍지 않은데 많은 양의 내용을 담아줬다. 아마도 1번정도 1독 하고 다음에는 직접 적용해볼때 레퍼런스로 쓰면 딱인 책이다. 그렇게 사용한다면 아마도 코드 리펙토링에도 많은 도움이될것 같다. ^^ |
|
개인적으로 이 책을 끝까지 읽었을 때 독자들도 이에 동의할 수 있길 바란다. 역시 필자의 의견에 동감하며, 아름다운 코드란 어떤 것이고 그에 따라 어떤 노력을 해야하는지 몇년째 고민한 결과 의외의 책에서 힌트를 얻은듯 싶다.
"실행할 수 있고, 올바로 동작하며, 빨리 실행되도록 만들어라." - 버틀러 램슨(Butler Lampson)
"실행할 수 있게 한 다음, 올바로 동작하게 하고, 그 다음 빠르게 실행되도록 만들어라." - 켄트 벡(Lent Beck)
놀라운 통찰력이 책에 담겨져 있어, 분량이 짧음에도 불구하고 읽는 내내 고민했고 괴로워했고 느껴지는 것에 즐거웠던 책이었다. OOP 관련 일만 해 보다가 이번에 자바 스크립트에 관련해서는 첫번째 책을 고른 것이었는데, 의외로 다른 언어에서 기존에 사용하던 언어의 고민을 더 깊게 만들거나 또는 의외의 힌트를 얻은 것들에 대해 놀라웠다. 예를 들면, 아래와 같은 것들은 평소 일을 하면서 괴로워했던(?) 것들에 대한 힌트를 얻을 수도 있었다. 객체 지향 스타일을 엄격하게 준수하는 시스템에서 객체 간의 상호 작용이 발생하면 각 객체의 내부 값이 바뀌면서 전체 시스템의 상태가 바뀌는데 이때 많은 작은 변화가 융합되고, 잠재적으로 미묘한 변화가 일어날 수 있다. 특히 작은 변경으로 큰 상태 변화가 발생할 수 있는 상황에서 새 객체를 추가하거나 새로운 시스템 기능을 추가해야 한다면 정말 난감하다. 이와는 달리 함수형 프로그래밍에서는 관찰할 수 있는 상태 변화를 최소화하려고 애쓴다. 따라서 함수형 원칙을 고수하는 시스템에 새로운 기능을 추가할 때는 새로운 함수가 지역화되고 비파괴적인 데이터 전이 과장(예를 들면 원래 데이터가 변하지 않음)에서 어떻게 동작할 것인지를 파악하는 것이 핵심이다. 그렇다고 해서 함수형과 객체 지향 스타일이 서로 극과 극의 적대적인 관계라고 주장하는 것은 아니다. 자바 스크립트는 두 가지 스타일을 모두 지원한다. 즉, 자바 스크립트로 시스템을 제대로 구성하려면 두 가지 모델을 모두 사용해야 한다. 실용적인 함수형 프로그래밍은 어떤 시스템에서 상태 변화를 완전히 제거하는 것이 아니라 변이가 발생하는 지역을 가능한 최소화하는 것을 목표로 한다. 처음 접했던 언더스코어부터 시작하여 스코프, 클로저 등의 함수형 프로그래밍에 필요한 개념 뿐만 아니라 함수형 프로그래밍을 활용할 수 있는 다양한 정보를 제공하여 새로운 접근 방식으로 자바스크립트를 바라볼 수 있었고, 가장 좋았던 점은 책 뒤에 참고로 있었던 참고서적에 대한 소개였다. 함수형 자바스크립트의 장점 및 활용 사례, 그리고 자바스크립트를 이용하여 함수형 프로그램을 작성하는 방법에 대해서 각 Chapter별로 나누어 이해하기 쉽게 설명되어 있고, 불필요한 내용을 최대한 배제하고 간결한 설명과 예제 코드를 이용하여 각 개념에 대한 이해를 도와주며 페이지 하단의 주석에 링크를 참고하여 좀 더 자세한 내용을 확인할 수 있었고, 이론 뿐만 아니라 다양한 활용 사례를 통해 실용적으로 사용하는 데에도 도움을 주었다. 하지만 자바스크립트 활용이 익숙하지 않거나 초급 프로그래머 독자가 이 책을 접한다면 다시 생각해보고 접하라고 권하고 싶다. 각 Chapter에서 설명하는 개념에 대한 설명이 너무 간결하기 때문에 기초 서적부터 먼저 학습해야 하며, 참고 자료나 서적이 있어야 좀 더 저자가 원하는 바를 꽤뚫어볼 수 있을 것같다. |
|
함수형 자바스크립트는 함수형 프로그래밍 과 자바스크립트를 다루는 책이다. 하지만 내용은 자바스크립트로 “함수형 프로그램을 작성하는 방법”에 대해서 중점적으로 설명하는 책이다.
항상 책을 읽고 리뷰를 하면서 강조하는 부분은 읽는 사람의 수준과 기본 지식에 대한 부분이다. 이 책은 “함수형 프로그래밍”에 대해서 자세하게 설명하지만 그렇다고 바닥부터 모든 것을 다루는 책은 아니다. 자바스크립트도 처음이고 함수형 프로그래밍에 대해서 들어본 적이 없다면 이 책은 일단 내려놓자. 이 책은 난이도가 있다. 자바스크립트에 대한 선이해가 필수이다. 자바스크립트의 동작원리에 대해서 애매한 부분은 다른 책들을 다시 들춰 보면서 읽어나갔다. 자바스크립트에 대한 선이해와 경험이 충분해야 책 속의 내용을 깊이 이해할 수 있다. 일급함수, 추상화와 클로저, 체이닝 등 한번 읽고 이해할 수 있다면 좋겠지만 적어도 리뷰하는 나는 그렇지가 못했다. 익숙했던 절차적 프로그램, 객체지향적 사고와는 다른 “함수형 프로그래밍”이란 새로운 관점을 배우고 익혀야 하기 때문이다. 그래서 이 책은 기본적으로 개념 설명이 본질이고 개념이해를 돕기 위한 수단으로 Underscore.js를 기반으로 예제를 보여준다. 책을 읽고 예제를 따라하다 보니 아쉬운 점이 좀 있다. 책의 앞 부분에서 구현한 함수들을 자연스럽게 뒤에서 사용하고 있다. 즉 한번 읽는 흐름을 놓치면 책의 앞뒤를 왔다갔다하며 내용의 의미를 잘 찾아가야 한다. 의외의 혜택은 책 끝 부분에 있는 “참고문헌”이다. 함수형 프로그래밍과 관련된 알짜같은 책목록이 있으니 서점에 가서 꼭 살펴보기를 권한다. 옮긴 분도 몇 번이나 읽는 수고를 반복해야 이해할 수 있었다는 데 욺긴이보다도 지식과 경험도 없는 사람이 겨우 한번 읽고 리뷰를 쓴다는게 어불성설이긴 하다. 그래도 요약해보면, 자바스크립트를 통한 함수형 프로그래밍에 대해서 제대로 공부하려면 이 책을 곱씹고 봐야 한다는 점이다. 이 글은 한빛 리더스 8기 활동의 일환으로 작성한 것입니다. |