1. 시작
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
2022년 4월달에 소개할 책은 「처음 배우는 엘릭서 프로그래밍 (쉽고 빠르게 익히는 함수형 프로그래밍) 」 입니다
엘릭서(Elixir) 다소 생소한 언어 일 수도 있습니다. 하지만 얼랭(Erlang)은 한번쯤 들어보셨을겁니다.
엘릭서(Elixir)는 바로 얼랭 가상 머신(BEAM) 위에서 동작하는 함수형, 동시성 프로그래밍 언어입니다.
클로저(Clojure)프로그래밍 언어가 Java 가상머신 위에서 동작하는 함수형 프로그래밍 언어 처럼 말입니다.
여기서 중요한 것은 왜 이 책을 읽어야 하는가? 입니다.
개발자라면 매년 프로그래밍 언어를 하나씩 배우는 것은 개발자 역량을 높이는 것중에 하나입니다.
이 말은 제가 한 말은 아니고, 개발자 필독서인 ‘실용주의 프로그래머’ 에서 나오는 말입니다.
‘매년 새로운 언어를 최소 하나는 배워라.
다른 언어는 동일한 문제를 다르게 푼다. 몇 개의 서로 다른 접근법을 알면 사고를 확장하고 판에 박힌 사고에 갇히는 걸 예방하는 데에 도움이 된다.
- 『실용주의 프로그래머』 중에서
마침 이 책을 쓴 저자(데이브 토머스)가 바로 그 유명한 ‘실용주의 프로그래머’의 공저를 하신분입니다. 와우~~~^^!!!
그런 분이 직접 쓴 책이라면, 읽어봐야 되지 않을까 생각합니다.
왜 이책을 읽어야 하는지? 더 중요한 이유가 있습니다.
하드웨어가 발전하면서 멀티코어, 분산, 실시간이 강조되고 있습니다.
얼랭 프로그래밍 언어 자체가 동시성, 고가용성을 위해서 만들어진 언어입니다.
그래서 견고한 동시성 분산 소프트웨어를 만들기 위해서 엘릭서는 도움을 충분히 줄 것 입니다.
이책의 특징은 크게 두가지 입니다.
-
배경 지식이 전혀 없어도 고수준 언어를 다뤄본 경험과 넘치는 모험심만 있다면 누구나 쉽고 빠르게 엘릭서 프로그래밍을 익힐 수 있다.
-
모든 문법과 함수를 세세하게 다루기보다는 간결하고 흥미로운 내용으로 구성하여 엘릭서와 함수형 프로그래밍이라는 새로운 세계로 이끌어준다.
2.목적 (책을 쓴 이유)
자~ 이제 책을 쓴 목적을 보도록 하겠습니다.
책 서문에 필자는 이 책에 대해서 다음과 같이 얘기하고 있습니다.
엘릭서에 대해서 궁금하시다면 지금부터 책의 내용을 살짝 보도록 하겠습니다.
3.책의 내용
그럼 이 책의 내용은 어떠한지 구조부터 알아보겠습니다.
구조는 총 3부(부록제외) 25장으로 구성되어 있으며, 프로그래밍 언어 책으로써 다소 가벼울수 있는(개인적인 생각) 두께의 책 (532페이지) 입니다.
먼저 1부 전통적 프로그래밍에서는 함수형 문법, 자료형 타입, 함수, 모듈, 컬렉션, 문자열, 바이너리, 제어문에 대해서 배울 수 있습니다.
그리고 프로젝트 기반 예제로 깃허브에서 이슈를 가져와 표시하는 이슈 트래커 앱(issues)을 만들어볼 수 있습니다.
그리고 몇가지 툴에 대해서 소개하고 있습니다. (1부는 50%이상 지면(532페이지 중에 286페이지)을 차지합니다)
2부는 엘릭서의 최고의 강점인 동시성 프로그래밍을 알려줍니다.
간단한 프로세스를 만들어서 실행해보거나, 프로세스 간 메시지를 주고 받거나, 모니터링하고, 분산 서비스를 구현하기 위해 노드를 알아야합니다.
이쯤되면 노드가 뭔지? 프로세스가 뭔지 헷갈리기 시작합니다. 노드는 ‘하나의 얼랭 VM’이라고 생각하고, ‘시스템’ 이라고 생각할 수 있습니다.
3부 엘릭서 심화는 너무 심오해서 이해하기 어려울 수 있습니다. 매크로, 비헤이비어(behaviour), use, 프로토콜에 대해서 다루고 있습니다.
매크로는 한마디로 프로그램을 조작하는 프로그래밍 기법이라고도 할 수 있습니다. 메타프로그래밍 이라고도 합니다. 언어 문법을 확장할 때 사용합니다. 일반적인 애플리케이션을 만들때는 사용할 일이 없습니다. 쓰면 복잡해질 수 있습니다. 그래서 심화 과정에 있나봅니다.
비헤이비어(behaviour) 는 ‘행동’으로 번역가능한데, 실제로 ‘행동’하고는 의미가 같지 않습니다. 저자는 비헤이비어(behaviour) 는를 한마디로 ‘함수 명세의 목록’이라고 말합니다. 객체지향 언어의 추상 클래스, 자바 언어의 ‘인터페이스’와 비슷합니다. 비헤이비어(behaviour)를 사용하는 이유는 인터페이스 모듈이 제대로 구현했는지, 컴파일러가 검증하게 함으로써 런타임 오류를 줄여줄 수 있기 때문입니다.
비헤이비어(behaviour)가 모듈 내부 동작이라면, 프로토콜은 모듈 외부에 위치하여 기존 모듈에 코드를 추가하지 않고도 모듈의 기능을 확장할 수 있습니다. 바로 함수의 다형성을 가능하게끔 합니다.
4. 책의 좋은 점과 아쉬운 점
4.1 좋은점(장점)
-
다소 귀한 프로그래밍 언어 책입니다.
엘릭서 프로그래밍 언어를 익힐 수 있는 국내 최초 번역서입니다.
이 책 이외에는 국내 번역된 책이나, 쓰여진 책이 없기 때문입니다.
그것 하나만 가지고도 이책을 충분히 읽어볼 가치는 있습니다.
-
배경지식이 없어도 엘릭서 프로그래밍을 배울 수 있습니다.(쉽지는 않겠지만…)
-
간결하고 흥미로운 내용으로 구성하였습니다.(모든 문법과 함수를 세세하게 다루지 않음, 심오한 것을 흥미롭다고 생각하시는 분들에게만 해당됨 ㅎㅎㅎ)
4.2 아쉬운점(단점)
-
실무에 사용가능한 프로젝트 기반 예제 기반이 아닙니다.
늘 프로그래밍 언어를 배울 수 있는 책에 대해서 저의 생각은 사용 가능한 프로젝트 기반 예제를 선호하는 편입니다.
-
프로그래밍 언어를 배우는데 재미있는 내용은 아닙니다.
배우는 일은 늘 힘들기 마련입니다.프로그래밍 언어의 대부분의 책은 딱딱할 수 밖에 없지만… 하지만 재미라는 소금을 넣는다면 좀 더 쉽고 신나게 배울수 있지 않을까? 라고 생각을 합니다.
-
배경지식이 없어도 배울수 있다고 했지만 사실은 프로그래밍 언어를 한가지라도 익히신 개발자분들이 읽어야 할 책입니다.
-
초보자의 경우 함수형에 대해서 이해가 어려울수 있으며, 자료형 또한 이해 접근이 쉽지는 않습니다.
여기서 책의 서평을 마무리 짓고자 합니다.
이책을 통해서 현재 시대에 맞는 새로운 언어를 배움으로써
-
서로 다른 접근법을 통찰하고
-
프로그래밍 사고를 확장하고,
-
기존 사고에 매몰되는 것을 방지하기를
희망합니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."