한빛출판네트워크

IT/모바일

함수형 자바스크립트 : 새롭고 올바른 자바스크립트 프로그래밍 기법

한빛미디어

번역서

절판

함수형 자바스크립트 : 새롭고 올바른 자바스크립트 프로그래밍 기법
좋아요: 31
  • 저자 : 마이클 포거스
  • 역자 : 우정은
  • 출간일 : 2014-01-28
  • 페이지 : 292쪽
  • ISBN : 9788968480799
  • 물류코드 :2079

합계 : 19,800

  • 혁신적이고 놀라운 자바스크립트 코딩 기법을 만나자!


    이 책은 Underscore.js 라이브러리를 이용해 아름답고 안전하고 직관적이고 테스트하기 쉬운 함수형 자바스크립트 코드를 구현하는 방법을 설명한다. 함수형 프로그램 기법을 배우려는 자바스크립트 프로그래머와 자바스크립트를 배우려는 함수형 프로그래머에게 유용하다.

    • 일급 함수를 이용한 응용 프로그래밍 기법
    • 변수 스코프와 클로저 이해하기, 사용하기
    • 함수로 함수 만들기, 인자로 삼기
    • 재귀 함수 관련 자바스크립트 한계 극복
    • 프로그램에서 상태 변화의 흔적을 줄이기, 숨기기, 제거하기
    • 체인과 함수형 파이프라인을 이용한 흐름 기반 프로그래밍
    • 클래스를 사용하지 않고 코딩하는 방법

    어떤 독자를 위한 책인가?


    이 책의 독자가 자바스크립트의 기본 지식은 있다고 가정했다. 자바스크립트 언어와 관련한 훌륭한 책이 있고, 온라인에도 방대한 자료가 있으므로 이 책에서는 자바스크립트 언어 자체에 대한 설명은 하지 않는다. 또한 독자가 자바, 루비, 파이썬, 자바스크립트 등에서 일반적으로 사용하는 객체 지향 프로그래밍을 실무에 적용할 수 있을 정도의 지식이 있다고 가정했다. 객체 지향 프로그래밍 지식이 있다면 필자가 제공하는 정보를 좀 더 매끄럽게 받아들일 수 있겠
    지만 꼭 전문적인 객체 지향 프로그래밍 지식이 필요하진 않다. 이 책은 오랫동안 자바스크립트를 해왔지만 함수형 프로그래밍에 대해 알고 싶어 하는 프로그래머 또는 오랫동안 함수형 프로그램을 해왔으면서 자바스크립트를 배우고자 하는 프로그래머에게 가장 이상적이다. 후자의 경우에는 이 책을 메인으로 삼아 공부하기보다는 자바스크립트의 특이한 사항에 초점을 맞춘 부가적인 책으로 활용하길 권한다.


    추천사


    "이 책은 퍼즐 조각을 하나씩 끼워 맞추듯 함수형 프로그래밍을 설명한다. 자바스크립트를 함수형 프로그래밍 방법으로 사용해야 하는 당위성 및 장점과 단점을 명쾌한 예제로 설명한다. 처음 읽으면 고개를 갸우뚱거리게 되지만, 두 번 읽으면 '아!'라는 감탄사를 연발할 수 밖에 없다."
    - 정경석,『이것이 레디스다』 저자


    "당신은 함수형이라는 흥미로운 영역을 탐험하는 멋진 책을 읽고 있다. 우리의 친절한 여행 가이드이자 미친 레지던트 과학자인 마이클 포거스는 아홉 개의 장과 두 개의 부록을 통해서 함수형 프로그래밍을 잘게 부수기도 하며, 그들을 다시 조립해서 어떻게 저런 일이 가능할까 싶을 정도의 멋진 작품으로 함수형 프로그래밍의 활용 방법을 보여 주고 있다. 독자를 놀래는 프로그래밍 책은 드물다. 그러나 이 책은 분명 당신을 놀랠 것이다!"
    - 제레미 애쉬케나스 Jeremy Ashkenas, CoffeeScript 언어, Backbone.js 프레임워크, Underscore.js 라이브러리 창시자


    "더글라스 크락포드의 멋진 책 『자바스크립트 핵심 가이드』를 읽었을 때가 기억난다. 그 책을 읽고 유용한 정보를 얻었을 뿐 아니라 자바스크립트의 단점을 피하는 방법을 고작 172쪽으로 설명했다는 점에 감명을 받았다. 사실, 정보를 제공할 때 간결함은 교육적인 면에서는 그리 좋지 않다. 그런데 크락포드처럼 간결함으로 어떤 정보를 성공적으로 제공할 수 있다면 독자는 저자의 권고를 더 완벽하게 소화하여 결과적으로 더 많은 이익을 얻게 된다. 이 책을 읽어 보면 마이클 포거스도 크락포드만큼 혹은 그 이상으로 훌륭한 책을 집필했음을 알 수 있다. 마이클 포거스는 크락포드를 포함한 기존의 전문가들의 훌륭한 조언을 받아들이면서 함수형 자바스크립트 프로그래밍 세계로 독자를 깊숙이 인도한다."
    - 스티브 비노스키Steve Vinoski, 『Advanced CORBA? Programming with C++』 저자, IEEE 시니어 멤버


    "마이클 포거스는 함수형 자바스크립트 프로그래밍을 자세하고 실용적으로 설명한다. 또한 소개하는 개념을 Underscore.js 툴킷과 결합해 실용적인 예제로 설명한다. 설명과 예제를 통해 간결하고, 멋지고, 탄탄한 자바스크립트를 개발하는 방법을 제시한다." 
    - 딘 왐플러 Dean Wampler, 『Programming Scala』 저자


    "이 책에 다른 제목을 붙인다면 '자바스크립트 핵심 공략'이라고 할 수 있다. 이 책에서 설명하는 함수형 개념을 자바스크립트에 적용한다면 자바스크립트를 이용해 문제에 접근하는 방법이 달라질 것이다."
    - 롭 프리셀 Rob Friesel,Dealer.com UI 개발자

  • [저자] 마이클 포거스

    마이클 포거스는 분산 시뮬레이션, 머신 비전, 전문가 시스템 구축을 주로 하는 소프트웨어 개발자다. 클로저, Underscore.js 커뮤니티 활동에도 참여하고 있다.

    [역자] 우정은

    인하대학교 컴퓨터공학과를 졸업하고 LG전자, 썬마이크로시스템즈, 오라클 등에서 모바일 제품 관련 개발 일을 하다가 현재는 뉴질랜드 웰링턴에 있는 Flux Federation 사에서 모바일 앱 개발자로 새로운 인생을 즐기고 있다. 2010년 아이폰의 매력에 빠져들면서 번역 및 개발을 취미로 삼게 되었다. 2010년 이후로 꾸준히 서적을 번역한다.

     

  • 1장. 함수형 자바스크립트 소개
    함수형 프로그래밍과 Underscore.js를 포함한 몇 가지 중요한 주제를 소개한다.

    _1.1 자바스크립트 활용사례
    _1.2 함수형 프로그래밍 시작하기 
    _1.3 언더스코어와 관련한 잡담
    _1.4 요약


    2장. 일급 함수와 응용형 프로그래밍
    일급 함수를 정의하고 사용하는 방법을 보여 주며 몇 가지 일반적인 적용 사례를 보여 준다. 일급 함수를 사용하는 기법 중 하나로 응용형 프로그래밍을 설명한다. 또한 함수형 프로그래밍을 이용한 소프트웨어 개발의 핵심인 '데이터 고찰'을 살펴본다.

    _2.1 일급 함수의 특징
    _2.2 응용형 프로그래밍
    _2.3 데이터 고찰
    _2.4 요약


    3장. 변수 스코프와 클로저
    자바스크립트 함수형 프로그래밍의 두 가지 핵심을 설명하는 과도기 장이다. 자바스크립트에서 흔히 사용하는 어휘적 스코핑, 동적 스코핑, 함수 스코핑 등을 포함한 다양한 변수 스코핑을 살펴보며, 클로저가 어떻게 동작하며 어떤 방식으로 그리고 왜 클로저를 사용하는지 살펴본다.

    _3.1 전역 스코프 
    _3.2 어휘 스코프 
    _3.3 동적 스코프 
    _3.4 함수 스코프 
    _3.5 클로저 
    _3.6 요약 


    4장. 고차원 함수
    2장과 3장에서 배운 내용을 기초로 하여 일급 함수의 중요 유형인 고차원 함수를 설명한다. '고차원 함수'라는 말이 조금 복잡해 보일 수도 있지만, 고차원 함수가 간단함을 보여준다.

    _4.1 다른 함수를 인자로 취하는 함수
    _4.2 다른 함수를 반환하는 함수
    _4.3 지금까지 배운 내용을 모두 활용: 객체 검증자
    _4.4 요약


    5장. 함수로 함수 만들기
    다른 함수를 이용해서 함수를 '만드는' 방법을 살펴본다. 함수를 만드는 것은 함수형 프로그래밍에서 중요한 기법이므로 함수를 만드는 방법을 적절히 설명한다.

    _5.1 함수 조립의 핵심
    _5.2 커링
    _5.3 부분 적용
    _5.4 함수의 끝을 서로 연결하는 함수 조립 방법
    _5.5 요약


    6장. 재귀
    직접 또는 간접적으로 자신을 호출하는 재귀 함수를 설명하는 과도기 장이다. 자바스크립트에서는 재귀에 한계가 있어서 자주 사용되진 않는다. 그러나 재귀의 한계를 극복할 수 있는 방법이 있는데 이를 일부 설명한다.

    _6.1 자신을 호출하는 함수 
    _6.2 상호 재귀 함수(서로를 호출하는 함수)
    _6.3 너무 깊은 재귀! 
    _6.4 재귀는 저수준 동작이다 
    _6.5 요약 


    7장. 순수성, 불변성, 변경 정책
    어떤 것도 바꾸지 않는 함수형 코드를 구현하는 다양한 방법을 살펴본다. 간단히 말하면, 변수가 바뀌지 않을 때 함수형 프로그래밍을 쉽게 적용할 수 있다. 변수가 바뀌지 않는 상황이 어떤 의미인지 자세히 설명한다.

    _7.1 순수성
    _7.2 불변성
    _7.3 변화 제어 정책
    _7.4 요약


    8장. 흐름 기반 프로그래밍
    관찰 작업을 살펴본다. 전체 시스템을 데이터를 가공하고 이동시키는 가상의 함수 '조립 라인'으로 간주한다.

    _8.1 체이닝
    _8.2 파이프라이닝 
    _8.3 데이터 흐름과 제어 흐름
    _8.4 요약


    9장. 클래스를 이용하지 않는 프로그래밍
    클래스 기반의 객체 지향 프로그래밍을 전혀 적용하지 않는 흥미로운 방식으로 응용 프로그램을 만드는 함수형 프로그래밍 방식을 설명한다.

    _9.1 데이터 지향
    _9.2 믹스인
    _9.3 }).call("Finis" );


    부록 A. 실생활의 함수형 자바스크립트
    부록 B. 참고문헌

  •  

    • 개인적으로는 "아름다운 코드를 구현" 하는 것을 첫째 프로그래밍 규칙으로 삼는다. 필자의 다양한 업무에서 이를 달성했지만 여전히 뭔가가 부족하다고 느꼈다. 아름다운 코드를 구현한다면 책상에 앉아서 키보드를 치는 시간을 줄일 수 있는 또 다른 측면의 최적화를 달성할 수 있다.





      적절하게 사용한다면 함수형 스타일의 코드 구현이야말로 가장 아름답게 코드를 구현할 수 있는 방법이라고 생각한다.



      개인적으로 이 책을 끝까지 읽었을 때 독자들도 이에 동의할 수 있길 바란다.





      역시 필자의 의견에 동감하며, 아름다운 코드란 어떤 것이고 그에 따라 어떤 노력을 해야하는지 몇년째 고민한 결과 의외의 책에서 힌트를 얻은듯 싶다.



      "실행할 수 있고, 올바로 동작하며, 빨리 실행되도록 만들어라."

      - 버틀러 램슨(Butler Lampson)

      "실행할 수 있게 한 다음, 올바로 동작하게 하고, 그 다음 빠르게 실행되도록 만들어라."

      - 켄트 벡(Lent Beck)



      놀라운 통찰력이 책에 담겨져 있어, 분량이 짧음에도 불구하고 읽는 내내 고민했고 괴로워했고 느껴지는 것에 즐거웠던 책이었다.



      OOP 관련 일만 해 보다가 이번에 자바 스크립트에 관련해서는 첫번째 책을 고른 것이었는데, 의외로 다른 언어에서 기존에 사용하던 언어의 고민을 더 깊게 만들거나 또는 의외의 힌트를 얻은 것들에 대해 놀라웠다.



      예를 들면, 아래와 같은 것들은 평소 일을 하면서 괴로워했던(?) 것들에 대한 힌트를 얻을 수도 있었다.



      객체 지향 스타일을 엄격하게 준수하는 시스템에서 객체 간의 상호 작용이 발생하면 각 객체의 내부 값이 바뀌면서 전체 시스템의 상태가 바뀌는데 이때 많은 작은 변화가 융합되고, 잠재적으로 미묘한 변화가 일어날 수 있다. 특히 작은 변경으로 큰 상태 변화가 발생할 수 있는 상황에서 새 객체를 추가하거나 새로운 시스템 기능을 추가해야 한다면 정말 난감하다.



      이와는 달리 함수형 프로그래밍에서는 관찰할 수 있는 상태 변화를 최소화하려고 애쓴다. 따라서 함수형 원칙을 고수하는 시스템에 새로운 기능을 추가할 때는 새로운 함수가 지역화되고 비파괴적인 데이터 전이 과장(예를 들면 원래 데이터가 변하지 않음)에서 어떻게 동작할 것인지를 파악하는 것이 핵심이다.



      그렇다고 해서 함수형과 객체 지향 스타일이 서로 극과 극의 적대적인 관계라고 주장하는 것은 아니다. 자바 스크립트는 두 가지 스타일을 모두 지원한다. 즉, 자바 스크립트로 시스템을 제대로 구성하려면 두 가지 모델을 모두 사용해야 한다.





      실용적인 함수형 프로그래밍은 어떤 시스템에서 상태 변화를 완전히 제거하는 것이 아니라 변이가 발생하는 지역을 가능한 최소화하는 것을 목표로 한다.



      처음 접했던 언더스코어부터 시작하여 스코프, 클로저 등의 함수형 프로그래밍에 필요한 개념 뿐만 아니라 함수형 프로그래밍을 활용할 수 있는 다양한 정보를 제공하여 새로운 접근 방식으로 자바스크립트를 바라볼 수 있었고, 가장 좋았던 점은 책 뒤에 참고로 있었던 참고서적에 대한 소개였다.



      함수형 자바스크립트의 장점 및 활용 사례, 그리고 자바스크립트를 이용하여 함수형 프로그램을 작성하는 방법에 대해서 각 Chapter별로 나누어 이해하기 쉽게 설명되어 있고,



      불필요한 내용을 최대한 배제하고 간결한 설명과 예제 코드를 이용하여 각 개념에 대한 이해를 도와주며 페이지 하단의 주석에 링크를 참고하여 좀 더 자세한 내용을 확인할 수 있었고, 이론 뿐만 아니라 다양한 활용 사례를 통해 실용적으로 사용하는 데에도 도움을 주었다.



      하지만 자바스크립트 활용이 익숙하지 않거나 초급 프로그래머 독자가 이 책을 접한다면 다시 생각해보고 접하라고 권하고 싶다. 각 Chapter에서 설명하는 개념에 대한 설명이 너무 간결하기 때문에 기초 서적부터 먼저 학습해야 하며, 참고 자료나 서적이 있어야 좀 더 저자가 원하는 바를 꽤뚫어볼 수 있을 것같다.

    • 이 책은 우선 구성이 깔끔하다.

      함수형 프로그래밍은 무엇인지, 언더스코프 라이브러리는 무엇인지.. 정의를 확실히 하고 책을 시작한다.

      그리고 총 9장으로 이루어진 책의 줄기를 따라 "함수형 프로그래밍 기법이 필요한 이유-정의-사례-요약"의 이해하기 쉬운

      사이클로 읽는 대상의 입장에서 쓰여진 느낌이다.

      중간 중간 어려운 개념들을 한 문장으로 간추려서 정리를 해주어서 이해를 돕고 있는데, 이를 통해 책을 읽다가 멘붕에 빠질 때마다

      다시 책에 집중할 수 있게 해주고 있다.

      하지만, 사실 이 책은 초심자나 입문자가 보기엔 다소 어렵고 선수지식인 자바스크립트나 객체 지향 프로그래밍에 대해서 어느 정도

      이해를 하고 있는 독자가 보기에 적합해 보인다. 하물며 기본적인 프로그래밍이라도 알아야 하지 않겠냐는 생각이 든다.

      끝으로, 이 책은 너무 진지하게 한 번에 읽기 위해 끙끙대기 보다는, 속독을 통해 책의 큰 구성을 이해하고, 여러 번 반복하며

      실습하며 보면 더욱 이해가 빠를 것이라고 생각한다.

      오라일리 책 답지 않게 얇은 책의 두께에 한 번 놀라고, 함수형 프로그래밍을 가지고 책 한권이 나올 수 있다는 데에 두번 놀라게 된다.

      함수는 자바스크립트 책의 한 개 장으로 들어가는 기능인 줄로만 알았는데... 이렇게 자세히 설명히 가능하다니 정말 중요한 기능임에 틀림이 없다.

      다만, 내 선수 지식이 얕고, 자바스크립트에 대해 잘 모르기 때문에 많은 내용을 이해하진 못해서 그 진가를 알지 못한 게 많이 아쉽다.



      하지만, 나는 큰 줄기를 이해하고, 책의 맨 마지막에 나온 레퍼런스를 공부해서 다시 함수형 프로그래밍에 도전해 볼 것이다.

      자바스크립트의 굉장한 매력을 느끼고, 공부해야 겠다는 동인(動因)을 제공했다는 면에서 이 책을 집어든 내 선택에 후회는 없다.

      함수형 프로그래밍, 자바스크립트, Underscore.js 라이브러리....이들에 대한 매력이 궁금하다면..이 책을 보길 권하고 싶다.

  • 내용이 없습니다.
    • 자바스크립트를 말하다 : 가장 간결하면서도 완벽한 자바스크립트 입문서

      악셀 라우슈마이어

    • 읽기 좋은 자바스크립트 코딩 기법: 유지보수가 쉬운 코드로 팀의 생산성을 높이자

      니콜라스 자카스

    • 인사이드 자바스크립트 : 핵심 개념과 원리를 정확하게. jQuery, Node.js, 클로저의 개념까지

      송형주 , 고현준

    • 더글라스 크락포드의 자바스크립트 핵심 가이드

      더글라스 크락포드(Douglas Crockford)

    • 더 나은 프로그래밍을 위한 코드골프 : 즐기면서 배우는 자바스크립트 코드 퍼즐과 알고리즘

      야나이 마사카즈

닫기

해당 상품을 장바구니에 담았습니다.
장바구니로 이동하시겠습니까?