기타/도서리뷰

[나는리뷰어다] 처음배우는 엘릭서 프로그래밍

파아란기쁨 2022. 4. 15. 09:34

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

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

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

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

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

 

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

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

 

이책의 구성을 살펴보면

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

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

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

 

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

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

 

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

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

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

 

 

 

서평

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

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

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

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

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

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

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

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

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

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

 

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

 

 

 

 

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
1 2 3 4 5 6 7 8 9 10 ··· 74