Erlang 정리1 (erlang 이란?)

By | 2014/03/06
node코드를 리팩토링 해야하는데, 하기 싫고 귀찮아서 erlang을 잠깐 봄.
명언이 생각난다.

개발자는 자기가 흥미가 가는 것을 열심히하는 직업병이 있다.

Erlang 정리1 (erlang 이란?)

http://learnyousomeerlang.com/introduction#about-this-tutorial

위 링크를 참고, 요약 한 것임을 밝혀 드립니다.

  • functional 프로그램이다
    • 참조의 투명성 (referential transparency)
    • 변경가능한 데이터를 못씀 (avoiding mutable data)
  • 코드는 바이트코드로 변환되고, 가상머신위에서 돌아간다.
  • 표준배포판
    • 개발툴(컴파일러, 디버거, 프로파일러, 테트트 프레임웤)
    • OTP(Open Telecom Platform) 프레임웤
    • 웹서버
    • 파서 생성기
    • mnesia 데이터베이스
    • key-value 스토리지 시스템(복제기능, 트랜젝션, 어떤 erlang데이터도 저장가능)을 포함한다.
  • actor를 강제로 쓰게 만든다.
    • message로만 응답한다.
  • 경량프로세스이다. (가벼우니 많이 만들수는 있지만 그게 좋은건 당연히 아니다.)
  • 시계열 프로세싱이나, 운영체제의 시스템 드라이버를 만드는데는 안좋다.
  • 큰규모의 서버(Queue, map-reduce)나, 고수준 프로토콜의 구현등에는 좋다.

erlang에 뛰어들려면 무엇이 필요한가?

  • 텍스트 에디터 + Erlang 실행환경 (공식사이트에서 받자 http://erlang.org/download.html)

리눅스환경에서 설치하기

### mac
$ brew install erlang

### ubuntu
$ apt-get install erlang

### centos
$ yum install erlang

### 위의 3가지 방법으로 안 될 경우는 컴파일 설치!
### 컴파일 설치하려면 GNU make, gcc, Perl5, GNU m4, ncurses,
### termcap, termlib, OpenSSL, Sun Java jdk-1.5 이상, sed등이 필요.
### 위의 것들은 알아서 설치하시길..

### configure 설정에 --prefix=<BaseDir> 설정을 하면 설치경로 지정가능
### 없으면 /usr/local/{bin,lib/erlang}에 기본적으로 설치됨.

$ curl -O http://www.erlang.org/download/otp_src_R16B03-1.tar.gz
$ tar xvzf otp_src_R16B03-1.tar.gz
$ cd otp_src_R16B03-1
$ LANG=C; export LANG
$ ./configure
$ make #오래걸림
$ make install

도움얻기

# man page
$ erl -man lists

웹 문서

공식 사이트 : http://erlang.org/doc/

공식 사이트 대신(디자인이 쫌 더 이쁨) : http://erldocs.com/

코딩 룰 : http://www.erlang.se/doc/programming_rules.shtml

메일링리스트 : http://www.erlang.org/static/doc/mailinglist.html

쿡북이나 레시피 좋아하는 사람은 여기를 : https://erlangcentral.org/wiki/index.php?title=Main_Page

erlang shell 실행해보기

아래와 같이 실행하면

$ erl

요런식으로 나옴

Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1>