Elixir(프로그래밍 언어)
Elixir (programming language)![]() | |
| 패러다임 | 멀티패키지: 기능, 동시, 분산, 프로세스 지향 |
|---|---|
| 처음 등장한 | 전( |
| 안정된 릴리스 | 1.13.4 / 2022년 4월 ; 전 () |
| 타이핑 분야 | 다이내믹, 스트롱, 덕 |
| 플랫폼 | 얼랑 |
| 면허증. | Apache 라이센스 2.0[1] |
| 파일 이름 확장자 | .ex, .exs |
| 웹 사이트 | elixir-lang |
| 영향을 받다 | |
| 클로쥬르, 얼랑, 루비 | |
| 영향받은 | |
| LFE | |
Elixir는 Erlang 프로그래밍 [2]언어를 구현하는 데에도 사용되는 BEAM 가상 머신에서 실행되는 기능적인 동시 범용 프로그래밍 언어입니다.Elixir는 Erlang을 기반으로 구축되며 분산된 폴트 톨러런스 애플리케이션을 구축하기 위해 동일한 개념을 공유합니다.또한 Elixir는 생산적인 툴링과 확장 가능한 설계를 제공합니다.후자는 매크로를 사용한 [3]컴파일 시간 메타프로그래밍과 프로토콜을 통한 다형성에 의해 지원됩니다.
Elixir는 [4]Ramp, PagerDuty,[5] Disconsord,[6] Brex,[7] E-MetroTel,[8] Pinterest,[9] [10]Moz, Bleacher Report,[11] The Outline,[12] Inverse,[13] Divvy,[14] FarmBot[15] 등의 기업에서 사용되고 있습니다.[16][17]커뮤니티는 미국,[18][19] 유럽 및 [20]일본에서 매년 열리는 이벤트와 소규모 지역 이벤트 및 [21][22]회의를 주최합니다.
역사
Jose Valim은 Plataformatec에서 작성된 연구 개발 프로젝트인 Elixir 프로그래밍 언어의 창시자입니다.그의 목표는 Erlang의 [23][24]생태계와의 호환성을 유지하면서 Erlang VM의 확장성과 생산성을 높이는 것이었습니다.
José Valim은 대규모 사이트와 앱을 위한 프로그래밍 언어를 만드는 것을 목표로 했습니다.Ruby 개발자인 그는 Ruby, Erlang, Clojure의 기능을 사용하여 높은 통화성과 낮은 레이텐시 언어를 개발했습니다.Elixir는 대량의 데이터를 처리할 수 있도록 설계되었습니다.그 속도와 기능은 Elixir를 통신,[25] 전자상거래 및 금융업계에 확산시켰습니다.
2018년 7월 12일, 허니팟은 Elixir에 [26]대한 미니 다큐멘터리를 개봉했다.
버전 관리
Elixir는[27] 대부분 시멘틱 버전 관리를 따르며 1초 동안 계획이 없는 1개의 메이저 버전만 가지고 있습니다.각 마이너 버전은 특정 범위의 Erlang/[28]OTP 버전을 지원합니다.
특징들
- Erlang 가상 머신(BEAM)[29]의 바이트 코드로 컴파일합니다.
- 모든 것은 표현이다[29].
- Erlang 바이트 코드로 컴파일하기 때문에 실행 시간에 영향을 주지 않고 Erlang 함수를 Elixir에서 호출할 수 있습니다.또, 그 반대의 경우도 마찬가지입니다.
- 추상 구문 트리(AST)[29]를 직접 조작할 수 있는 메타 프로그래밍
- 프로토콜이라 불리는 메커니즘을 통한 다형성입니다.Clojure와 마찬가지로 프로토콜은 동적 디스패치 메커니즘을 제공합니다.단, Elixir 프로토콜은 단일 유형으로 디스패치하므로 여러 디스패치와 혼동해서는 안 됩니다.
- Markdown 포맷[29] 언어로 Python과 유사한 문서 문자열을 통한 문서 작성 지원
- 메시지 전달을 통해 동시 프로그래밍을 공유하지 않음(배우 모델)[30]
- 부작용 기반 루프 대신 재귀 및 고차 함수 강조
- Erlang 메커니즘을[29] 이용한 경량 동시성
- 를 통한 철도 지향 프로그래밍
with구축하다[31] - 의존관계 관리, 코드 컴파일, 테스트 실행, 코드 포맷, 리모트 디버깅 등을 위한 빌트인 툴
- 스트림을 사용한 지연 및 비동기 수집
- 패턴[29][32] 매칭을 통해 포지티브 코드 승격
- Unicode 지원 및 UTF-8 문자열
예
다음 예시는 다음과 같은 방법으로 실행할 수 있습니다.iex셸 또는 파일에 저장하여 명령줄에서 실행elixir <filename>.
Classic Hello 월드의 예:
iex >입출력.놓다('헬로 월드') 헬로 월드! 이해
iex >위해서 n <-> [1,2,3,4,5], 기억하다(n, 2) == 1, 하다: n*n [1, 9, 25] 패턴 매칭(파괴)
iex >[1, a] = [1, 2] iex >a 2 iex >{:OK, [안녕: a]} = {:OK, [안녕: "세계"]} iex >a "세계" 패턴 매칭(복수구)
iex >사례. 파일.읽어주세요("경로/파일") 하다 iex > {:OK, 내용물} -> 입출력.놓다("파일을 찾았습니다.#{내용물}") iex > {: 에러, 이유} -> 입출력.놓다("파일 삭제:#{이유}") iex >끝. 파이프 연산자
iex >"1" > 스트링.행선지() > 커널.*(2) 2 모듈
디모듈 재밌어요 하다 방어하다 파이브(0), 하다: 0 방어하다 파이브(1), 하다: 1 방어하다 파이브(n), 하다: 파이브(n-2) + 파이브(n-1) 끝. 수천 개의 프로세스를 순차적으로 산란하다
위해서 숫자 <-> 1..1000, 하다: 낳다 fn -> 입출력.놓다("#{숫자 * 2}") 끝. 비동기적으로 태스크 수행
작업 = 작업.비동기 fn -> 실행_복잡한_액션() 끝. other_time_consuming_action() 작업.기다리다 작업 주목할 만한 Elixir 프로젝트
- Mix는 Elixir 프로젝트의 작성, 컴파일 및 테스트, 의존관계 관리 [33]등의 태스크를 제공하는 빌드 자동화 도구입니다.
- Phoenix는 서버 측 모델 뷰 컨트롤러([34]MVC) 패턴을 구현하는 Elixir로 작성된 웹 개발 프레임워크입니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "elixir/LICENSE at master · elixir-lang/elixir · GitHub". GitHub.
- ^ "Most Popular Programming Languages of 2018 - Elite Infoworld Blog". 2018-03-30. Retrieved 2018-05-08.
- ^ "Elixir". José Valim. Retrieved 2013-02-17.
- ^ "Elixir at Ramp". Ramp. 2021-05-24. Retrieved 2022-02-25.
- ^ "Elixir at PagerDuty". PagerDuty. 2018-06-14. Retrieved 2019-04-21.
- ^ Vishnevskiy, Stanislav (Jul 6, 2017). "How Discord Scaled Elixir to 5,000,000 Concurrent Users". Retrieved 2019-04-21.
- ^ Valim, José (2020-06-23). "Elixir at fintech with Brex". elixir-lang.github.com. Retrieved 2020-11-14.
- ^ "What's New in Release 6.0 Documentation". www.emetrotel.com. Retrieved 2019-04-21.
- ^ "Introducing new open-source tools for the Elixir community". Retrieved 2016-08-01.
- ^ "Unlocking New Features in Moz Pro with a Database-Free Architecture". Retrieved 2016-08-01.
- ^ "Elixir". Bleacher Report Engineering. Retrieved 2019-05-22.
- ^ Lucia, Dave (Sep 24, 2018). "Two years of Elixir at The Outline". Retrieved 2019-05-22.
- ^ "What big projects use Elixir?". Retrieved 2016-08-01.
- ^ "Why Divvy uses Elixir instead of more popular coding languages". 2 April 2019. Retrieved 2019-04-30.
- ^ The operating system and all related software that runs on FarmBot's Raspberry Pi.: FarmBot/farmbot_os, FarmBot, 2019-10-28, retrieved 2019-10-29
- ^ "Elixir in production interview: Garth Hitchens". 3 June 2015. Retrieved 2016-08-01.
- ^ "Nerves - Craft and deploy bulletproof embedded software in Elixir". Retrieved 2016-08-01.
- ^ "ElixirConf". Retrieved 2018-07-11.
- ^ "ElixirConf". Retrieved 2018-07-11.
- ^ "Erlang & Elixir Fest". Retrieved 2019-02-18.
- ^ "Elixir LDN". Retrieved 2018-07-12.
- ^ "EMPEX - Empire State Elixir Conference". Retrieved 2018-07-12.
- ^ Elixir - A modern approach to programming for the Erlang VM. Retrieved 2013-02-17.
- ^ José Valim - ElixirConf EU 2017 Keynote. Archived from the original on 2021-11-17. Retrieved 2017-07-14.
- ^ "Behinde the code: The One Who Created Elixir". Retrieved 2019-11-25.
- ^ "Elixir: A Mini-Documentary". Retrieved 2021-10-30.
- ^ "Imperative Assignements are breaking the application in 1.7 update · Issue #8076 · elixir-lang/elixir". GitHub. Retrieved 2020-02-10.
- ^ Elixir is a dynamic, functional language designed for building scalable and maintainable applications: elixir-lang/elixir, Elixir, 2019-04-21, retrieved 2019-04-21
- ^ a b c d e f "Elixir". Retrieved 2014-09-07.
- ^ Loder, Wolfgang (12 May 2015). Erlang and Elixir for Imperative Programmers. "Chapter 16: Code Structuring Concepts", section title "Actor Model": Leanpub. Retrieved 7 July 2015.
{{cite book}}: CS1 유지보수: 위치(링크) - ^ Wlaschin, Scott (May 2013). "Railway Oriented Programming". F# for Fun and Profit. Archived from the original on 30 January 2021. Retrieved 28 February 2021.
- ^ "Writing assertive code with Elixir". 24 September 2014. Retrieved 2018-07-05.
- ^ "Mix". Retrieved 2019-04-18.
- ^ "Overview". Retrieved 2019-04-18.
