4월의 Meet up은 '함수형 언어'

일단 가볍게 배워보자!

개인적으로 함수형 프로그래밍을 정의하자면 아래와 같습니다.

모든 입력이 입력으로 선언되고, 모든 출력이 출력으로 선언된 함수를 순수함수라고 하며, 이러한 입력과 출력의 관계를 '깔끔하게' 기술하는 프로그래밍 형태를 함수형 프로그래밍이라 할 수 있다. 함수형 프로그래밍은 입력과 출력의 모든 관계를 '깔끔하게' 선언하기 때문에 부작용(side-effect)이 발생하기 힘든 구조를 지닌다.

또한 함수형 언어에 대한 정의를 내려보자면 아래와 같습니다.

함수형 프로그래밍에서 사용하는 순수 함수를 기술하는 방법을 최대한 지원하는 언어를 함수형 언어라 한다.

이렇게 적고보면 어디가서 개드립치기 딱 좋은 단어를 모아서 그럴싸하게 말하고 다닐 정도는 알고 있는 것 같지만, 실상은 함수형 언어를 기반으로 프로그래밍을 적극적으로 해 본적이 없어서 잘난척 이상의 어떤 것을 기대할 순 없을 듯 합니다.

현대의 컴퓨터 언어(Modern Programming Languages)를 포함해서 기존의 컴퓨터 언어인 JavaScript, Python등 대부분의 컴퓨터 언어가 '함수형 언어'를 기반으로 한 다양한 프로그래밍 기법이나 기능을 도입하고 있습니다.

책이나 읽고, 논문을 정리한다고 해서 어떻게 될 것 같지 않아서, 4월 한달간 함수형 언어를 배워보기로 했습니다.

얼랭 : 모바일 서버 프로그래밍 입문

하스켈을 배워보고 싶었습니다만, 마땅한 교재가 없어서 얼랭을 시작하게 되었습니다. 함수형 언어 문법을 배워서 논의하는건 별다른 이점이 없다고 판단해서 '뭐라도' 만들어내는 스터디를 진행하고 싶었습니다.

좋은 교재와 적당한 삽질

다행히 얼랭으로 간단한 서버를 만들어보는 교재가 있어서 3주간 진행하게 되었습니다. 문법을 제대로 배우고 진행하는게 아니라 처음에는 어색하고 문법이나 관례를 잘 몰라서 허둥대긴 했지만 교재 덕분에 쉽게 쉽게 진행할 수 있었습니다.

무거운 쇳덩이인 맥북이 아니라 1kg 미만의 LG 그램을 주로 들고 다니는 입장에서 윈도우 환경을 잘 지원할까 사뭇 걱정되었지만 별다른 어려움 없이 스터디를 진행할 수 있었습니다(rebar 덕분에 삽질을 하긴 했지만...).

매력적인 내용

8장의 내용인 '채팅과 메신저' 부분을 공부하면서 얼랭의 매력에 흠뻑 빠졌습니다. 익숙하지 않은 문법이 눈에 들어오고, OTP의 전체적인 구조가 익숙해지기 시작하자 스터디의 진도를 제법 빠르게 진행할 수 있었습니다.

스칼라: 이건 아닌것 같아...

JVM에서 작동되는 함수형 언어인 스칼라를 스터디 하는 과정은 스칼라 플러그인을 다운로드하는 일부터 시작되었습니다. 당연하게 엄청난 양의 라이브러리를 다운로드 받는데, 그런걸 미처 생각하지 못했기 때문에 스칼라를 스터디하는 시간의 대부분을 다운로드 하는데 소비하게 되었습니다.

플레이 프레임워크

다들 집에서 플레이 프레임워크를 환경을 구축하는 과정에서 Intellij가 말썽을 부려서 힘겹게 스터디를 진행하게 되었습니다.

자바에서 제공하는 각종 라이브러리를 사용할 수 있으며, 여차하면 자바 객체를 생성해서 사용할 수 있다는 점은 매우 큰 매력으로 다가왔으나, 자바의 향기가 물씬 풍기는 함수형 언어에 대한 이질감이 심해서(이건 개인적인 호불호라 할 수 있으니 심각하게 받아들이진 마세요~) 쉽게 진도가 나가질 않았습니다.

스칼라 GG!

꼭 배워야 하는 언어가 아니다 보니 손이 잘 안가는 스칼라를 계속 스터디하는건 의미가 없을 것 같아서, 가볍게 책을 읽어보고 몇개의 예제를 실행해보는 수준에서 마무리하였습니다.

결론은?

  1. 자바를 주로 다루고 계시다면 스칼라는 매우 매력적인 언어인 듯 합니다만 개인적인 취향을 고려해서 6월 이후에 작은 프로젝트는 얼랭으로 진행해보고자 합니다. 얼랭 VM에서 작동되는 Elixir이라는 걸출한 언어도 있기 때문에 얼랭에 좀 더 욕심을 부려보고자 합니다.

  2. 하스켈을 도전해보고 싶었는데, 아쉽게도 해볼 수 없었다는 점은 정말 유감입니다. 혼자서라도 낑낑거리면 해볼까 했는데, 그럴만한 시간이 없는 관계로 다음을 기약하며 함수형 언어 스터디를 마치게 되었습니다.

  3. 2017년 근성을 가지고 배워볼 언어를 선택하게 되었다는 점은 매우 즐겁고, 어떤 토이 프로젝트를 진행해야 될지 즐거운 고민만 남은 듯 합니다. 야홋!

스터디 내용


  • 스터디를 같이 하기 원하시면 언제든 연락주세요! 호홋!