English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlang은 기능 프로그래밍 언어로, 동시, 배포 및 복구 기능에 대한 통합 지원을 가지고 있습니다. Erlang은 원래 에릭슨의 여러 대형 전기 통신 시스템에서 사용하기 위해 개발되었습니다.
Erlang의 첫 번째 버전은 Joe Armstrong, Robert Virding, Mike Williams에 의해1986년에 개발되었습니다. 이는 원래 에릭슨 내부의 독점 언어였습니다. 그리고 이후1998년에 공개 소스 언어로 출시되었습니다. Erlang 및 OTP (Erlang의 중간 소프트웨어와 라이브러리의 집합)은 지금 에릭슨의 OTP 제품 부서에서 지원 및 유지보수를 받으며 널리Erlang/OTP。
이 요구 사항을 가지고 있다면 Erlang을 사용하여 애플리케이션을 개발해야 합니다-
이 애플리케이션은 대량의 동시 활동을 처리해야 합니다.
그것은 컴퓨터 네트워크에서 쉽게 배포될 수 있어야 합니다.
소프트웨어와 하드웨어 오류 모두에 대한 복구 도구가 있어야 합니다.
이 애플리케이션은 확장성이어야 합니다. 이는 여러 서버를 거쳐 거의 변화 없이 작동할 수 있어야 한다는 것을 의미합니다.
그것은 애플리케이션을 중지하고 다시 시작하지 않고도 쉽게 업그레이드 및 재구성할 수 있어야 합니다.
이 애플리케이션은 특정严格한 시간 범위 내에 사용자에게 응답해야 합니다.
Erlang 공식 웹사이트는https://www.erlang.org/。
Erlang은 통합적인 동시 처리를 위한 일반적인 프로그래밍 언어로, 스웨덴 전기 통신 장비 제조업체 에릭슨이 소유한 CS-Lab 개발의 목적은 대규모 동시 발생 활동에 대처할 수 있는 프로그래밍 언어와 실행 환경을 창출하는 것입니다. Erlang은1987년, 열 개월의 발전을 거쳐1998년에 오픈 소스 버전이 출시되었습니다. Erlang은 가상 기계에서 실행되는 설명적 언어입니다. 하지만 지금은 오슬로 대학교에서 개발한 고성능 Erlang 계획(HiPE)에 의해 개발된 로컬 코드 컴파일러도 포함되어 있습니다. R11B-4버전부터, Erlang은 스크립트 예제 해석기를 지원하기 시작했습니다. 프로그래밍 패러다임에서 Erlang은 다중 패러다임 프로그래밍 언어로, 함수형, 병행형 및 분산형을 포함하고 있습니다. 순차적으로 실행되는 Erlang은 일찍 계산, 단일 할당 및 동적 타입의 함수형 프로그래밍 언어입니다.
Erlang은 구조화된, 동적 타입 프로그래밍 언어로, 내장된 병행 계산 지원을 갖추고 있습니다. 원래는 이리콘에서 통신 응용 프로그램을 위해 특별히 설계된 것으로, 전화 교환기나 프로토콜 변환 등을 위해 설계되었습니다. 따라서 분산형, 실시간 병행 계산 시스템을 구축하는 데 매우 적합합니다. Erlang으로 작성된 애플리케이션은 일반적으로 수천 개의 가벼운 프로세스로 구성되며, 메시지 전달을 통해 상호 교류합니다. 프로세스 간 컨텍스트 전환은 Erlang에서는 단순히 하나 또는 두 단계에 불과하며, C 프로그램의 스레드 전환보다 훨씬 효율적입니다.
Erlang을 사용하여 분산형 애플리케이션을 작성하는 것은 매우 간단합니다. 이는 Erlang의 분산 기제가 투명하기 때문입니다. 프로그램은 분산형으로 실행 중인 것을 알지 못합니다. Erlang 실행 시간 환경은 가상 기계로, Java 가상 기계와 비슷합니다. 이렇게 코드가 컴파일되면 어디서든 실행할 수 있습니다. 또한 실행 시간 시스템은 코드가 중단되지 않고 업데이트되도록 허용합니다. 더 높은 성능이 필요하다면, 바이트 코드도 로컬 코드로 컴파일하여 실행할 수 있습니다.
Erlang은 덴마크 수학자 및 통계학자 Agner Krarup Erlang의 이름을 따랐으며, Erlang은 또한 Ericsson Language를 의미할 수 있습니다.
Erlang은 새로운 언어가 아닙니다.1987연도에, 그때는 동시성, 분산형 요구가 지금과 같이 일반적이지 않았기 때문에, 당시에는 영웅이 무엇을 사용할 수 없는 상황이었습니다. Erlang 언어 창시자 Joe Armstrong은 Erlang 언어 창시자 Joe Armstrong은 이리콘에서 전화 네트워크 개발을 담당했으며, Smalltalk을 사용했습니다. 그러나 그때 Smalltalk은 너무 느리기 때문에 전화 네트워크의 고성능 요구를 충족시키지 못했습니다. 하지만 Joe는 Smalltalk을 매우 좋아했기 때문에 Tektronix Smalltalk 기계를 주문했습니다. 그러나 기계는 두 달이 걸려야 했기 때문에, Joe는 기계가 도착하기 전까지 바람직하게 기다렸습니다. 그러나 기계가 도착할 때까지 Joe는 Prolog을 사용하기 시작했고, Tektronix가 도착할 때까지 Prolog에 대해 더 관심을 가지게 되었습니다. Joe는 Prolog에 대한 이해만으로 만족하지 않았기 때문에, 몇 달 동안 실험을 통해 Prolog에 동시 처리와 오류 복구를 추가하여 Erlang이 탄생하게 되었습니다. 이것이 Erlang의 문법이 Prolog과 많은 비슷한 이유 중 하나입니다. 예를 들어, 두 언어의 List 표현은 [Head | Tail]와 같습니다.
1987년에 Erlang 테스트 버전이 출시되었으며, 사용자 실제 적용에서 지속적으로 완성되었습니다.1991년에 사용자에게 첫 번째 버전을 출시하였으며, 컴파일러와 그래픽 인터페이스와 같은 더 많은 기능을 포함하고 있습니다.1992년, Erlang은 더 많은 사용자를 반영하며, 예를 들어 RACE 프로젝트와 같은 사용자가 등장했습니다. 동시에 Erlang은 VxWorks, PC, Macintosh와 같은 여러 플랫폼으로 옮겨졌으며, Erlang을 사용하는 두 개의 제품 프로젝트도 시작되었습니다.1993에릭슨 회사 내부의 독립적인 조직이 Erlang 구현과 Erlang 도구를 유지보수하고 지원하기 시작했습니다.
전통적인 객체지향 언어와 달리, 자신만의 장점을 가지고 있습니다: 먼저, 이는 프로세스 기반의 병행 처리를 기반으로 하고 있으며, 이 프로세스들은 가벼운 것이며 협력적으로 정리되어 있어 사용자는 PV 작업에 대해 걱정하지 않습니다. 이 프로세스들은 운영체제에 대해 투명하게 있으며, 운영체제에는 단 하나의 프로세스가 실행되고 있습니다. 또한, 각 프로세스는 자신의 독립적인 메모리를 가지고 있으며, 프로세스 간 통신은 전적으로 메시지 전달에 의존합니다. 각 프로세스는 독립적인 메일박스를 가지고 있으며, 모델 매칭 방식으로 처리해야 할 메시지를 찾아서 각각 비동기적으로 처리합니다. 이는 프로세스 간의 결합도를 줄이고 독립성을 높입니다. Erlang은 또한 신뢰할 수 있는 오류 tolerance 메커니즘을 가지고 있으며, 프로세스들은 상대적으로 독립적이기 때문에 Erlang에서는 일부 프로세스를 다른 프로세스를 연결하거나 모니터링하는 데 사용할 수 있습니다. 이러한 모니터링된 프로세스가 오류로 인해 이상하게 종료될 때, 모니터링 프로그램은 이러한 프로세스가 종료된 메시지를 받고 이러한 프로세스에 대한 적절한 처리를 합니다. OTP에서 Erlang은 모니터 트리를 사용하여 일대일이나 일대다의 모니터링을 수행할 수 있습니다. 가장 중요한 것은, 다핵 CPU를 지원하는 것이며, Erlang에서 다핵 처리는 개발자가 관리할 필요가 없으며, 개발자에게는 완전히 투명합니다. 우리는 일반적으로와 같이 프로그램을 작성하는 것만으로도 됩니다. 마지막으로, Erlang은 실시간 코드 업그레이드를 지원하며, Erlang에서는 중지 없이 코드를 업그레이드하여 소프트웨어 운영 중에 실시간 업그레이드를 수행할 수 있습니다. Erlang의 버전 관리에서는 모듈을 유지보수할 수 있습니다.2가지고 있는 다양한 버전을 지원하며, 버전 복구를 지원합니다.
Erlang 언어는 특정한 요구사항에 집중하고 있으며, 모든 상황에 완벽히 적합하지는 않습니다. Erlang이 많은 매력적인 특성을 가지고 있지만, 몇 가지 단점도 있습니다: 언어의 추상화 능력이 약하며, Erlang은 약한 타입 언어로, 메시지 내용이나 패턴 요구 사항을 쉽게 조정할 수 있습니다. 그러나 오류가 발생할 때, 이러한 오류는 은밀성이 높습니다. 또한, 프로젝트 규모가 크면 언어의 특성으로 인해 각 부분이 평평화되는 경향이 있으며, 프로그램에서는 많은 튜플과 레코드가 혼란스럽게 구성되어 있습니다. 또한, 함수형 프로그래밍은 전통적인 언어와 차이가 있으며, 현재 주요 프로그래밍 언어는 C 언어 계열과 오브젝트 지향적입니다. 현재 함수형 프로그래밍은 성숙한 프로그래밍 이론이 부족하며, 관련 인재와 자료도 적습니다. 이는 학습의 어려움을 증가시키며, 오브젝트 지향적 사고가 깊이 뿌리내려 있어 함수형 프로그래밍을 배우는 데는 사고 방식의 전환을 어렵게 합니다. 가장 중요한 것은, Erlang은 IO 집중형 언어로, 분산 특성이 뚜렷한 프로젝트에 적합합니다. 계산 집중형 요구 사항에 대해서는 어려움이 있지만, 여전히 최적화를 통해 개선할 수 있는 공간이 있습니다.
Erlang은 최근 몇 년간 국내에서 매우 빠르게 발전했으며, 주로 게임 서버 시스템 개발에 사용됩니다. Erlang은 쉽게 사용할 수 있고, 오류 대응率高으며, 빠른 반복迭代 등의 장점이 웹 게임과 모바일 게임 개발에 매우 적합합니다. 특히 광저우, 深圳 등 일부 중소형 게임 회사는 Erlang을 사용하고 있습니다. c++기본 언어의 게임 서버 시스템은 장기적인 기술적 축적이 필요하며, c++Erlang의 개발 효율은 저하되고, 고액의 인력 채용 비용은 신생 회사에게도 큰 도전이 됩니다. 하지만 중소형 회사는 제품보다 기술을 더 중시하며, 이는 Erlang이 국내에서 발전하는 데 부정적인 영향을 미칩니다. 대부분의 회사는 이미 형성된 Erlang 프레임워크를 사용하며, 특정한 비즈니스 로직을 처리하는 데 중점을 두고 기본적인 최적화를 무시합니다. 이는 Erlang의 발전에 매우 부정적인 영향을 미칩니다.
Erlang은 해외에서 오랫동안 발전했으며, 성숙한 언어로서 이미 증명되었습니다. 현재 Ericsson의 宽带, GPRS 및 ATM 교환 솔루션 시스템 등 수백 개의 중요한 개발 프로젝트에 적용되고 있으며, 풍부한 프로젝트 경험을 가지고 있으며, 프로그래밍 프레임워크(OTP)는 Erlang 시스템에 강력성과 복구성을 제공하는 도구와 라이브러리 및 완전한 구조화 프레임워크를 제공합니다. 그러나 국내에서는 게임 개발에 사용되는 것과 달리, 해외에서는 웹 서비스, 컴퓨터 전화, 메시지 시스템 및 상업은행 등의 분야에서 주로 사용됩니다. 이 세기 초 Erlang.org 웹사이트에는36000개의 웹 페이지 약간, 열년 후, 이 수는280만, 이는 Erlang 커뮤니티가 지속적으로 확장되고 있음을 보여주며, 비즈니스, 연구 및 오픈 소스 프로젝트, 바이러스 마케팅, 책과 블로그의 조합, 모두 Erlang의 원래 설계에서 비롯됨-특정 분야의 문제를 해결하기 위한 필요성과 추진.