얼랭

얼랭(Erlang, 영어: IPA: [ˈɜrlæŋ])은 범용 병렬 프로그래밍 언어이다. 함수형 언어가 효율적으로 산업 현장등에서 사용되는 유명한 사례이다.

얼랭(Erlang)
얼랭
패러다임다중 패러다임 함수형,병행성
설계자조 암스트롱 (Joe Armstrong)
로버트 버딩 (Robert Virding)
마이크 윌리암스 (Mike Williams)
발표일1986년(38년 전)(1986)
최근 버전26.2.4 위키데이터에서 편집하기
최근 버전 출시일2024년 4월 12일(9일 전)(2024년 4월 12일)
라이선스아파치 라이선스 2.0
파일 확장자.erl, .hrl
웹사이트www.erlang.org
영향을 받은 언어
프롤로그, 스몰토크, PLEX
영향을 준 언어
F#, 클로저, Rust, 스칼라, Opa, Reia, Elixir, 다트, Akka
얼랭
LYME is Erlang-based and competing with LAMP

원래는 에릭슨(Ericsson)사에서 스위칭 소프트웨어에서 사용하기 위해 개발했지만, 1998년오픈 소스로 공개되었다.

흔히 Erlang이라는 이름이 Ericsson Language에서 따온 것이라고 생각하지만, 실제로는 통신이론을 연구한 덴마크수학자 Agner Krarup Erlang의 이름에서 따온 것이다.

함수형 언어

다음은 계승을 구하는 코드이다.

 -module(fact).  -export([fac/1]).   fac(0) -> 1;  fac(N) when N > 0 -> N * fac(N-1). 

다음은 퀵소트 알고리즘을 구현한 것이다.

 %% quicksort(List)  %% Sort a list of items  -module(quicksort).  -export([qsort/1]).   qsort([]) -> [];  qsort([Pivot|Rest]) ->      qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]). 

qsort 함수는 더이상 정렬할 필요가 없을 때까지 자신을 재귀적으로 호출한다.

주의 : 위의 코드는 책 Programming Erlang(조 암스트롱)에 실려있는 코드이긴 하지만 실려있는 이유는 우아하기 때문이지 효율적이어서가 아니다. Erlang에서는 아래의 규칙을 벗어나게 프로그래밍 하는 것을 권장하지 않는다.

  1. 요소는 항상 리스트의 헤드(앞)에 추가한다.
  2. 순서가 문제가 되는 경우 lists:reverse/1을 호출한다. 이것은 매우 최적화되어있다.

따라서, List ++ [H]와 같은 코드는 권장되지 않는다.

 [ X || X <- Rest, X < Pivot] 

이 부분은 "Rest원소이고, Pivot보다 작은 모든 X를 선택하라"는 의미이다.

이를 응용하면 코드를 간결하면서도 강력하게 짤 수 있다. 아래는 모든 순열을 구하는 Erlang 코드이다.

perms([]) -> [[]]; perms(L)  -> [[H|T] || H <- L, T <- perms(L -- [H])]. 

각주

외부 링크

Tags:

🔥 Trending searches on Wiki 한국어:

전이 금속대한민국의 국기네이버 뉴스한국방송공사강지은퍼센트 포인트신사임당크로마토그래피이황최강욱이강인고려 거란 전쟁 (드라마)태국꼰대볼프강 아마데우스 모차르트삼성전자바이러스김옥균2023년 3월 죽음버닝썬 게이트기계 번역대구광역시염소 (원소)펠라티오이채영 (배우)2001년가운뎃점KBS 뉴스 9일베저장소강허달림정상위에브리씽 에브리웨어 올 앳 원스DNA금이야 옥이야셀레나 고메즈위르겐 클린스만대한민국의 대통령이선균정윤정 (쇼핑 호스트)모니카 르윈스키진 시황제윤수현 (1988년)스페인배타적 논리합카와키타 사이카의 작품 목록2023년 AFC 아시안컵삼성그룹마이크로미터파키스탄문화방송부동소수점이미연 (배우)9·11 테러노자국민사형투표강아지A제곱킬로미터도파민오사마 빈라덴산화·환원 반응세포FC2전현희루이스 알베르토 수아레스2017년검수완박SBS 금토 드라마항문 성교카를 융김설현송일국스티브 잡스상용 소프트웨어전희하늘의 인연인더스 문명엑스오, 키티🡆 More