アーラン それは何ですか、なぜ、どのように、誰のために。

この記事は短く、必要に応じて、このプログラミング言語について詳しく説明します。



なに





Erlangは動的型付けを備えた関数型プログラミング言語であり、その主な機能は個々のプロセス(他の言語のスレッドにほぼ類似)でのプログラミングであり、MPI(Message Passing Interface)を使用して通信が実装されます。







なぜ





中央処理装置の周波数の増加は停止しました。 コアの数とクラスター内のノードの数は増加しています。 Erlangは、マルチコアおよび/または多くのホストシステムのフルパワーを使用できるプログラムの開発を簡素化するために作成されました。



Erlanga使用の成功例-Jabber(hooray!)Ejabberdサーバー、YAWS Webサーバー、および彗星プログラムなどの多数の実験1,000,000(百万)TCP接続を維持します。



比較はしませんが、これらのプログラムは猛烈な負荷に耐え、それらを殺そうとする試みに対して非常に抵抗力があると言えば十分です:)



どうやって





独立した分離プロセスのレベルでのプログラミングは、通常のスタイルの並列ソフトウェアのプログラミングに比べて多くの利点を提供します。



ソースから始めましょう-なぜそのようなソフトウェアをJava、C、またはSharpでプログラムするのが難しいのですか? 問題は非常にグローバルであり、これらすべての言語に存在します-共有メモリアクセス。 これらの言語でプログラミングする場合、他のスレッド(trade、thread、thread ...)が変数が参照するメモリの容量を変更していないことを確認することはできません。 このため、ロック、ミューテックス、セマフォなど、さまざまな実績のあるトリックに頼らなければならないことが非常に多くあります。 そしてそれをするのは難しいです。 初心者プログラマだけでなく、経験のあるプログラマにとっても、システムのパフォーマンスが依存するプログラマにとっては困難です。



一般的に、Erlang etaでは問題は解決されません。 これは、言語自体の1レベル下に単純に隔離されています。 各プロセスは分離されており、他のプロセスのメモリにはアクセスできません。



簡単に言うと、共有メモリがない場合、このメモリへのアクセスに問題はありません。



誰のために





Erlangの学習は非常に簡単で、構文は1〜2日、プログラミングの原則-1〜2週間で理解できます。 しかし、プログラミングのパラダイムは非常に複雑であり、それへの切り替え(特に命令型PLの経験が豊富な場合)は非常に困難であり、まったく気に入らないこともあります。 複数回聞いた-非オブジェクトを使用してプログラムするにはどうすればよいですか? 全世界はオブジェクトとオブジェクト間の相互作用で構成されています! 答えは平凡です-全世界は、オブジェクトで構成されるのと同じ程度まで、プロセスとプロセス間の相互作用で構成されています。



このPLを使用すると、多くのタスクが簡単に解決され、Erlangは関数型言語の紹介を始める価値がある最高のPLであると思います。 特に、プログラムを並列化およびクラスター化する必要がある場合。



All Articles