Erlang(およびElixir)で同時アプリケーションを作成する

開示: あなたのサポートはサイトの運営を維持するのに役立ちます!このページで推奨する一部のサービスについては、紹介料を稼ぎます.


Erlangは、並行アプリケーションを構築するために設計された汎用プログラミング言語です。.

もともとは電気通信アプリケーション用に開発された、拡張性の高い関数型言語であり、通信、Webアプリケーション、分散コンピューティング、インスタントメッセージング、eコマース、および常時接続を必要とし、インターネットからの同時入力を処理する必要があるその他のサービスに最適です。多数のソース.

アーランとエリクサー

Erlangを現代のプログラマーにとって魅力的なものにするいくつかの機能は次のとおりです。

  • 並行性。Erlangプログラムが複数のソースからの入力を受け入れ、分散環境で機能できるようにします。.

  • フォールトトレランス。プログラムの一部の要素に障害が発生したり、障害が発生したりした場合でもシステムの動作を継続できるため、Webコミュニティや通信プラットフォームなどの常時接続環境に非常に役立つ言語です。.

  • システムの停止や再起動を必要とせずに、コードの修正とプログラムの更新を可能にするホットコードロード.

  • 共有変数ではなくメッセージの受け渡しにより、プロセスはより高い並行性で通信できます.

  • ガベージコレクション。速度とパフォーマンスを向上させるための自動メモリ管理を提供します。.

Erlangは、構文と機能の設計が非常にユニークであり、新しいプログラマーのための鋭い学習曲線を作成するため、いくつかのプログラミング言語ほど簡単にジャンプすることはできません。.

歴史

Erlang言語は、1986年にエリクソンの従業員であるJoe Armstrong、Robert Virding、およびMike Williamsによって最初に開発されました.

この言語は、既存のテレフォニーアプリケーションを改善するように設計されており、PLEX言語の影響を強く受けました.

Erlangの最初のバージョンはPrologに実装されましたが、これは電話交換には遅すぎることが判明しました。それを解決するために、チームは1992年にBEAM仮想マシンを開発しました.

BEAMは、Erlangコードをはるかに速い速度でCにコンパイルし、Erlangをプロトタイプ言語から実際のアプリケーションにすばやく移行できるようにしました。 1995年に、ErlangはATM取引所、AXDに実装されました.

ただし、1998年に、Ericsson Radio Systemsはすべての製品を非専有言語に移行させようとしたため、新製品内でのErlangの使用を禁止しました。.

新しいポリシーにより、他のErlangプログラマーの中でも特にJoe Armstrongが辞任し、最終的にはその年の後半にチームがErlangをオープンソースの世界にリリースすることにつながりました.

エリクソンは、独自仕様の製品ではなくなり、電気通信の世界で牽引力を得て、後にアーランの立場を逆転させ、アームストロングを再雇用しました.

Erlangは現在、T-Mobile、Whatsapp、Ubiquiti、IDT Corpなどの世界中の電気通信会社で積極的に使用されています。Ericssonは引き続き言語を維持し、LTEネットワークを含むエリクソンのサポートノードとモバイルネットワークで使用しています。.

資源

並行プログラミングの信じられないほどの必要性を考えると、ウェブベースとモバイルのテクノロジーは常に拡大しており、Erlangは人気が高まり続けており、多くの真面目な開発者が切り替えを行っています.

その結果、利用を開始し、途中で支援を提供するために利用できる無料のオンラインリソースがたくさんあります。.

  • Erlang.org:Erlangの公式サ​​イト。このページには、ソフトウェアのダウンロード、ドキュメントとユーザーガイド、オンラインリソースとコミュニティへのリンク、最近のニュースと今後のErlangイベントに関する情報が含まれています.

  • Erlang Central:このコミュニティ主導のサイトには、Erlangの知識を構築し続けるために必要なものがすべて揃っています。チュートリアル、ビデオ、Wiki、ジョブボード、コミュニティフォーラムをホストしています.

  • 主にアーラン:すべてのものをアーランに捧げる定期的なポッドキャスト。彼らは基本的なプログラミングの概念について話し合い、主要なイノベーターにインタビューし、新しい経験豊富なErlangプログラマーにアドバイスを提供します.

  • Erlang Factory:この年次技術会議では、世界中のErlang開発者が集まり、新しいイノベーションや理論について話し合い、オプションの3日間の集中トレーニングコースを提供しています.

Erlangはほとんどの言語とはかなり異なり、経験豊富なプログラマでさえ、その偏心のいくつかを追跡するために利用できる便利なガイドを用意したいと思うかもしれません。何年もプログラミングしているか、次の大きなモバイルアプリの設計に没頭しているかに関係なく、Erlangのタイトルがそこにあります。

  • プログラミングErlang:Jocurrentによる並行世界のためのソフトウェア:Erlangの原作者の1人によって書かれた、これは言語とクラウドアプリケーション、マルチユーザーゲーム、コミュニティベースなどの並行環境でのその使用法の決定的なガイドですウェブサイト。この本は、関数型プログラミングまたは並列プログラミングの経験がほとんどない個人を対象としており、チュートリアルや実例を通してこれらの概念を教えています。.

  • Zachary KessinによるErlangを使用したWebアプリケーションの構築:Erlangの基本的な知識を持つ経験豊富なWeb開発者向けに設計されたこの本は、一連の簡単なWebサービスプログラミングプロジェクトをプログラマーに説明し、独自のWebアプリケーションを構築してオンラインにする準備をします。.

  • あなたにいくつかのErlangを学ぶフレッドハーバート著:ユーモラスなタイトルが示唆するように、この本はアーランの構文が型破りであり、データ構造が異常であり、その型システムが一般に多くの初心者に不快感を与えていることを喜んで認めています。 、しかも強力な規則。初めは非常に基本的な技術で始まり、読者が新しい言語の複雑さに慣れるにつれて、より複雑なプログラミング概念に組み込まれます。物理的なコピーが必要ない場合、著者はその本をオンラインで無料で利用できるようにしました.

  • Erlangの紹介:Simon St Laurentによる関数型プログラミング入門:この本は、インストールとErlangのシェルに多くの時間を費やして、新しいプログラマー(またはErlangの初心者)がコマンドラインインターフェイスに完全に慣れていることを確認してから、次に進みます。言語を非常に基本的な概念に分解し、単純なプログラムの作成を通じてそれらを実証する.

  • CesariniとVinoskiによるErlang / OTPによるスケーラビリティの設計:この本は、理解を深め、Open Telecom Platform(OTP)を利用して複雑でスケーラブルな商用グレードのシステムを設計および構築しようとしている経験豊富なErlangプログラマーを対象としています。.

Beyong Erland:Elixir

エリクサーは比較的新しい言語ですが、長い歴史があります。そしてすべてはErlangで始まりました.

エクスリクサーの歴史

1980年代半ば以降、Erlangは、主にテレフォニーアプリケーションの設計を目的として、設計された機能を十分に発揮してきました。しかし、30年前に進み、高度にスケーラブルなWebアプリケーションのニーズについて考えてください。.

たとえば、Pinterestは1秒あたり14,000件の通知を配信します。 Facebookは、アップデートを受信し、メッセージを16億(B付き)のアクティブユーザーにプッシュバックする必要があります。この種の高い並行性と高可用性は、Erlangがまさに設計したものです.

そして、この古い軍馬の通信言語は突然再び流行し人気になりました。新しいフォームを除く.

Erlangは読み書きが本当に難しいことがわかりました。数十年前に開発されたので、これは当然のことです。これは、「楽しみ」が言語設計の重要な考慮事項になる前のことでした。.

Erlangは、RubyとJavaScriptで育った世代の開発者にはあまり適していません。使いやすさの他に、Erlangには最新のWebアプリケーションに必要なすべての機能はありません.

そこで、2012年にホセバリムがエリクシールを作成しました。 ElixirコードはErlangバイトコードにコンパイルされ、Erlangランタイムで実行されます。 ErlangコードをElixirに直接含めることもできます(CoffeeScriptにJavaScriptを含める方法と多少類似しています)。.

ValimはRuby on Rails開発チームの一員であり、Rails開発に関する本も執筆しました。 Ruby on Railsチームは開発者の経験を非常に真剣に受け止め、その懸念がElixirの設計に影響を与えました.

構文はRubyによく似ており、Erlangよりもはるかに読みやすくなっています。簡単な構文に加えて、ElixirはErlangの機能を拡張して、(とりわけ)メタプログラミング、ポリモーフィズム、およびインラインドキュメントを含めます.

関数型プログラミングの簡単な紹介

エリクサーは、アーランと同様に関数型プログラミング言語です。これは、ほとんどすべての命令型で通常はオブジェクト指向である他のほとんどの言語とは少し異なります.

ほとんどのプログラミング言語には、「関数」と呼ばれるある種のコードブロック構文があります。または、一部のオブジェクト指向言語では「メソッド」と呼ばれますが、メソッドはオブジェクトに関連付けられた単なる「関数」であることを誰もが知っています.

しかし、関数は本当に関数です?

ソフトウェア開発では、何かを行う機能に慣れています。これらを「副作用」と呼んでいます。

しかし、数学では、関数には副作用がありません。円のすべての点をプロットする関数で円を定義せず、また、イントロから仮想ジオメトリへのコース番号を変更する.

数学では、関数は決定論的です。特定の入力xが与えられると、常に正確な出力yを返し、それ以外は何もしません.

プログラミングに副作用を認めることで、実行中のプログラム環境の現在の状態である状態を紹介します。そして、状態の問題は、それが時間とともに変化する可能性があることです.

変数は1つのことを意味するかもしれませんし、今から10分後に何かを意味するかもしれません。つまり、入力xを使用した特定の関数呼び出しは、2つの異なる時点で2つの異なるyの値を返す可能性があります。.

問題ありますか?場合によります。最も人気のある開発言語はどれも純粋に機能的ではないため、副作用やグローバルな状態に依存する言語を使用して、あらゆる種類の(またはほぼすべての)ものを構築することが明らかに可能です.

ただし、高度に分散された常時オンのシステムでは、これが問題になることがあります。システムが数十(または数千)の物理コンピューターに分散している場合、グローバル状態への変更をすべてのコンピューターにどのように伝達しますか?

システムがダウンした場合、どのようにして迅速にグローバル状態を復元しますか?関数呼び出しが異なる時点で異なる値を返す可能性がある場合、今日実行するテストが明日も合格することをどのように確認できますか?

関数型プログラミングは、ステートレスになることにより、これらすべての問題を回避しようとします。機能的に設計されたプログラムは、完全に決定論的な関数の集まりです。つまり、システム全体が決定論的です。特定の入力が与えられると、出力が保証されます.

この種の数学的純粋性は、学術的なコンピューター科学者にとって長い間関心がありましたが、実際のソフトウェア開発にはほとんど興味がありませんでした—突然、インターネットのニーズのために、誰もが興味を持つようになりました.

関数型プログラミングは、Webアプリケーション開発における現在最も重要なトレンドの1つです。.

関数型プログラミングリソース

エリクサーに頭を悩ませたい場合は、関数型プログラミングに頭を悩ませる必要があります。ここから始めましょう.

  • 記事

    • ウィキペディアの関数型プログラミングの記事:主題の非常に詳細な概要.

    • 関数型プログラミングを怖がらないでください:JavaScript開発者向けに書かれた関数型プログラミングの比較的理解しやすい説明.

    • 関数型プログラミングの実用的な紹介

    • 関数型プログラミングの基礎:それのすべて?

    • 関数型プログラミングとは?.

  • ビデオ

    • 関数型プログラミング;何?どうして?いつ?

    • 第一原理からの関数型プログラミング

    • 関数型プログラミングの喜び

    • プレイリスト:関数型プログラミング—基本概念の説明.

    • 純粋に機能的なデータ構造

    • アルゴリズム:関数型プログラミングアプローチ

    • ラムダ計算による関数型プログラミングの概要

    • 関数型の考え方:構文のパラダイム

    • 機能的になる

    • 離散数学と関数型プログラミング.

エリクサーのリソース

Elixirを習得するのに役立つ多くのリソースがさまざまな形式で用意されています.

オンライン資料

オンラインでエリクサーを調べ始める最初の場所は、公式のエリクサー言語サイトです.

チュートリアル
  • 公式入門ガイド

  • エリクサーの30日

  • Elixir School:Elixirプログラミング言語に関するレッスン.

  • エリクサーのビデオガイド

  • エリクサーのエチュード

  • エリクサーチートシート.

ツール
  • フェニックス:ElixirのWeb開発フレームワーク。フェニックスの作成者とエリクサーの作成者が共同執筆したフェニックスに関するこの素晴らしい本をお見逃しなく.

  • Awesome Elixir:コミュニティが厳選したElixirの素晴らしいプロジェクトのリスト.

コミュニティと継続的な学習
  • エリクサーフォーラム

  • エリクサーサブレディット

  • エリクサーファウンテン

  • 週刊エリクサーダイジェスト

  • エリクサーレーダー.

エリクサーの本

  • Elixirのプログラミング:関数型|> 同時|> 実用的|> 楽しい

  • エリクサーのメタプログラミング:少ないコードでより多くのことを実行(そして楽しんでください!)

  • エリクサー

  • Elixirの紹介:関数型プログラミング入門

  • エリクサーを学ぶ

  • エリクサークックブック.

エリクサーを学ぶべきか?

最先端のWebアプリケーション、特に多数の同時ユーザーにサービスを提供するWebアプリケーションに取り組むことに興味がある場合は、Elixirは間違いなく知っておく価値があります.

結論

Erlangコミュニティはまだ比較的珍しいプログラミング言語ですが、特にモバイルソリューション、Webアプリケーション、シームレスなオンラインコラボレーションの需要が高まるにつれて、急速に成長しています。.

多くの点で型破りですが、並行性と分散、組み込みのサポート、高いスケーラビリティ、およびフォールトトレランスが組み込まれているため、Erlangは常に接続されている世界で非常に魅力的な言語になっています.

しかし、エリクサーに集中する方が良いかもしれません。それはあなたが何をしたいかによります。とにかく、どちらも素晴らしい言語です.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map