검수요청.png검수요청.png

얼랭

해시넷
qkrskfo8888 (토론 | 기여)님의 2019년 7월 24일 (수) 14:38 판 (개요)
이동: 둘러보기, 검색
얼랭(Erlang) 로고
얼랭(Erlang) 로고와 글자

얼랭(Erlang)은 1998년 오픈소스로 공개된 실시간 시스템을 위한 함수형 프로그래밍 언어이다. 얼랑, 에어랑, 에를랑이라고도 한다.

개요

Erlang은 다양한 전자 통신 프로젝트를 관리할 수 있는 소프트웨어를 쉽게 개발하도록 하기 위해 Ericsson에서 개발했다. Erlang은 다른 언어에는 없거나 다른 언어에서는 관리하기 어려운 표준 기능이 많이 있다. Erlang은 전자 통신 분야에서 사용할 목적으로 개발되었기 때문에 이러한 기능이 대부분 존재한다.[1] 덴마크의 수학자이자 통신이론을 연구한 아그너 크라루프 얼랭(Agner Krarup Erlang, 1878년 1월 1일 ~ 1929년 2월 3일)의 이름에서 따온 말이다. 초기에는 전화 및 통신 애플리케이션을 개발할 때 사용된 사설 프로그래밍이었다. 1998년 오픈소스로 전환한 후 페이스북 메신저 같은 프로젝트와 카우치디비 문서 지향 데이터베이스 관리 시스템 같은 현실적인 오픈소스 프로젝트에서 사용되어 유명세를 얻게 되었으며 현재는 널리 쓰이는 병행성 프로그래밍 언어로 자리매김하였다.

역사

  • 1986년 : 첫 번째 버전이 릴리스되었다.
  • 1998년 : 첫 번째 오픈 소스가 릴리스되었다.[2]

특징

과거 멀티코어 시스템이 퍼지며 주목받은, 기존과 다른 방식으로 영향을 미친 수학 함수 기반 함수형 언어이며, 운영체제가 아닌 프로그래밍 언어에 병행성이 들어 있는 언어이다. 때문에, 문법에 대한 접근 방식도 달라 그 이전까지의 언어들과는 달리 많이 낯설 수 있다. 하지만 OTP(Open Telecom Platform)라는 얼랭 전용 애플리케이션 플랫폼이 존재하여 개발 환경을 기본적으로 제공해주므로 처음 접하는 경우에도 비교적 쉽게 진행할 수 있다. 메시지를 주고받는 것만으로도 상호 작용할 수 있는 병렬 프로세스들의 집합으로 모델링 한 것이다. 얼랭에 잠금, 동기화 메서드, 애초에 존재하지 않는 공유 메모리의 위반이 없는 점이 그에 따른 장점이다. 또, 얼랭으로는 수천, 수만에서 수백만, 수천만에 이르는 극단적으로 경량인 프로세스들을 만들 수 있는데, 만들어진 프로세스들은 단일 프로세서, 멀티코어 프로세서, 프로세서들의 네트워크에서 실행될 수 있다.

일반적인 특징

  • 루프 제어문이 없다.
  • 함수형 언어이기 때문에 모든 식은 값을 가져야 한다.
  • 데이터형에 대한 선언이 없다.(알아서 한다.)
  • =는 할당문이 아니다.(Lhs = Rhs의 뜻 : 오른쪽을 계산한 다음 왼쪽에 있는 패턴과 매차하라는 뜻)
  • 엄청나게 큰 숫자도 쉽게 계산할 수 있다.
  • Garbage Collector가 있다.

변수의 특징

  • 변수는 대문자로 시작해야 한다.
  • 변수는 초기값이 없을 경우에만 값을 삽입(bound)할 수 있다. 값이 없는 변수는 Unbound된 변수라고 한다.
  • 기본적으로 한 번 Bound된 변수는 다시 값을 할당할 수 없다.
  • 변수는 어떤 값에 대한 참조일 뿐이다. 그러므로 Atom, Tuple, Function과 같은 것들도 Bound 될 수 있다.[3]

활용

얼랭은 시스템 운영 중에도 프로그램을 변경할 수 있는 핫스왑 기능이 지원되고 높은 가용성이 요구되는 대규모의 확장이 가능한 실시간 시스템(Soft Real-time System)을 구축하는 데 사용되는 프로그래밍 언어이다. 또한, 얼랭 런타임 시스템(Run-time System)은 동시성(Concurrency), 분산(Distribution), 결함 방지 능력(Fault Tolerance) 지원 시스템을 내장하고 있다. 그러다 보니 장점을 살려 통신사, 은행, 전자상거래, 통신, 모바일 메신저, 게임 등 대량의 데이터를 처리하는 서버 시스템 구축에 쓰이고 있다.[4]

전망

긍정적측면

동시성(Concurrency) 프로그래밍 언어로 장시간 주목받아온 얼랭은 라이선스를 얼랭 퍼블릭 라이선스(Erlang Public License)에서 아파치v2(Apache Version 2.0) 체제로 변경하면서 또 한 번 세를 넓힐 기회를 잡았다. 라이선스 변화로 얼랭이 기존보다 대중화되지는 않더라도, 언어 채택 시에 라이선스 간 마찰을 제거하고, 더 많은 사용자를 끌어들일 수 있을 것으로 보인다.[5]

부정적 측면

코볼의 행보를 따라갈 가능성이 높은 개발 언어이다. 1980년대 많은 이들의 촉망을 받으며 등장했던 신예 프로그래밍 언어 얼랭은 어느새 시간이 지나 하나의 노장 개발 언어가 되었다. 통신사, 은행, 전자상거래, 통신, 모바일 메신저, 게임 등의 실시간 환경에는 여전히 사용되고 있지만, 신생 경쟁 언어와 비교해보면 배우기가 어렵다. 다행스러운 것은 40대 이상의 중급 이상 프로그래머들에게는 아직 인기가 많다는 점이다.[6]

각주

  1. 한국데이터산업진흥원 - http://a.to/19y4hyO
  2. o테리o,〈Erlang 프로그래밍 소개, Part 1 : 기본사항〉,《티스토리》, 2013-08-26
  3. 이재학, 〈Erlang의 특징과 개념〉, 《개인 wiki》, 2018-04-13
  4. 출처 : 얼랭 공식 홈페이지 - https://www.erlang.org/
  5. 김우용 기자, 〈요즘 뜨는 프로그래밍 언어는?〉, 《지디넷 코리아》, 2015-07-07
  6. Dan Swinhoe, 〈일부러 배울 필요는 없는 프로그래밍 언어 5가지〉, 《아이티 월드》, 2018-04-02

참고자료

같이 보기


  질문.png 이 문서는 로고가 필요합니다.  

  검수요청.png검수요청.png 이 얼랭 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.