메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

처음 배우는 엘릭서 프로그래밍

쉽고 빠르게 익히는 함수형 프로그래밍

한빛미디어

번역서

판매중

  • 저자 : 데이브 토머스
  • 번역 : 권두호 , 최성락(감수자)
  • 출간 : 2022-03-14
  • 페이지 : 532 쪽
  • ISBN : 9791162245354
  • 물류코드 :10535
  • 초급 초중급 중급 중고급 고급
4.9점 (12명)
좋아요 : 2

모험을 즐기는 개발자라면! 동시성·함수형 프로그래밍의 세계로 떠나보자 

 

엘릭서는 고성능의 분산 얼랭 VM 위에서 동작하는 함수형 프로그래밍 언어다. 불변 데이터 구조와 액터 기반 동시성 모델을 깔끔하고 현대적인 문법으로 감싸고 있다. 엘릭서를 사용하면 그동안 시간을 잡아먹었던 데이터 정합성이나 애플리케이션 스케일링 같은 문제를 더는 걱정하지 않아도 된다.

 

함수형 프로그래밍이 어렵게만 느껴진다면 이 책을 펼쳐보자. 배경지식이 전혀 없어도 고수준 언어를 다뤄본 경험과 넘치는 모험심만 있다면 누구나 쉽고 빠르게 엘릭서 프로그래밍을 익힐 수 있다. 모든 문법과 함수를 세세하게 다루기보다는 간결하고 흥미로운 내용으로 구성하여 엘릭서와 함수형 프로그래밍이라는 새로운 세계로 이끌어준다. 책에서 소개하는 기능과 예제 코드는 엘릭서 최신 버전으로 테스트했으며 한국어판 부록에는 1.6 버전 이후 추가된 내용을 따로 수록했다.

 

Part 1 모험을 시작하자

코드 작성법, 도구와 컨벤션 등 엘릭서 프로그래밍 기초

 

Part 2 엘릭서의 핵심으로

액터 기반 동시성 모델과 높은 확장성 및 안정성을 위한 OTP

 

Part 3 더 깊이 빠져보자

메타프로그래밍을 위한 매크로와 모듈 기능 확장을 위한 비헤이비어 및 프로토콜

 

 

940.jpg

 

데이브 토머스 저자

데이브 토머스

좋은 것을 사람들에게 널리 알리는 일을 즐기는 프로그래머. 『실용주의 프로그래머』(인사이트, 2014 )를 공저했으며, 애자일 소프트웨어 개발 선언(https://agilemanifesto.org)을 만드는 데 참여했다. 『프로그래밍 루비』(인사이트, 2007)를 집필해 루비 언어를 세상에 알렸으며 『레일스와 함께하는 애자일 웹 개발』(인사이트, 2007)은 ‘레일즈 혁명’을 촉발하는 계기가 되었다.

권두호 역자

권두호

대한민국 수도권에 거주하는 IT 노동자. 엘릭서를 사용한 메신저 서비스의 코어 개발에 초기 멤버로 참여해 아키텍처 설계부터 다양한 기능 개발까지 폭넓은 분야를 담당했다. 사람의 발길이 많이 닿지 않은 영역을 개척하고, 그곳에서 매력을 발견해 다른 사람들에게 전파하기를 즐긴다. 소설과 맥주를 사랑한다.

최성락(감수자) 역자

최성락(감수자)

자바 서버 개발자로 경력을 시작했지만 Web 2.0 시기 자바스크립트에 빠져들어 HTML5 부흥기까지 웹 프런트엔드 엔지니어로 활동했다. 이후 루비와 엘릭서를 통해 다시금 서버 프로그래머로 전향, 현재는 금융 개발 분야에서 도메인 주도 설계를 접목하기 위해 노력하고 있다.

1장 빨간 약을 먹어보자

_1.1 프로그래밍은 데이터를 변형하는 과정이다

_1.2 엘릭서 설치하기

_1.3 엘릭서 실행하기

_1.4 이 책을 잘 읽는 방법

 

 

[1부 전통적 프로그래밍]


2장 패턴 매칭

_2.1 할당문: 당신이 생각하는 할당문이 아니다

_2.2 더 복잡한 매칭

_2.3 언더스코어로 값 무시하기

_2.4 변수는 매칭당 한 번씩만 바인딩된다

_2.5 등호를 바라보는 다른 시각

 

3장 불변성

_3.1 우리는 이미 불변 데이터를 알고 있다

_3.2 불변 데이터는 확실한 데이터다

_3.3 성능에 미치는 영향

_3.4 불변 데이터를 이용해 코딩하기

 

4장 엘릭서 기초

_4.1 내장 자료형

_4.2 값 타입

_4.3 시스템 타입

_4.4 컬렉션 타입

_4.5 맵

_4.6 바이너리

_4.7 날짜와 시간

_4.8 이름, 소스 파일, 컨벤션, 연산자 등등

_4.9 변수의 스코프

_4.10 마무리하며

 

5장 익명 함수

_5.1 함수와 패턴 매칭

_5.2 함수는 하나, 본문은 여러 개

_5.3 함수를 반환하는 함수

_5.4 함수를 인자로 전달하기

_5.5 함수는 엘릭서의 핵심이다

 

6장 모듈과 기명 함수

_6.1 모듈 컴파일하기

_6.2 함수의 본문은 블록이다

_6.3 함수 호출과 패턴 매칭

_6.4 가드 조건절

_6.5 기본 파라미터

_6.6 프라이빗 함수

_6.7 끝내주는 파이프 연산자: |>

_6.8 모듈

_6.9 모듈 속성

_6.10 모듈의 이름: 엘릭서, 얼랭, 아톰

_6.11 얼랭 라이브러리의 함수 호출하기

_6.12 라이브러리 찾기

 

7장 리스트와 재귀

_7.1 리스트의 머리와 꼬리

_7.2 머리와 꼬리를 사용해 리스트 처리하기

_7.3 머리와 꼬리를 사용해 리스트 만들기

_7.4 맵 함수 만들기

_7.5 리스트를 줄여 하나의 값으로 만들기

_7.6 더 복잡한 리스트 패턴

_7.7 리스트 모듈 실전

_7.8 리스트와 친해지기

 

8장 맵, 키워드 리스트, 집합, 구조체

_8.1 무엇을 써야 할까?

_8.2 키워드 리스트

_8.3 맵

_8.4 패턴 매칭하기, 맵 수정하기

_8.5 맵 수정하기

_8.6 구조체

_8.7 중첩된 딕셔너리 구조

_8.8 집합

_8.9 큰 힘은 큰 유혹을 낳는다


9장 속닥속닥 - 타입이란 무엇일까?

_9.1 엘릭서에서 타입이란


10장 컬렉션 다루기 - Enum과 Stream

_10.1 Enum: 컬렉션 처리하기

_10.2 Stream: 지연 계산하기

_10.3 Collectable 프로토콜

_10.4 컴프리헨션 문

_10.5 과거의 신성함으로부터 돌아오기

 

11장 문자열과 바이너리

_11.1 문자열 리터럴

_11.2 ‘문자열’이라는 이름

_11.3 작은따옴표 문자열은 문자 코드의 리스트다

_11.4 바이너리

_11.5 큰따옴표 문자열은 바이너리다

_11.6 바이너리와 패턴 매칭

_11.7 친숙하지만 아직 낯선

 

12장 제어 구문

_12.1 if와 unless

_12.2 cond

_12.3 case

_12.4 예외 발생시키기

_12.5 예외를 이용해 설계하기

_12.6 더 적은 것들로 더 큰 효과를

 

13장 첫 번째 프로젝트

_13.1 목표: 깃허브에서 이슈 가져오기

_13.2 1단계: mix로 새로운 프로젝트 만들기

_13.3 변형: 명령줄 파싱

_13.4 기본적인 테스트 작성하기

_13.5 리팩터링: 거대 함수 주의보

_13.6 변형: 깃허브에서 데이터 가져오기

_13.7 2단계: 라이브러리 사용하기

_13.8 변형: 응답 변환하기

_13.9 변형: 데이터 정렬

_13.10 변형: 첫 n개 항목 가져오기

_13.11 변형: 표 형식으로 포맷팅하기

_13.12 3단계: 명령줄 실행 파일 만들기

_13.13 4단계: 로깅 추가하기

_13.14 5단계: 프로젝트 문서 생성하기

_13.15 데이터 변형을 통해 코딩하기

 

14장 툴링

_14.1 IEx를 사용한 디버깅

_14.2 테스트

_14.3 코드 의존성

_14.4 서버 모니터링

_14.5 소스 코드 포맷팅

_14.6 물론 이것이 다가 아니다

 

 

[2부 동시성 프로그래밍]


15장 여러 프로세스 다루기

_15.1 간단한 프로세스

_15.2 프로세스 부하

_15.3 프로세스가 종료될 때

_15.4 병렬 맵 - 얼랭의 “Hello, World”

_15.5 피보나치 서버

_15.6 에이전트: 예고편

_15.7 프로세스 관점에서 생각하기

 

16장 노드 - 분산 서비스의 핵심

_16.1 노드에 이름 짓기

_16.2 프로세스에 이름 짓기

_16.3 입력, 출력, PID, 노드

_16.4 노드는 분산 처리의 기본이다

 

17장 OTP - 서버

_17.1 OTP가 제공하는 것

_17.2 OTP 서버

_17.3 젠서버 콜백

_17.4 프로세스에 이름 짓기

_17.5 인터페이스 다듬기

_17.6 서버를 컴포넌트로 만들기

 

18장 OTP - 슈퍼바이저

_18.1 슈퍼바이저와 워커

_18.2 워커 재시작 옵션

_18.3 슈퍼바이저는 신뢰성의 핵심이다

 

19장 애플리케이션 설계 예제

_19.1 Duper 소개

_19.2 Duper 애플리케이션

_19.3 잘 실행될까?

_19.4 엘릭서 애플리케이션 설계하기

 

20장 OTP - 애플리케이션

_20.1 부모님 세대의 애플리케이션이 아니다

_20.2 애플리케이션 명세 파일

_20.3 수열 프로그램을 OTP 애플리케이션으로 바꾸기

_20.4 슈퍼비저닝은 신뢰성 확보의 토대다

_20.5 코드 릴리스하기

_20.6 디스틸러리: 엘릭서 릴리스 매니저

_20.7 OTP는 믿을 수 없을 정도로 거대하다

 

21장 태스크와 에이전트

_21.1 태스크

_21.2 에이전트

_21.3 더 큰 예제

_21.4 에이전트와 태스크냐, 젠서버냐

 

 

[3부 엘릭서 심화]

 

22장 매크로와 코드 실행

_22.1 if 문 구현하기

_22.2 매크로는 코드를 주입한다

_22.3 내부 표현을 코드로서 다루기

_22.4 값 주입에 바인딩 사용하기

_22.5 매크로의 스코프 분리

_22.6 코드 조각을 실행하는 다른 방법

_22.7 매크로와 연산자

_22.8 한걸음 더 깊이

_22.9 엄청나게 더 깊이

 

23장 모듈 연결하기 - 비헤이비어와 use

_23.1 비헤이비어

_23.2 use와 __using __

_23.3 종합: 메서드 호출 추적하기

_23.4 use를 사용하자

 

24장 프로토콜 - 함수의 다형성

_24.1 프로토콜 정의하기

_24.2 프로토콜 구현하기

_24.3 사용 가능한 자료형

_24.4 프로토콜과 구조체

_24.5 기본 내장 프로토콜

_24.6 프로토콜과 다형성

 

25장 더 멋진 것들

_25.1 사용자 정의 시길 만들기

_25.2 여러 앱을 관리하는 엄브렐라 프로젝트

_25.3 아직 끝이 아니다!

 

 

[4부 부록]


부록 A 예외 - raise와 try, catch와 throw

A.1 예외 생성하기

A.2 catch, exit, throw

A.3 새로운 예외 정의하기

A.4 이제 이 부록을 무시하자

 

부록 B 타입 명세와 타입 검사

B.1 타입 명세의 사용처

B.2 타입 명세 작성하기

B.3 새 타입 정의하기

B.4 함수와 콜백의 타입 명세

B.5 다이얼라이저 사용하기

 

부록 C 엘릭서 1.6 이후 추가된 내용

C.1 로거 개선 (1.7)

C.2 릴리스 기능 추가 (1.9)

C.3 설정 API 개선 (1.9, 1.11)

C.4 정렬 기능 개선 (1.10)

C.5 범위 타입 개선 (1.12)

C.6 파이프라이닝 강화 (1.12)

C.7 스크립팅 개선 (1.12)

프로그래밍 커리어에 전환점이 필요하다면? 엘릭서로 함수형 프로그래밍 입문하기

 

멀게만 느껴졌던 함수형 프로그래밍. 엘릭서로 시작해보는 건 어떨까요? 엘릭서는 함수형 프로그래밍에 가치를 두면서도 생산성에 초점을 맞춘 실용적인 언어입니다. 이 책을 통해 여러분은 함수형 프로그래밍이 꼭 복잡하거나 수학적일 필요가 없다는 걸 알게 될 겁니다. 그리고 객체지향의 틀에서 벗어나 프로그래밍을 다른 방식으로 생각하게 되고, 무엇보다 코딩이 즐거워질 겁니다!

 

이 책은 대표적인 엘릭서 입문서인 데이브 토머스의 『Programming Elixir 1.6』를 전면 보강한 국내 1호 엘릭서 입문서입니다. 국내 엘릭서 사용자와 입문자를 만나기 위해 원서를 탄탄히 보완하고 풍부한 역주와 팁으로 설명을 더했습니다. 엘릭서 최신 버전을 반영한 예제 코드와 원서 출간 이후 업데이트된 내용을 정리한 한국어판 부록까지 든든히 챙겨, 매력적인 엘릭서의 세계로 탐험을 시작해보세요!

 

 

엘릭서는 참 재미있는 언어입니다. 메인 언어로 두기는 쉽지 않더라도 서브 언어로, 또는 취미로 알아두면 ‘이런 것도 있구나’하고 시야가 넓어지는 경험을 가져다주는 언어라고 생각합니다.

_’옮긴이의 말’ 중에서

 

이 책은 낯선 프로그래밍 언어의 문법과 프레임워크의 상세한 사용법에 집중하기보다는 그 이면에 깔린 함수형 프로그래밍, 액터 기반 설계를 위한 프로그래머의 사고방식 변화에 초점을 맞추고 있습니다. 이 책이 훌륭한 엘릭서 소개 책이면서도 훌륭한 함수형 프로그래밍 입문서가 될 수 있는 이유이기도 합니다.

_’감수자의 말’ 중에서

 

 

대상 독자

 

컴퓨터, 고수준 언어 지식 약간, 모험심만 있다면 누구나!

 

 

추천사

 

엘릭서와 얼랭 VM은 여러분이 소프트웨어를 작성하는 방식을, 앞으로 다가올 프로그래밍 커리어를 바꿔줄 겁니다.

_조제 발림, 엘릭서 창시자


1. 시작


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


2022년 4월달에 소개할 책은 처음 배우는 엘릭서 프로그래밍 (쉽고 빠르게 익히는 함수형 프로그래밍) 입니다

엘릭서(Elixir) 다소 생소한 언어 일 수도 있습니다. 하지만 얼랭(Erlang)은 한번쯤 들어보셨을겁니다. 


엘릭서(Elixir)는 바로 얼랭 가상 머신(BEAM) 위에서 동작하는 함수형, 동시성 프로그래밍 언어입니다.


클로저(Clojure)프로그래밍 언어가 Java 가상머신 위에서 동작하는 함수형 프로그래밍 언어 처럼 말입니다.


여기서 중요한 것은 왜 이 책을 읽어야 하는가? 입니다.

개발자라면 매년 프로그래밍 언어를 하나씩 배우는 것은 개발자 역량을 높이는 것중에 하나입니다.

이 말은 제가 한 말은 아니고, 개발자 필독서인 ‘실용주의 프로그래머’ 에서 나오는 말입니다.


 ‘매년 새로운 언어를 최소 하나는 배워라.

다른 언어는 동일한 문제를 다르게 푼다. 몇 개의 서로 다른 접근법을 알면 사고를 확장하고 판에 박힌 사고에 갇히는 걸 예방하는 데에 도움이 된다.

- 『실용주의 프로그래머』 중에서

 


마침 이 책을 쓴 저자(데이브 토머스)가 바로 그 유명한 ‘실용주의 프로그래머’의 공저를 하신분입니다. 와우~~~^^!!!

그런 분이 직접 쓴 책이라면, 읽어봐야 되지 않을까 생각합니다.


왜 이책을 읽어야 하는지? 더 중요한 이유가 있습니다.

하드웨어가 발전하면서 멀티코어, 분산, 실시간이 강조되고 있습니다.

얼랭 프로그래밍 언어 자체가 동시성, 고가용성을 위해서 만들어진 언어입니다.

그래서 견고한 동시성 분산 소프트웨어를 만들기 위해서 엘릭서는 도움을 충분히 줄 것 입니다.


이책의 특징은 크게 두가지 입니다.

  1. 배경 지식이 전혀 없어도 고수준 언어를 다뤄본 경험과 넘치는 모험심만 있다면 누구나 쉽고 빠르게 엘릭서 프로그래밍을 익힐 수 있다.


  1. 모든 문법과 함수를 세세하게 다루기보다는 간결하고 흥미로운 내용으로 구성하여 엘릭서와 함수형 프로그래밍이라는 새로운 세계로 이끌어준다. 



2.목적 (책을 쓴 이유)

자~ 이제 책을 쓴 목적을 보도록 하겠습니다.


책 서문에 필자는 이 책에 대해서 다음과 같이 얘기하고 있습니다.


저는 프로그래밍 언어 ‘덕후’입니다. …….

엘릭서가 얼마나 대단한지 사람들이 좀 봐줬으면 합니다.

짧고 흥미로운 내용으로 채우고 싶었습니다.


엘릭서에 대해서 궁금하시다면 지금부터 책의 내용을 살짝 보도록 하겠습니다.




3.책의 내용

그럼 이 책의 내용은 어떠한지 구조부터 알아보겠습니다.

구조는 총 3부(부록제외) 25장으로 구성되어 있으며, 프로그래밍 언어 책으로써 다소 가벼울수 있는(개인적인 생각) 두께의 책 (532페이지) 입니다.

먼저 1부 전통적 프로그래밍에서는 함수형 문법, 자료형 타입, 함수, 모듈, 컬렉션, 문자열, 바이너리, 제어문에 대해서 배울 수 있습니다.

그리고 프로젝트 기반 예제로 깃허브에서 이슈를 가져와 표시하는 이슈 트래커 앱(issues)을 만들어볼 수 있습니다. 

그리고 몇가지 툴에 대해서 소개하고 있습니다. (1부는 50%이상 지면(532페이지 중에 286페이지)을 차지합니다)


2부는 엘릭서의 최고의 강점인 동시성 프로그래밍을 알려줍니다. 

간단한 프로세스를 만들어서 실행해보거나, 프로세스 간 메시지를 주고 받거나, 모니터링하고, 분산 서비스를 구현하기 위해 노드를 알아야합니다. 

이쯤되면 노드가 뭔지? 프로세스가 뭔지 헷갈리기 시작합니다. 노드는 ‘하나의 얼랭 VM’이라고 생각하고, ‘시스템’ 이라고 생각할 수 있습니다.


3부 엘릭서 심화는 너무 심오해서 이해하기 어려울 수 있습니다. 매크로, 비헤이비어(behaviour), use, 프로토콜에 대해서 다루고 있습니다.

매크로는 한마디로 프로그램을 조작하는 프로그래밍 기법이라고도 할 수 있습니다. 메타프로그래밍 이라고도 합니다. 언어 문법을 확장할 때 사용합니다. 일반적인 애플리케이션을 만들때는 사용할 일이 없습니다. 쓰면 복잡해질 수 있습니다. 그래서 심화 과정에 있나봅니다.

비헤이비어(behaviour) 는 ‘행동’으로 번역가능한데, 실제로 ‘행동’하고는 의미가 같지 않습니다. 저자는 비헤이비어(behaviour) 는를 한마디로 ‘함수 명세의 목록’이라고 말합니다. 객체지향 언어의 추상 클래스, 자바 언어의 ‘인터페이스’와 비슷합니다. 비헤이비어(behaviour)를 사용하는 이유는 인터페이스 모듈이 제대로 구현했는지, 컴파일러가 검증하게 함으로써 런타임 오류를 줄여줄 수 있기 때문입니다.

비헤이비어(behaviour)가 모듈 내부 동작이라면, 프로토콜은 모듈 외부에 위치하여 기존 모듈에 코드를 추가하지 않고도 모듈의 기능을 확장할 수 있습니다. 바로 함수의 다형성을 가능하게끔 합니다.



4. 책의 좋은 점과 아쉬운 점


4.1 좋은점(장점)

  1. 다소 귀한 프로그래밍 언어 책입니다.

        엘릭서 프로그래밍 언어를 익힐 수 있는 국내 최초 번역서입니다.

이 책 이외에는 국내 번역된 책이나, 쓰여진 책이 없기 때문입니다.

        그것 하나만 가지고도 이책을 충분히 읽어볼 가치는 있습니다.


  1. 배경지식이 없어도 엘릭서 프로그래밍을 배울 수 있습니다.(쉽지는 않겠지만…)


  1. 간결하고 흥미로운 내용으로 구성하였습니다.(모든 문법과 함수를 세세하게 다루지 않음, 심오한 것을 흥미롭다고 생각하시는 분들에게만 해당됨 ㅎㅎㅎ)


4.2 아쉬운점(단점)


  1. 실무에 사용가능한 프로젝트 기반 예제 기반이 아닙니다. 

늘 프로그래밍 언어를 배울 수 있는 책에 대해서 저의 생각은 사용 가능한 프로젝트 기반 예제를 선호하는 편입니다.


  1. 프로그래밍 언어를 배우는데 재미있는 내용은 아닙니다.

배우는 일은 늘 힘들기 마련입니다.프로그래밍 언어의 대부분의 책은 딱딱할 수 밖에 없지만… 하지만 재미라는 소금을 넣는다면 좀 더 쉽고 신나게 배울수 있지 않을까? 라고 생각을 합니다.


  1. 배경지식이 없어도 배울수 있다고 했지만 사실은 프로그래밍 언어를 한가지라도 익히신 개발자분들이 읽어야 할 책입니다.


  1. 초보자의 경우 함수형에 대해서 이해가 어려울수 있으며, 자료형 또한 이해 접근이 쉽지는 않습니다.


여기서 책의 서평을 마무리 짓고자 합니다.


이책을 통해서 현재 시대에 맞는 새로운 언어를 배움으로써


  1. 서로 다른 접근법을 통찰하고

  2. 프로그래밍 사고를 확장하고,

  3. 기존 사고에 매몰되는 것을 방지하기를


희망합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

추천사 일부 발췌 : 얼랭 가상 머신에서는 모든 코드가 여러 작은 프로세스에서 동시에 실행됩니다. 각 프로세스는 각자의 상태를 가지고 메시지를 통해 서로 소통합니다. 모든 커뮤니케이션이 메시지 전달을 통해 일어나므로 얼랭 가상 머신의 중개를 통해 같은 네트워크 안에 있는 서로 다른 머신끼리도 메시지를 주고 받을 수 있습니다. 분산 소프트웨어를 만들기에는 최적의 환경이지요!

하지만 얼랭 생태계에는 뭔가 부족한 부분이 있다고 느꼈습니다. 메타프로그래밍, 다형성, 프로덕션 환경에서 사용할 수 있는 툴과 같이 일상적으로 사용하는 기능에 대한 지원이 더 필요했지요. 그래서 엘릭서는 그런 필요로부터 탄생했습니다.

엘릭서는 함수형 프로그래밍을 실용적으로 접근한 결과물입니다. 함수형 프로그래밍에 가치를 두면서도 생산성에 초점을 맞췄지요. 동시성은 엘릭서 소프트웨어의 뼈대 입니다. 가비지 컬럭션이 메모리 관리의 늪에서 개발자를 해방했듯 엘릭서는 낡은 동시성 관리 메커니즘으로 부터 여러분을 해방해줄 겁니다. 그리고 동시성 관리 코드를 작성하는 일이 즐거워질 겁니다.

옮긴이의 말 : 국내 IT서적 중 처음으로 엘릭서를 다룬 책이고 , 이 책을 통해 국내에 엘릭서 사용자가 조금이라도 늘면 좋겠다는 생각과 앞으로 관련 주제의 번역서가 이어서 나오기를 바라는 마음을 담아 번역을 했다고 합니다.

 

 

1.4 이 책을 잘 읽는 방법

이 책은 엘릭서의 모든 내용을 처음부터 다루는 레퍼런스 형식의 책은 아니었다. 대신 무엇을, 언제 질문해야 하는지를 충분히 알 수 있도록 구성을 했다. 책을 읽으면서 코드를 작성해보되, 거기에서만 그치지말고 스스로에게 질문을 던지고 인터넷으로 답을 찾아보는게 좋다고 한다.

- 객체지향 프로그래밍이 코드를 설계하는 유일한 방법은 아니다.

- 함수형 프로그래밍은 복잡하거나 수학적이지 않아도 된다.

- 프로그래밍의 기본이 할당문, if문, 반복문은 아니다.

- 동시성 프로그래밍에 락, 세마포어, 모니터 같은 것들이 반드시 필요한 것은 아니다.

- 프로세스가 꼭 비싼 자원은 아니다.

- 메타프로그래밍은 언어에 얽매여 있지 않다.

 

- 아무리 일이라도, 프로그래밍은 재밌어야 한다.

 

 

서평 : C++, C#은 당연히 다르고 함수형 언어인 자바스크립트 하고도 많이 다른 언어였다. 비슷한 언어가 있는진 모르겠지만, 내가 아는 언어 중에서는 비슷한건 없었다. 대략적으로 어떻게 다른지 비교해보면서 책을 간단하게 읽어보았고, 생각보다 상당히 매력적인 언어였다.

문득 지인이 게임 UI 개발에 엘릭서 언어를 사용하고 있다고 했던 것이 생각이 났다. 그래서 나중에 라도 다시한번 꼼꼼히 읽어볼 가치가 있는 책이라고 생각된다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[처음 배우는 엘릭서 프로그래밍] 제목에서의 직관적인 느낌은 엘릭서에 대해 전혀 모르는 중급 개발자 중에서 "함수형 프로그래밍의 개념을 알고 싶은 누군가"나 "함수형 프로그래밍 개념이 있는 누군가"가 엘릭서 문법 처음부터 끝까지 정리하고 싶을 때 찾는 책이라 생각했습니다. 본 도서에는 부담되지 않는 분량으로 문법뿐만 아니라 엘릭서를 개발하기 위한 유용한 도구 사용법, 실제 개발 시 검색 및 경험을 통해 파악하게 되는 내용이 포함되어 있습니다. 만일 엘릭서를 완벽하게 정리하고 싶다면 이 책만으로 궁금증을 명쾌히 해결해 주지는 못할 겁니다.

 

엘릭서에 관심이 있을 만한 호기심 많은 독자라면, 예를 들어 자동차 운전 시 브레이크를 밟으면 속도가 줄어든다는 피상적인 설명보다는 브레이크를 밟으면 바퀴에 연결된 브레이크 패드를 잡아주어 마찰력 증가로 자동차가 서게 된다는 내용도 궁금할 것 같습니다. 객체지향과는 다른 독특한 방식의 동작이라 액터(프로세스)의 내부 구조나 얼랭VM의 세부내용이 부족한 것이 아쉬웠습니다.

 

공식 홈페이지 문서(https://elixir-lang.org/getting-started/introduction.html)와 실습을 통해 배울 수 있는 Exercism(https://exercism.org/tracks/elixir), 포럼(http://elixirforum.com/)을 이용하여 능동적인 학습과 Q&A를 병행하고 슬랙(https://elixir-slackin.herokuapp.com/)이나 디스코드(https://discord.gg/elixir)를 활용하여 책의 내용을 보충할 필요가 있습니다.

 

하지만 다시 객관적으로 생각해 보면, 특정 기술을 한 권의 책으로 마스터할 수 있다는 것은 너무나 이상적입니다. 실제 그런 바이블류는 모두 봐지지도 않고요. 아마도 대부분의 독자들에게 웹페이지 API를 문서화한 도서에 관심이 없을 것입니다. 본 도서는 엘릭서의 본질과 엘릭서틱하게 생각하는 방법을 전달하려 노력했습니다. 한국어 잘 번역되어 부담 없이 시작할 수 있는 엘릭서의 좋은 출발점이 됩니다. 또한 책 전반적으로 객체지향 프로그래밍에 익숙한 사람들을 고려하여 엘릭서를 맛보거나 실무에 활용하려는 사람들을 고려하며 기술되었습니다. 예를 들어 if나 case에 해당하는 제어 구문에 대한 내용은 12 챕터가 되어서야 등장합니다. 12챕터는 파트1에서 기본 문법을 설명하는 가장 마지막 챕터에 해당됩니다. 또한 챕터 중간에 방금 읽은 내용과 연관된 연습문제를 제공합니다. 때로는 포인트를 살짝 벗어난 내용도 있지만 개인적으로 개념의 숙지(?) 여부를 스스로 확인할 수 있어 좋았습니다.

 

또한 매우 솔직한 어투로 작성되었습니다. 예를 들면 중단점을 설명하면서 마지막에 기술된 아래와 같은 내용입니다.

"고백할 것이 있다. 필자는 엘릭서 중단점 기능을 이 책을 쓰면서 처음 사용해 봤다. 함수 중간에 실행을 중단할 목적으로 코드를 추가로 넣어야 한다면 필자는 그냥 예외를 발생시켜서 필요한 정보를 얻을 것이다. ... 그러니 필자가 디버거를 사용하지 않는다고 해서 당신까지 디버거에서 멀어지지는 않기를 바란다."

명성 있는 저자의 솔직한 면은 책의 신뢰성을 높여주는 것 같습니다.

 

본 도서는 3개의 파트로 되어 있습니다. 첫 번째 파트인 [전통적 프로그래밍]은 패턴 매칭 같은 핵심 개념을 소개하므로, 다른 함수형 언어를 접해본 독자라면 훑어볼 수 있습니다. 두 번째 파트인 [동시성 프로그래밍]은 프로세스, 노드(얼랭 VM), OTP와 같은 개념과 젠서버 등을 다룹니다. 얼랭과 같은 함수형 프로그래밍 언어를 취미로 접해본 개발자도 충분히 재밌게 읽을 수 있습니다. 특히 중요한 액터 모델의 동시성 개념은 머리로 이해하지만 가슴으로 받아들이기 힘든 것 처럼 익숙wl 않을 수 있는데, 객체지향 프로그래머의 관점에서 설명하는 것 같아 친숙하게 읽을 수 있었습니다. 엘릭서의 핵심 원리는 잘 전달하고 있지만 조금만 더 깊게 들어가 줬으면 하는 아쉬움이 남는 파트입니다. 세 번째 파트인 [엘릭서 심화]에서는 매크로, 프로토콜 등을 다룹니다. 특히 mix 등의 도구를 소개해 주는 내용이 좋았습니다.

 

객체지향 프로그래밍에 대한 경험이 있다면 더 좋은 한 개 이상 언어에 익숙한 독자를 대상으로 부담되지 않는 분량의 핵심 내용을 훑고 함수형 프로그래밍에 대한 훌륭한 배경지식을 함양시켜 줍니다. 또한 웹문서 및 포럼 등을 통해 필요한 내용을 파악할 수 있는 시야를 확보해 주어 실무에 활용할 수 있는 좋은 출발점이 되어 줍니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이 책은 두 가지 흥미를 끄는 요소를 가지고 있습니다. 하나는 저자가 그 유명한 데이브 토머스(Dave Thomas)로, 단발엔진 비행기 조종이라는 비싼 취미를 충당하기 위해 프로그래밍을 업무로 한다는 바로 그 실용주의 프로그래머의 저자 중 한명이라는 점과, 현재 국내 유일의 한글로 된 엘릭서(Elixir) 관련 도서라는 점입니다. 원 저자의 명성을 생각하면 고민할 필요도 없겠지만, 저처럼 유일한 번역서라서 선택의 여지없이 사 본 책에 실망을 해 본 경험이 있는 경우라면 유일한 번역서인데 사 봐도 괜찮을 지 우려가 될 수 있을 겁니다.

 

명불허전 이랄까요, 책을 읽는 내내 역시 실용주의 프로그래머의 저자라는 감탄을 하며 볼 수 있었습니다. 딱딱한 설명과 지루한 API 나열로 구성된 여타 다른 일반적인 프로그래밍 언어 서적과는 달리, 뭐랄까 마치 에세이 같은 걸 읽는 느낌을 받을 수 있도록 주제와 연관된 다양한 얘기와 관련 내용을 부드럽게 설명을 이끌어 갑니다. 특히 개인적으로는 엘릭서 자체 보다 얼랭(Erlang)에 대해 궁금한 부분이 많았는데 관련된 호기심도 충분히 해소할 수 있었습니다. 직접 엘릭서를 이용해 개발하시는 분의 번역이라 그런지 꼼꼼한 역주로 가득 차 있어 이 부분도 많은 도움이 되었습니다.

 

적어도 한국에서는 비주류 언어입니다만, 최근 달빛조각사 같은 모바일 MMORPG 서버 개발에도 사용되는 등 앞으로 더욱 많은 영역에서의 활용이 기대되는 엘릭서 언어에 관심이 있거나, 함수형 언어에 관심이 있는 분들께 추천 드립니다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

Screen Shot 2022-04-24 at 10.42.03 PM.png

 

 

 함수형 프로그래밍 언어인 엘릭서 입문서입니다.

 

 지금까지 다뤄본 프로그래밍 언어는 다양했지만, 함수형 프로그래밍언어를 직접 사용해 본건 이번이 처음이었습니다.

 

처음 프로그래밍은 c언어를 활용한 절차지향 프로그래밍 기법을 사용하여 배워왔고,

 

그 이후, JAVA와 C++을 사용하여 객체지향 프로그래밍을 배웠습니다.

 

막연히 함수형 프로그래밍은 많은 수학적 배경지식을 필요로 하고, 매우 어려운 방식일거라 생각하여

 

지금까지 시도해보지 않았었지만, 이번 기회를 통해 함수형 프로그래밍에 대한 선입견을 완전히 깨부셨습니다.

 

우선 이 책은 엘릭서의 레퍼런스 가이드라기 보단, 매우 쉽게 쓰여진 입문서라고 보면 좋을 것 같습니다.

 

여러가지 문법이나 함수가 사용법에 따라 나열되어 있지는 않지만, 순서대로 따라읽다보면 자연스레 사용법을 익힐 수 있는 

 

구조로 되어있습니다.

 

책의 첫 챕터에 나와 있듯이, 이 책을 읽으며 다음과 같은 내용을 느낄 수 있습니다.

 

 - 객체지향 프로그래밍이 코드를 설계하는 유일한 방법이 아님

 - 함수형 프로그래밍은 복잡하거나 수학적이지 않아도 됨

 - 프로그래밍의 기본이 할당문, 조건문, 반복문은 아님

 - 동시성 프로그래밍에 락, 세마포어, 모니터 같은 장치들이 꼭 필요한것은 아님

 - 프로세스가 꼭 비싼 자원은 아님

 - 메타 프로그래밍은 언어에 얽메여 있지 않음

 - 아무리 일이라도, 프로그래밍은 재밌어야 함

 

 실제로 이 책을 읽으면서 현대 프로그래밍의 유일한 설계 방식인줄 알았던 객체지향외의 다른 설계방법을 알게 되었고,

 

막연히 어려울 것만 같았던 함수형 프로그래밍을 쉽고 재밌게 접해보았으며,

 

동시성 프로그래밍에 대해 더욱 더 깊은 이해도가 생겼습니다.

 

 

함수형 프로그래밍을 한번도 접해보지 못했던 개발자분들, 동시성 프로그래밍에 관심있으신 개발자분들에게 

 

강력히 추천드리는 엘릭서 입문서 입니다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

어디선가 web3.0에 가장 어울리는 언어가 elixir라는 이야기를 들었다. (안타깝게도 이유는 기억나지 않는다). 그래서 이번에 나는 리뷰어다에서 처음 배우는 엘릭서 프로그래밍을 받고 매우 기분이 좋다. elixir는 얼랭(erlang)의 생태계를 계승하는 언어이고 생성된 코드는 EVM(Erlang Virtual Machine)에서 동작하게된다.

엘릭서는 다음과 같은 특징을 가진다.

  • 모든것이 expression이다
  • 메타 프로그래밍을 지원한다.
  • 프로토콜이라는 메카니즘으로 다형성을 지원한다.
  • 엑터모델(메시지 전달방식)을 지원한다
  • 루프 대신 재귀와 고차원 함수를 강조한다.
  • Lazy와 async collections를 지원한다.

대략 위와같은 특징을 가지고있고, 다들 알겠지만 함수형 프로그래밍 언어이다.
위와 같은 특징으로 인하여 발생되는 사항으로는 기존의 프로그래밍언어(주로 객체지향 언어)를 사용할때와는 완전히 다른 사고를 가지고 개발을 진행 해야한다는 것이다.
사실 책을 읽어보기 전 까진 이런 사실도 모르고있었다. 개인적으로는 책의 맨 처음 나오는 할당문 개념에서부터 기존의 코딩 방법과의 차이점을 느꼇고
책에서 이해하기 쉽도록 설명을 해주고 다양한 예시를 보여줘서 그리 어렵지 않게 이해할 수 있었다.

처음배우는 엘릭서 프로그래밍은 새로운 개념, 방식의 언어에 쉽게 적응할 수 있도록 내용을 구성하고있고, 중간 중간 나오는 연습문제가 특히 도움이된다.
책의 구성은 엘릭서의 문법과 더불어 유용한 라이브러리의 사용법, 실제 적용해볼 수 있고, 사용해보기 좋은 프로젝트 예제 등이나와있기에 처음 입문하는 책으로 매우 좋은 구성을 가지고있다.

비단 엘릭서 뿐만 아니라 함수형 프로그래밍이 처음인 개발자라면 처음 배우는 엘릭서 프로그래밍으로 함수형과 엘릭서에 입문을 하는것도 좋은 방법이라는 생각이 든다.

물론 본인이 책한권 읽었다고 엘릭서에 대한 많은것을 알게됐다기보다는 특징과 사용법을 어느정도 알게 된 것 이지만, 이제 기초는 다저진듯하고 재미있는 프로젝트를 구성해봐야겠다.



출처: https://devms.tistory.com/578 [요가하는프로그래머]

[나는 리뷰어다] 엘릭서에 대한 지식을 얻을 수 있는 책, 처음 배우는 엘릭서 프로그래밍


 


 

* 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다


글 / 사진 : 서원준 (news@toktoknews.com)


겨울이 지나고 어느덧 4월의 끝자락이다. 매번 느끼는 거지만 시간은 엄청 빨리 간다. 벚꽃은 졌지만 가정의달 5월이 다가온다. 사회적 거리두기가 완전히 풀리면서 일상도 회복될 조짐이 보인다. 물론 아직 변이 바이러스가 기다리고 있으므로 쉽게 마음을 놓을 수는 없겠지만 일상으로의 회복에 대한 기대치는 점점 커져가고 있다. 필자는 3월 중순부터 약 40일을 고생했다. 편도선이 붓더니 코로나19 확진 판정을 받았고 4월 말이 된 지금도 잔기침과 가래로 고생하고 있다.


필자는 [나는 리뷰어다] 도서를 고를 떼 비교적 깐깐하게 고른다. 어떤 프로그래밍이 요새 소위 말해 “뜬다”는 것이면, 일단 신청하고 본다. 그런데 필자가 처음 “엘릭서” 라는 프로그래밍이 있다는 것을 알았을 시점은 필자가 코로나19 확진 판정을 받은 뒤 (4월초)의 일이었다. 엘릭서가 프로그래밍 이름이라는 것을 필자는 그제서야 처음 파악하게 되었다. 


엘릭서는 함수형 프로그래밍이자 동시성 프로그래밍이다. 엘릭서는 현재 1.13까지 나와 있으나 원서(영어)는 1.6을 설명하고 있다. 다만 역자의 노력으로 1.13에서도 웬만한 프로그래밍은 동작이 가능하다. 


처음 배우는 엘릭서 프로그래밍은 프로그래밍 커리어에 있어 전환점이 필요한 분들이 보면 좋은 책이다. 함수형 프로그래밍의 입문 성격이 짙은 도서라고 한다. 앨릭서의 특징은 함수형 프로그래밍에 가치를 두면서도 생산성에 초점을 맞춘 실용적인 언어다. 


이 책을 통해 이루고자 하는 목표는 함수형 프로그래밍이 꼭 복잡하거나 수학적일 필요가 없다는 것을 알게 될 것이고 객체지향의 틀에서 벗어나 프로그래밍을 다른 방법으로 생각하게 되고, 무엇보다 즐거운 코딩 환경이 만들어 지게 되는 효과가 있다. 


처음 배우는 엘릭서 프로그래밍은 국내 최초의 엘릭서 입문서로서 국내 엘릭서 사용자와 입문자를 만나기 위해 원서를 탄탄히 보완하고 풍부한 역주와 팁으로 설명을 더했습니다. 엘릭서 최신 버전을 반영한 예제 코드와 원서 출간 이후 업데이트된 내용을 정리한 한국어판 부록까지 든든하다.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


처음 배우는 엘릭서 프로그래밍 서평을 마치면서 


C언어, 자바, 베이직, 파이썬 등은 한번쯤 들어본 경험을 가진 프로그래밍 언어들이고 필자도 귀가 따갑도록 들어본 프로그래밍이다. 여기에 엘릭서가 추가되었다. 처음 배우는 엘릭서 프로그래밍은 엘릭서 입문용 교재이지만 이 내용을 알아들으려면 프로그래밍에 대한 전반적인 지식이 꼭 필요하다. 그래서 이 책을 제대로 이해아려면 프로그래밍에 대한 기본 지식이 갖추어져 있어야만 한다. 

달마다 그렇듯 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받았습니다. 나는 처음 프로그래밍을 시작할 때는, C언어를 시작으로 c++, c#, 자바, 자바스트립트, 파이썬 등 왠만한 모든 언어들을 다 배우는 프로그래밍 언어 마스터(포켓몬 마스터)를 꿈꾸었으나, C를 배우고, 파이썬을 배우고 나서 취미 프로젝트아니면 딱히 활용할 곳도 없던 학생이던 나는 아두이노나 라즈베리파이가 주 사용대상이었던 만큼 다른 언어를 배울 큰 필요성을 느끼지 않고 있었다. 그 후에도 앱만들 능력은 있어야 할 것 같아 자바를 잠깐 공부해봤었는데, 형식상 매우 간결한 파이썬에 너무 익숙해진 나머지, 금방 질려버렸고, ROS 때문에 C++을 잠깐본 이후로는 다른 언어는 여전히 큰 관심을 두지 않고 있다. 심지어 최근에는 친구가 Lua라는 언어로 게임 만든다고 해서 잠깐 봤는데, 대중적인 언어에 비해 확장성과 안정성, 사용성과 무엇보다 풍부하지 못한 참고자료 등 여러 단점을 느낀것도 영향이 되었던 것 같다. 이렇게 이미 광범위하게 사용되고, 성능적 측면에서 조금 아쉬워도 그냥 엄청나게 많은 사람들이 쓰니까 그냥 쓰기 때문에, 이런 점이 개량된 신생 언어들의 탄생을 막고있는 요소처럼 보이긴 하지만, 대중적으로 사용되는 만큼 새 배포판이 나오면서 그 문제들은 서서히 개선되고 있기 때문에 신생언어들의 탄생이 불필요한 것처럼 느껴지기도 한다. 근데 지금 어떤 언어로 프로그래밍을 하고 있던 쉽고 빠르게 배워서 쓸 수 있고, 이거 좋더라라는 평이 몇 줄 적혀있으면 무시할 수 없다. 그래서 이번에는 이 책을 읽어보았다. 엘릭서는 연금술에서 등장하는 만능약 개념이라고 한다. 그래서 구글에 검색하면 판타지물 자료만 잔뜩 나온다. 엘릭서는 얼랭의 VM환경에서 동작하게 설계된 언어라고한다. 얼랭이 엘릭서의 탄생에 영향을 준 것과는 반대로 나는 엘릭서를 통해 얼랭을 알게 되었다. 그래서인지 얼랭도 엘릭서와 비슷한점이 많아보인다. 파이썬처럼 함수형 프로그래밍이라는 특징때문에 보이는 문접적인 형식이라던지, 동시성 프로그래밍 언어라던지 말이다. 다른 언어 책들과는 달리 우리언어 요즘 뜨는 이 분야에서 엄청 많이 쓰여서 배워야돼요! 하는 홍보문구같은게 없어서, 그래서 이 언어를 배운다면 어디에 써야하나 하는 생각이 들었었다. 근데 얼랭에 대한 나무위키를 보니 병렬작업이 필요한 통신분야에 유용하게 쓰일 것 같다는 생각이 든다. 책이 흔한 프로그래밍 기초서처럼 언어의 문법을 익히는 것으로 집필된 것이 아니라, 엘릭서라는 새로운 언어를 소개하고, 프로그래밍 입문자/초보자 들을 대상으로 하기보단 기존 프로그래밍 관련 분야에서 일하는 사람들에게 여러분이 쓰는 언어와 비슷하게 생기고, 개량한 새 언어를 소개합니다! 하는 목적으로 나왔기 때문에, 시작부터 hello, world! 로 와! 방금 프로그래밍으로 뭔가 만들어냈어! 하는 희망을 주고 시작하기보단 다소 전문적인 내용으로 책을 시작을 하는 것 같은 느낌이 있었다. 바쁘기도 하고, 이미 특정 언어에 너무 익숙해져서 그런지 엘릭서를 실습해보진 않았다. 그래도 과연 엘릭서가 기존 언어들 사이에서 새로운 점유층을 형성할 수 있을지 기대된다.

 

 

KakaoTalk_Photo_2022-04-24-20-13-18.jpeg

 

 

> 이 리뷰는 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

최근에 유행하고 있는 프로그래밍 패러다임인 만큼 개발자라면 함수형 프로그래밍에 대해서 한번쯤은 들어보고 공부해본 경험이 있을 것이다. 엘릭서는 언어 자체가 함수형 프로그래밍으로 만들어져 있는 언어이고, 이 책은 엘릭서에 대한 입문서이다.

 

책은 한빛미디어의 처음배우는 시리즈 처럼 기초적인 부분에 대해서 주로 다루고 있다. 처음배우는 시리즈의 특징답게 초반에는 기본적인 문법을 다루고 뒤로 가면 엘릭서를 활용할 수 있는 실습을 다루고 있는 것이 특징이다. 특히나 개인적으로 엘릭서에 대해서는 잘 모르지만 간단하게 어떻게 사용해야 하는지 알 수 있었던 것 같다. 함수형 프로그래밍 특징 답게 코드가 간결한 것이 실습하면서 가장 신기했던 것 같다.

 

1부에서는 앞에서 말한대로 기본적인 문법에 대해서 알려준다. 함수형 프로그래밍 답게 패턴매칭과 불변성에 대한 설명을 해준다. 그리고 나서는 자료형, 연산자 같은 기본 문법을 알려준다. 그 다음으로는 함수에 대해서 설명한다. 함수형 프로그래밍 답게 익명함수부터 이것저것 알려주고 리스트와 재귀에 대한 설명을 해준다. 이 부분은 엘릭서를 공부하는 데 있어 중요한 부분으로 생각되므로 자세히 이해하고 넘어가야 할 것 같다. map, reduce 와 같은 다양한 함수를 가지고 함수들을 다시 중첩해가며 설명해준다. 함수에 대한 이야기가 끝이나면 다른 프로그래밍 문법 설명 방식과 마찬가지로 컬렉션, 조건문 등을 설명하고 간단하게 앞에서 배운 문법을 가지고 콘솔을 찍을 수 있는 프로그래밍을 만들고 1부가 마무리된다.

 

2부에서는 여러 프로세스를 다루는 방법에 대해서 배운다. 엘릭서하면 생각난다는 OTP 에 대해서 설명한다. 개인적으로는 이번에 공부해보면서 처음 듣는 용어여서 재미있었다. 그 후에는 여러 분산 서버를 어떻게 다루는지 설명한다. 3부에서는 매크로 사용법과 모듈연결 등에 대해서 알려준다. 

 

책을 읽으면서 함수형 프로그래밍을 어떻게 해야 할지에 대해서 한번쯤 다시 생각해보게 만든 책이였던 것 같다. 이전에는 함수형 언어로 만들어지지 않은 언어를 가지고 비슷하게 만들려고 노력하면서 이해가 잘 되지 않았었는데, 엘릭서는 언어 자체가 그런지 몰라도 책을 읽으면서 이전보다 이해가 잘 되었던 것 같다. 대부분의 회사가 엘릭서를 사용하고 있지는 않기 때문에 무조건 읽을 것을 추천하고 싶지는 않고, 새로운 언어를 한번쯤 공부해보고 싶을때 읽어보면 좋을 것 같다.

 

  책을 펼치고 "엘릭서"에 대해 배우는 과정은 마치 내가 [이상한 나라의 앨리스]에서 토끼굴로 향하는 앨리스가 된 듯한 기분이었다. 프로그래밍을 배운지 그리 오래 된 것은 아니지만, Matlab과 Python, C++만 사용해본 사람으로서 Elixir를 배울때의 느낌은 Matlab만 쓰다가 Python을 처음 배울때와는 또 사뭇다른 느낌이었다. '함수형 프로그래밍'이라는 개념도 새롭고, elixir의 보석같기도, 액체같기도 한 아이콘도 새롭고 신선했다. 그럼에도 서론에서의 첫 두 문단은 호기심을 가지고 엘릭서를 탐험해보기에 충분한 동기를 제공하였다.

 

  "엘릭서는 불변 데이터 구조와 액터 기반의 동시성 모델을 깔끔하고 현대적인 문법으로 감싼 함수형 프로그래밍 언어로, 업계에서 검증된 고성능의 분산 얼랭 VM 위에서 동작한다. ... 이 말은 곧 엘릭서를 사용하면 그동안 시간을 잡아먹었던 여러 문제를 더는 걱정하지 않아도 된다는 뜻이다." (본문 31 pg 중 일부)

 

  1장부터 12장까지는 엘릭서의 기본적인 내용과 철학 그리고 기초적인 문법들을 다루고 있다. 예제들도 설명이 보기좋게 잘 나와있고, 해당 파일도 옮긴이의 깃허브 저장소(https://github.com/walnut-kwon/programming-elixir-kr)에 있어서 참고하기 편리하였다. 그리고 13, 14장에서는 간단한 프로젝트가 소개되었다. 그리고 파트2인 15장~21장, 파트3인 22장~25장, 그리고 부록까지... 무려 500 페이지가 넘는다. 부록을 제외해도 거의 500페이지에 육박하는 방대한 양이라서 천천히 긴 호흡으로 살펴봐야 할 것 같다. 살펴보는 사람도 벅찬데, 번역하고 정리한 옮긴이분도 대단하신 것 같다.

 

 

  그리고 아직 엘릭서 라이브러리들을 다양하게 활용해보지는 못했지만, 파이썬의 pip가 있듯이 엘릭서도 hex(https://hex.pm/)라는 패키지 매니저가 있다. 먼저 공식 문서에서 제공하는 내장 라이브러리를 확인해보고, 없다면 표준 얼랭 라이브러리(http://erlang.org/)에서 검색해보고, 그래도 없을때는 이 외부 패키지 매니저를 이용할 수 있다고 한다.

 

 

  새로운 것을 배울때는 커뮤니티의 도움을 받는 것이 경험적으로 큰 도움이 되었다. "빨리 가려면 혼자가고, 멀리 가려면 함께 가라"라는 말을 어디선가 들었던 것 같은데, 짧은 프로젝트가 아닌 새로운 세계로의 모험을 떠나기 위해서는 커뮤니티에서 함께하는 것이 큰 힘이 되는 것 같다. 혹시나 해서 찾아보니 이미 생각보다 많은 사람들이 커뮤니티를 구성하고 기여하고 있었다. 엘릭서의 슬랙 커뮤니티(https://elixir-lang.slack.com/)에는 작성일 기준으로 대략 3만4천명의 사람들이 가입되어 있다.  #korea 채널도 있고 대략 90명 정도의 사람들이 가입되어있는데, 한국 커뮤니티는 슬랙보다는 디스코드(https://discord.gg/mVNjg3e)에서 더 활동이 활발하다고 전해들었다. 그리고 무엇보다 앞서서 엘릭서의 나라로 향한 사람들이 깃허브 저장소(https://github.com/elixir-korea/elixir-korea.github.io)를 만들고 생태계 확장을 위한 다양한 활동들을 하고 계셨다.(감사하다!)

 

  아직 엘릭서가 현업에서 어떻게 활용될 수 있을지 감은 오지 않지만, 당장 필요하지 않아도 배워봄직한 언어인것 같다. 작가의 말처럼 '주류 언어와는 다른 방법을 배움으로써 프로그래밍을 바라보는 시야가 넓어질 수 있을 것...'이라는 말이 귀에 맴돌기에 긴 호흡으로 다양한 토이프로젝트를 해보면서 새로운 세계를 탐험해 보아야겠다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

한빛미디어에서 국내 최초로 엘릭서를 제대로 다룬 신간이 나왔습니다.


<처음 배우는 엘릭서 프로그래밍> 표지

지난 3월 14일 화이트데이에 한빛미디어에서 사탕보다 더 달콤한 신간 <처음 배우는 엘릭서 프로그래밍 : 쉽고 빠르게 익히는 함수형 프로그래밍>을 출간했습니다. <처음 배우는 엘릭서 프로그래밍>은 엘릭서를 국내애 제대로 소개한 책이라고 할 수 있습니다. 그전에는 함수형 프로그래밍을 소개할 때 간간히 엘릭서를 언급한 서적들이 국내에 있었습니다만, 엘릭서만을 전문적으로 다룬 서적은 존재하지 않았습니다. 실제로 온라인 서점에서 엘릭서를 검색해보면, 인터넷 소설만 나오거나 2016년에 한빛미디어에서 발간한 <7가지 동시성 모델 : 프로그래머라면 알아야 할 미래를 품은>이 검색됩니다. 그만큼 엘릭서를 다룬 책이 국내에는 없었다는 것을 반증합니다. 이러한 상황에서 한빛미디어에서 이번에 발간한 <처음 배우는 엘릭서 프로그래밍>은 매우 의미있는 책이라고 할 수 있습니다.

(출처 : https://riedel.tistory.com/556)

 

이 책을 신청하게 된 이유는 함수형 프로그래밍이 궁금해서였습니다.

함수형 프로그래밍이란 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변데이터를 멀리하는 프로그래밍 패러다임의 하나라고 하는데 전혀 감을 잡을 수 없었거든요~

이  책으로 함수형프로그래밍에 대해서 접해 보았는데~

제가 처음 프로그래밍 언어를 접했을 때 C언어라는 절차적인 언어를 접근 했었는데 그 다음 C++ 이나 자바와 같은 객체지향 언어를 접하면서 객체에 대해서 생소해서 이러한 개념을 잡는데 엄청 오래 걸렸던 것으로 기억하는데요.

그와 마찬가지로 이 함수형 프로그래밍 자체도 여태까지 알고 있던 개념을 완전히 버리고 새로운 개념을 도입해야 될것 같은 느낌이네요~

 

더빠른 CPU의 속도를 높이는 한계에 부딪히면서 코어 개수가 늘어나기 시작했는데 이러한 코어개수를 최대한 사용하기 위해서는 기존의 객제지향 언어에서 여러개의 코어에서 하나의 메모리를 참조하고 수정하려고 하면 서로간에 충돌 부분으로 인해 동기화 로직과 같이 복잡한 알고리즘이 들어가 주어야 하는데 비해 함수형프로그래밍은 각 프로세스는 각자의 상태를 가지고 메시지를 통해 서로 소통하므로 이러한 여러개의 코어를 사용하는 분산소프트웨어를 만들기에 최적의 환경이라고 합니다.

이러한 것을 보면서 앞으로는 함수형프로그래밍 언어가 대세가 되지 않을까 라는 생각을 가지게 되었습니다.

 

이책의 구성을 살펴보면

PART1.전통적프로그래밍 편에서는 전통적 프로그래밍과 함수형 프로그래밍의 다른 점 부터 친절히 설명해 주고 있습니다.

전통적 프로그래밍에 익숙해 있는 저에게는 알쏭 달쏭한 부분이 많았는데요~ 그래도 흥미로웠던 것은 머리와꼬리를 사용해 리스트 처리 하면서 재귀적인 구현을 통해 리스트의 패턴화를 통해 프로그래밍을 하는 부분과 유닉스의 파이프와 같은 느낌의 파이프 연산자 |> 부분은 무척이나 흥미로웠습니다. 그 외에 자료형은 전통적 부분과 비슷한 부분이 있는 것도 같으면서 서로 다른듯~ 알쏭달쏭한 부분으로 정확히 이해 하기 위해서는 많은 연습이 필요할 것 같습니다.

엘릭서에서는 반복문이 없고 반복이 필요하다면 재귀함수를 사용해야 한다는 부분은 특히나 신기한 부분이었습니다.

 

PART2.동시성 프로그래밍 편에서는 엘릭서의 장점인 여러개의 프로세스 다루는 방법, 분산서비스를 위한 노드 관리,슈퍼바이저기능 등을 살펴보고 애플리케이션을 설계해서 실행을 해 보면서 동시성 프로그래밍에 대한 이해도를 높여 주고 있습니다.

객체지향 관점이 아닌 프로세스 관점에서 작업을 생각하고 분산처리를 이용한 노드를 이용하여 여러개의 얼랭 가상 머신을 네트워크로 연결하여 애플리케이션의 확장성을 늘리는 부분들을 설명하고 중복된 파일을 정리하는 Duper 애플리케이션 설계를 직접 해 보면서 우리가 어떤 관점으로 접근해야 하는지를 보여 주고 있습니다.

 

PART3. 엘릭서 심화 편에서는 매크로 사용법과 모듈연결, 프로토콜을 이용한 함수의 다형성을 구현해 보면서 엘릭서의 심오한 깊이를 느낄 수가 있습니다.

엘릭서는 주어진 문법에 머물지 않고 다른 여러가지 방식으로 언어를 확장해 나갈 수 있는데 반복문이 없는 엘릭서에 if문까지 없다면? 매크로를 이용해서 내가 원하는 문법을 만들어 볼 수가 있습니다.

또한 엘릭서에서 제공하는 프로토콜을 활용해 기존 라이브러리를 통합하거나 유연한 인터페이스를 가진 라이브러리를 새로 만들어 볼 수도 있습니다.

 

 

 

서평

엘릭서의 특징을 살펴 보면 다음과 같습니다.

엘릭서는 프로세스 모델이다. - 엘릭서 코드는 기본적으로 작은 프로세스 단위에서 실행되며 수십만개의 프로세스를 생성 할 수 있습니다. 이러한 프로세스는 액터기반 모델로 메시지를 주고 받을 수 있으며 하나의 프로세스가 종료되더라도 전체 서비스에 영향을 미치지 않습니다.

엘릭서는 프로세스가 죽었을때 슈퍼바이저 기능을 이용해서 되살리는 기능을 제공하고 있습니다.

함수형 프로그래밍 언어라는 것은 언어의 문법을 보는 것이 아닌 절차적인 언어에서 객체지향언어로 변경 되는 개념 만큼이나 객체지향언어를 사용하고 계신 분들에게 함수형 언어가 무엇인지 개념을 잡는 부분이 중요해 보입니다.

함수 자체가 데이터이며 객체지향 설계가 아닌 프로세스 단위의 설계로 바라보는 시각이 달라져야 합니다.

제가 절차적 언어에서 객체지향 언어를 만났을때 문법만 객체지향 언어였고 프로그램 설계는 절차적 언어였고 객체지향의 개념을 실제로 이해 한 것은 꽤나 많은 시간이 흘러서 였습니다.

아마도 함수형 프로그래밍 언어를 제대로 이해하기 위해서는 많은 부분 연습해서 깨달아야 할 부분인것 같습니다.

이 책은 이러한 개념을 이해시키기 위해 심혈을 기울였습니다. 

이 책으로 연습을 꾸준히 하다 보면 함수형 프로그래밍의 실제 개념과 그 깊이에서 헤어나오지 못할 지도 모르겠다는 생각을 하게 되네요.

함수형 프로그래밍이 궁금하신 분들이시라면 엘릭서를 통해서 함수형 프로그래밍을 경험해 보시길 추천 드립니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
처음 배우는 엘릭서 프로그래밍
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
처음 배우는 엘릭서 프로그래밍
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
처음 배우는 엘릭서 프로그래밍
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

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

자료실