|
지금까지 나의 길을 돌아보면 객체지향 언어 보다 C언어로 임베디드 시스템 구현하는 작업을 많이 한 것 같다. 학생 시절에 C++, 자바를 배우긴 하였으나 실전에서 설계를 하기보다는 기존 코드를 수정 보완하는 작업에 촛점을 맞추어왔다. 자바스크립트는 IoT 구현에 관심을 가지면서 조금씩 배우긴 했지만 기본이 튼튼하지 않으니 여전히 수박 겉핧기 처럼 느껴진다. "물들어올때 노저어라"라고 했던가~ 우연한 기회에 이책을 접하게 되고 강제로 공부하게 됨을 기쁘게 생각한다. 최근에 함수형 프로그래밍을 주제로한 서적들이 많이 보인다. 그만큼 프로그래밍 언어의 세계에서 중요한 패러다임이지 않을까 추측해본다. 위키페이지를 참조해보니1930년대에 개발된 람다대수를 근간으로 많은 프로그래밍 언어에서 람다연산을 발전시켜오고 있다고 한다. 여타 다른 함수형 언어들보다 이책에서 언급한 것 처럼 자바스크립트가 갖는 인기와 친숙함이 있기에 잘 활용하여 입문을 한다면 시간이나 노력에서 효율적일 것 같다. 웹 어플리케이션을 잘 알고 있는 자바스크립트 개발자를 대상으로 하기 때문에 최소한 자바스크립트에 어느 정도 숙달 되어 있지 않으면 자주 어려운 부분을 만나지 않을까 생각된다. 그러나 자바스크립트 입문자라 하더라도 함수형 설계와 객체지향형 설계의 차이점에 초점을 맞추어 읽어나가면 많은 도움이 되지 않을까 한다. 이책은 크게 3부분으로 구성된다. Part1에서 함수형 프로그래밍의 개념 및 함수형으로 사고를 하는 방법을 배우고 Part2에서는 함수형 프로그래밍을 실전에 응용하기 위한 개념과 기법을 설명한다. 마지막으로 Part3에서는 작성한 프로그램을 검증하기 위한 테스트 기술을 배우면서 초급부터 고급까지 다양한 지식을 단계적으로 배울 수 있도록 되어있다. "함수형 프로그래밍은 과연 무엇인가? 자바스크립트를 활용하여 함수형 프로그래밍을 시작하면 어떨까?" 중간 중간에 어려운 부분이 나올때 마다 다이아그램을 잘 활용한 설명으로 조금이나마 이해도를 높일 수 있었다. 자바스크립트를 활용한 함수형 프로그래밍은 분명 색다른 경험이었다. 절차적 언어와는 전혀 다른 차원의 코드 간결화와 생산성을 향상을 이루어 낼 수 있다니 신기할 따름이다. 함수형 프로그래밍에 흥미와 기대를 갖게 하는 과정이었다. |
|
함수형 자바스크립트를 읽고 요즘에는 절차형라는 말 보다는 함수형이라는 말이 점점 많이 들리고 있다. 예전에 절차형과 함수형 프로그램에 대한 차이를 어떤 블로그에서 본 적이 있다. 둘 다 결과는 같은 프로그램을 하는 스타일이 너무 다른 것에 충격을 받았다. 그래서 '함수형 사고 객체지향 개발자에서 함수형 개발자로 거듭나기' 라는 책을 구매해서 봤으니 내용이 난해해서 이해하기 힘들었다. 그리다가 두 번째 'You Don't Know JS: 타입과 문법, 스코프와 클로저' 책을 봤을 때는 전에 보던 책과 비슷한 애기이긴 하나 역시 아직도 개념을 이해하기에는 어려웠다. 그러던 중 '폴리글랏 프로그래밍' 책을 봤다. 프로그램에 대한 이야기를 임백준씨가 해준다는 것에 그냥 보고 있었는 데, 전에 몰랐던 프로그램에 대한 역사를 좀 알고 나니 함수형 프로그램에 대한 생각이 더욱 간절해졌다. 그러던 중 '함수형 자바스크립트'를 보니 개발자라면 대부분 사용하는 자바스크립트로 함수형 프로그램밍을 한다는 게 새로웠다. 요즘 자바스크립트는 RxJS 등등 비동기가 대세가 되어 가고 ES6 등등 새로운 표준이 도입되고 있으나 현실에서는 예전에 하는 옛날 방식으로 개발하고 있는 나의 모습을 보니 다시금 책이 새롭게 느껴졌다. part 1에서는 함수형으로 사고하는 방식을 도와준다. 실은 몇 번 읽어야 할 듯하다. 여전히 나에게는 새로운 세계다. part2에서는 기존 절차형을 함수형으로 전환하는 방법을 소개해 준다. 람다 사용법도 익숙해야 하고, 새로운 자바스크립트 표준에도 익숙해져야 한다. 그런데도 프로젝트에서 사용해 볼만한 것들이 많이 보인다. part3에서는 함수형 스킬을 갈고닦기인데 좋은 내용이나 아직 여기까지는 힘들다. 위에 내용을 익히고 나서 해야 할 뜻하다. 자바스크립트로 함수형을 만든다고 생각하면 기존에 있는 프레임워크를 그냥 사용한다고 생각했는데, 역시나 기본/개념이 중요한 듯 하다. 함수형 프로그램을 알고 싶은 사람은 이 책을 봐도 좋을 듯하다.
전혀 감이 없다면 '폴리글랏 프로그래밍'을 먼저 읽고 보는 걸 추천한다. |
|
이번에 살펴 볼 책은 한빛미디어에서 출간한 "함수형 자바스크립트" 이다. MANNING에서 출간한 Functional Programming in Javascript 를 번역한 번역서로 자바스크립트라는 언어를 통해 함수형 프로그래밍의 개념에 대해 설명하고 있다. 함수형 프로그래밍이라는 단어가 최근 몇년전부터 들려오기 시작했다. 2000년에 처음 웹프로그래밍을 시작하면서 가장 많이 듣던 단어가 객체지향언어프로그래밍이었다. 프로그램을 작성하려면 객체지향 프로그램의 의미를 먼저 이해하고 프로그램을 작성하는게 정석처럼 받아 들여 졌다. 그래서 객체지향 프로그램 관련 서적도 범람하던 시기였다. 하지만 점차 대규모 개발이 이뤄지고 아니면 개발 이후 시간이 지나고 다양한 기능들을 수용하고 덧붙여 여 나가면서 이를 대행하기에 객체지향 프로그램 언어의 한계가 드러나기 시작했다. 그래서 대두되었던게 함수형 프로그래밍이였다. 이 책은 함수형 프로그래밍을 웹개발자들에게 친숙한 언어이 자바스크립트를 통해 설명하므로 새로운 언어를 배워야 한다는 부담이 없고, 커링, 부분적용, 클로저, 모나드 등 함수형에서 언급된느 핵심 개념들을 짧은 시간에 학습할 수 있다. 그렇지만 기존에 자바스크립트를 이해하지 않고 사용하거나 jQuery를 활용해서 사용했던 개발자들에게 있어서는 새로운 언어를 배우는 것과 같이 자바스크립트에 대해 일정부분 학습이 학습이 필요하다. 자바스크립트 이해하는데 더글라스 클락포드가 지은 "Javascript The Good Parts"(번역서 : 자바스크립트 핵심가이드 - 한빛미디어)를 추천한다. 이 책은 총 3개 부, 8개 장으로 구성되어 있다. 1부는 함수형으로 사고하기로 함수형 프로그래밍의 개념을 설명하고 자바스크립트에서 관련 지식을 다루고 있다. 2부는 함수형으로 전환하기로 함수형 프로그램의 핵심기법은 함수체인, 커링, 합성, 모나드 등에 대해 설명하고 있다. 3부는 함수형 스킬 갈고닦기로 함수형 프로그래밍을 실무에 응용하면서 얻는 잇점에 대해 알아보고 있다. 이 책은 ECMAScript 6(이하 ES6) 명세를 기준으로 자바스크립트를 작성하고 있다. 이때문에 ES6에 대한 기초 지식도 일부 필요할 수도 있지만 반드시 ES6를 알아야만 작성할 수 있는것은 아니다. 이 책을 보기 위해 ES6를 따로 학습할 필요는 없다. 다만 앞으로 자바스크립트를 적극적으로 활용하기 위해서는 ES6에 대해서도 학습하는 것이 도움이 된다. 이 책에 작성된 코드는 함수형 프로그램에 대한 개념을 설명하기 위해 만들어졌다. 이 때문에 짧은 코드들과 이를 실행 했을 때 결과값을 함께 제공하고 있어 코드를 이해하는데 어렵지 않다. 코드를 설명하면서 필요시 주석을 코드 옆에 표시되어 있어 한결 보기 편했다. 또한 개념을 설명함에 도식들이 제공되어 도식을 통해 개념이 설명하고 이를 다시 코드로 작성되어 제공하고 있어 어려운 개념들을 이해하는데 많은 도움이 되었다. 마지막으로 이 책은 이제 웹개발 혹은 자바스크립에 입문하는 개발자에게 다소 이해하기 어려울 수도 있다. 그래서 초급개발자보다는 자바스크립트로 프로그래밍을 하면서 자신이 작성한 코드에 대해 한계를 느끼거나 더 나은 방법이 없는지 궁금해하는 개발자에게 새로운 길을 안내할 수 있는 안내서임에 틀림이 없다. 특히 요즘 뜨고 있는 자바스크립트 프레임워크(Angular, React)를 학습하는 개발자에게 함수형 프로그래밍에 대한 개념을 이해 한다면 프레임워크를 이해하는데 도움을 주고 또한 한단계 성장할 수 있는 기회라고 생각한다. |
|
이 책을 읽게된 계기는 요즘 vuejs를 이용해서 |