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)が開発したローカルコードコンパイラも含まれています。Rから11B-4バージョンから、Erlangはスクリプトエンジンもサポートし始めました。プログラミングパラダイムでは、Erlangは多種多様なパラダイムをカバーする多パラダイムプログラミング言語であり、機能的、並行、分散を含みます。シーケンシャル実行のErlangは、初期評価、単次割り当て、動的型の機能的プログラミング言語です。
Erlangは構造化された、動的型のプログラミング言語であり、内蔵の並行計算サポートがあります。最初はエリクソンが通信アプリケーション、例えば交換機の制御やプロトコルの変換などに特化して設計されました。したがって、分散、リアルタイム、並行計算システムの構築に非常に適しています。Erlangで書かれたアプリケーションは、通常、何千もの軽量プロセスから成り、メッセージ伝達を通じて相互に通信します。プロセス間のコンテキスト切換は、Erlangにとってはほんの数つのステップに過ぎず、Cプログラムのスレッド切換よりもはるかに効率的です。
Erlangを使用して分散アプリケーションを書くのは非常に簡単です。なぜなら、その分散メカニズムは透明であるためです:プログラムにとっては分散で実行されていることを知りません。Erlangのランタイム環境は仮想機であり、Java仮想機に似ています。これにより、コードが一度コンパイルされると、どこでも実行できます。また、そのランタイムシステムは、コードが中断されずに更新可能です。さらに、より高い効率が必要な場合は、バイトコードもローカルコードにコンパイルして実行できます。
Erlangはデンマークの数学者および統計学者であるAgner Krarup Erlangに因んで名付けられました。同時にErlangはEricsson Languageを表すこともできます。
Erlangは新しい言語ではありませんが、1987年、ただし当時の並行処理、分散処理の需要は今ほど一般的ではありませんでした。そのため、英雄はその場に適さないとされていました。Erlang言語の創始者であるJoe Armstrongは、当時エリクソンで電話ネットワークの開発を行っていました。彼はSmalltalkを使用していましたが、その時のSmalltalkは遅すぎて、電話ネットワークの高性能要件を満たすことができませんでした。しかし、JoeはSmalltalkを本当に好きで、そこでTektronix Smalltalkマシンを注文しました。しかし、マシンが到着するまでには2ヶ月かかりました。Joeは待っている間に退屈で、Prologを始めました。結果、Tektronixが到着したときには、JoeはPrologに対してより興味を持ちました。JoeはもちろんPrologの熟練者ではありませんでしたが、その後の試行を通じて、Prologに並行処理とエラー復旧を加えました。それでErlangが生まれました。これがErlangの文法がPrologと多くの類似点を持つ理由でもあります。例えば、彼らのリスト表現は[Head | Tail]です。
1987年にはErlangのテスト版が発表され、ユーザーの実際のアプリケーションで絶えず改善され、1991年には、コンパイラやグラフィックインターフェースなどの多くの機能を持つ最初のバージョンがユーザーに提供されました。1992年、Erlangはさらに多くのユーザーを迎えました。例えば、RACEプロジェクトなど。同時に、ErlangはVxWorks、PC、Macintoshなどのさまざまなプラットフォームに移植され、Erlangを使用する2つの製品プロジェクトもスタートしました。1993エリクソン株式会社内の独立した組織がErlangの実装とErlangツールを保守およびサポートを開始しました。
従来のオブジェクト指向言語とは異なり、独自の利点があります:まず、それはプロセス並行に基づいており、これらのプロセスは軽量で協調的に事務を処理しており、ユーザーは具体的なPV操作を心配する必要はありません。これらのプロセスはオペレーティングシステムにとって透明であり、オペレーティングシステムにとっては1つのプロセスのみが実行されています。次に、各プロセスは独自のメモリを持ち、プロセス間通信では完全にメッセージ传递に依存しており、各プロセスは独自のメールボックスを持ち、パターンマッチングの方法で処理する必要があるメッセージを検索し、それぞれを非同期に処理します。これにより、プロセス間の結合度が軽減され、独立性が向上します。Erlangには信頼性の高いフェイルシルメカニズムがあり、プロセス間は比較的独立しているため、Erlangでは一部のプロセスを他のプロセスにリンクしたり監視したりすることができます。監視されているプロセスがエラーにより異常終了した場合、監視するプログラムはこれらのプロセスの終了メッセージを受信し、これらのプロセスに対して適切な処理を行います。OTPでは、Erlangはマスター/スレーブ監視を実行するための監視ツリーを利用できます。最も重要なのは、マルチコアCPUのサポートで、Erlangではマルチコアの操作を開発者が管理する必要はなく、開発者にとって完全に透明です。私たちは通常通りにプログラムを書くだけで十分です。最後に、Erlangはリアルタイムコードアップグレードをサポートしており、Erlangでは停止せずにコードのアップグレードを実行し、ソフトウェアの実行中にリアルタイムアップグレードを実現できます。Erlangのバージョン管理では、モジュールの...2さまざまなバージョンをサポートし、バージョンのリバックが可能です。
Erlang言語は特定のニーズに焦点を当てており、すべての状況に完全に適していないです。その魅力的な特性にもかかわらず、いくつかの欠点もあります:言語の抽象化能力が低く、Erlangは弱いタイプの言語であり、メッセージの内容やパターンの要求を比較的簡単に調整できますが、エラーが発生した場合、これらのエラーの隠蔽性が強いです。また、プロジェクトの規模が大きくなると、言語の特性により各部分が平面的な特徴を示し、プログラムには非常に多くのタプルやレコードがあり、プログラム構造が混乱しています。次に、関数型プログラミングは伝統的な言語と異なり、現在の主要なプログラミング言語はC言語系やオブジェクト指向であり、関数型プログラミングは成熟したプログラミング理論が不足しており、関連する人材や資料も少なく、学習の難易度が高まります。また、オブジェクト指向の考え方が深く根付いており、関数型プログラミングを学ぶ際に思考が転換しにくくなります。最も重要なのは、ErlangはIO集中型の言語であり、分散型の特徴が明確なプロジェクトに適していますが、計算集中型の要件には少し難しく、それでも最適化や向上の余地があります。
Erlangは近年国内で非常に急速に発展しており、主にゲームサーバーシステムの開発に使用されています。Erlangは使いやすく、エラーフラグが高く、迅速なリリースが特徴で、ページゲームやモバイルゲームの開発に非常に適しています。特に広州、深圳などの中規模や小規模のゲーム企業ではほぼすべてがErlangを使用しています。c++基本的な言語のゲームサーバーシステムのためには長期間の技術的な蓄積が必要であり、そしてc++Erlangの開発効率はそれほど高くなく、高額な採用コストは新興企業にとって大きな挑戦です。しかし中小企業は製品よりも技術を重視しており、これはErlangが国内で発展するのに不利です。多くの企業は既に確立されたErlangフレームワークを使用しており、具体的なビジネスロジックに焦点を当てており、ベースの最適化には注意を払っていません。これはErlangの発展にとって非常に不利益です。
Erlangは国外で比較的長い時間を発展させており、成熟した言語として確立されています。現在、エリクソンなどのブロードバンド、GPRSおよびATM交換ソリューションシステムを含む数百の重要な開発プロジェクトに応用されており、豊富なプロジェクト経験があります。プログラミングフレームワーク(OTP)は、Erlangシステムに堅牢性と容错性を実現するツールとライブラリ、そして完全な構造化フレームワークを提供しています。しかし、国内ではゲーム開発に用いられる一方で、国外ではウェブサービス、コンピュータ電話、メッセージシステム、商業銀行などの分野で主に用いられています。本世紀初頭のErlang.orgウェブサイトには36000ページぐらいで、十年後、この数字は280万、これはErlangコミュニティが絶えず拡大していることを示しています。企業、研究、オープンソースプロジェクト、ビデオマーケティング、本とブログの組み合わせなど、これらはすべてErlangの最初の設計に由来しています。-特定の分野の問題を解決するための需要と推進。