ElixirとGo言語を比較

    「Elixir」と「Go言語」の概要

    「Elixir」と「Go言語」は、効率的に開発できるように設計されているプログラミング言語です。

    ■「Elixir」とは

    Elixirは、関数型並列処理環境「Erlang仮想マシン」上で動作するプログラミング言語です。

    「マルチパラダイム」「関数型」「並列プログラミング」「スケーラビリティ」「耐障害性」「Ruby風」などの特徴があります。

    Elixirは、並列処理型関数言語「Erlang」のメリットを引き継ぎつつ、「Ruby」風のモダンな文法でコーディングを行えます。そのため「Erlangの並列処理/分散性/耐障害性/高レスポンス」と「Rubyの開発生産性」を合わせ持っています。

    ■「Go言語」とは

    Go言語は、Googleによって開発されたオープンソースのプログラミング言語です。

    プログラマーの生産性を向上させるために、シンプルで効率的なコーディングを行えるように設計されています。

    Go言語はシンプルかつ効率的な言語です。特に、簡単に並列処理を簡単に記述できる特徴があり、ネットワーク化されたマシンを最大限に活用するプログラムを作成できます。

    プログラミングスタイル比較

    ■Elixir

    ElixirはRubyに似た関数型言語です。

    Erlang VMに基づいており、不変データとパターンマッチングを強制しますが、言語自体の構成要素を形成する強力なマクロシステムでもあります。

    ■Go言語

    Go言語には「C言語」や「Python」などの言語の多くの機能が組み込まれています。

    最新のマルチコアCPUを活用するために設計された並行性レイヤーによる開発を実施できます。

    ランタイム速度比較

    ■Elixir

    Elixirはバイトコードにコンパイルされ、Erlang仮想マシンで実行されます。

    Elixirの基盤となるプラットフォーム「Erlang」は、「メモリ安全性」「ネイティブ分散メッセージング」「フォールトトレラント」などを実現するプロセス管理を提供するために、実行速度を大幅に犠牲にします。

    そのため、ElixirはRubyやPythonなどのプラットフォームよりも高速に実行されますが、Go言語の速度に対抗することはできません。

    ■Go言語

    Go言語はネイティブバイナリにコンパイルされます。

    Go言語は、C++などの言語を置き換えるために、「Webサーバ」「デスクトップアプリケーション」「ゲーム」などの広範囲のプログラミング問題に対するソリューションとして設計されました。

    そのため、実行速度はGo言語の優先事項であり、Elixirよりもはるかに高速に実行されるアプリケーションを生成します。

     

    参考元サイト
    stackshare.io →Languages →Elixir vs Go

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

    基本情報

    概要

    Elixir(エリクサー)とは、関数型並列処理環境「Erlang仮想マシン」上で動作するプログラミング言語です。「マルチパラダイム」「関数型」「並列プログラミング」「スケーラビリティ」「耐障害性」「Ruby風」などの特徴があります。

    基本説明

    Elixirは、並列処理型関数言語「Erlang」のメリットを引き継ぎつつ、「Ruby」風のモダンな文法でコーディングを行えます。「Erlangの並列処理/分散性/耐障害性/高レスポンス」と「Rubyの開発生産性」をあわせ持っています。

    経緯

    Elixirは「Ruby on Rails」のコアチームメンバーJosé Valim氏により開発されました。

    2012年、初期版リリース

    TOPに戻る

    主な特徴

    「Erlang」ベース

    関数型言語「Erlang」は、「リアルタイム並列処理」「高信頼性」「スケーラビリティ」などの特徴で、多くの実績がある言語で、何十年も使われてきています。しかし「構文の癖が強く書きづらい」という弱点がありました。

    Elixirは「Erlang」の高い基本性能を維持しつつ、「Ruby」のように書きやすい高生産性を取り込んでいます。また、「Erlang VM」上で動作するため、Erlangの関数をそのまま活用できます。

    スケーラビリティ(並列処理)

    Elixirコードは、軽量スレッド(プロセス)内で動作します。それぞれ独立してGC(ガーベージコレクション)が行われます。

    プロセスはそれぞれ分離しており、メッセージ経由で情報をやりとりします。軽量であるため、1つのマシン内で数十万のプロセスが同時に動作できます。

    また、同一ネットワーク内の異なるマシン上にある別のプロセスともやりとりできるため、水平スケーリングも可能です。

    対障害性(スーパーバイザー)

    Elixirには「スーパーバイザー」という機能が搭載されています。「予定通りに物事がいかなくなった場合、システムの一部をどのように再起動するか」について定義でき、動作が保証されている状態へ戻せます。

    関数型

    Elixirは不変性を持った関数型プログラミング言語です。関数型プログラミングは、コードを短く/速く/メンテナンスしやすくするためのコーディングスタイルを推奨します。「パターンマッチング」などの機能を利用できます。

    コメント

    コメントをコードの一部として記述できます。Lisp/Pythonにある機能です。

    「メタプログラミング」と「ドメイン固有言語(DSL)」

    「メタプログラミング」とは、プログラム内でプログラム自身を変更できる機能です。制御文も式であるため、構文さえ変更できます。テスト/デバッグに便利です。

    構文改造により、ビルド定義ファイル/Config ファイルのようなドメイン固有言語(Domain-Specific Language)として使用できます。

    拡張性

    Elixirは、生産性の向上のために拡張しやすいように設計されています。

    開発ツール

    Elixirには、開発用ツールセットが用意されています。

    ビルドツール「mix」、標準リポジトリ「Hex」、インタラクティブシェル「iex」、単体テストフレームワーク「ExUnit」などがあります。

    Webフレームワーク

    Elixir用フレームワーク「Phoenix」が人気を集めています。

    TOPに戻る

    その他ポイント

    ・遅延評価と非同期処理
    ・標準でUTF-8ユニコードを採用
    ・ポリモーフィズム
    ・シェアード・ナッシング・アーキテクチャ
    ・再帰重視
    ・ガード節
    ・パイプ

    TOPに戻る

    同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Erlang」「OCaml」「Go」「Scala」など。

    TOPに戻る

    導入事例

    Elixirのベースとなっている「Erlang」は、「Ericsson」「GitHub Pages」「Facebook Chat」「Heroku」「Whatsapp」などの分散/耐障害性の高いアプリケーション構築に使用されています。

    TOPに戻る

    ライセンス情報

    Elixirのライセンスは「Apache License」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

    TOPに戻る

    ダウンロード

    ダウンロードページ

    TOPに戻る

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。


    「Go言語」基本情報

    ■概要

    Go言語(ゴー言語)とは、Googleによって開発されたオープンソースのプログラミング言語です。シンプルで効率的なコーディングを行えるように設計されています。

    ■基本説明

    Go言語は、プログラマーの生産性を向上させるオープンソースのプログラミング言語です。

    Go言語はシンプルかつ効率的な言語です。特に、簡単に並列処理を簡単に記述できる特徴があり、ネットワーク化されたマシンを最大限に活用するプログラムを作成できます。

    ■動作環境

    公式バイナリディストリビューションとして「Microsoft Windows」「Apple macOS」「Linux」向けに提供されています。

    オペレーティングシステムとアーキテクチャの組み合わせでバイナリディストリビューションが利用できない場合は、「ソースからインストール」などを行い利用できる場合もあります。

    →The Go Programming Language →Getting Started

    ■経緯

    Go言語の略歴

    ・2006年頃、開発スタート---Googleの内部プロジェクトとして、Robert Griesemer氏、Rob Pike氏、Ken Thompson氏らによるもの
    ・2009年、オープンソースプロジェクトとしてリリース
    ・2012年、バージョン1がリリース

    影響を受けたプログラミング言語

    Go言語は以下の言語から影響を受けていますが、全面的に新しい言語として開発されています。
    ・C言語
    ・Pascal
    ・Modula
    ・Oberonファミリー
    ・Newsqueak
    ・Limbo
    ・Python など

    開発コンセプト

    Go言語の開発コンセプトは、「プログラマーがどのようにプログラミングするか?」「効果的/効率的なプログラミング」などをベースとして、「プログラミングは楽しくあるべき」という発想に基づいています。

    ■オフィシャルサイト情報

    オフィシャルサイト

    →The Go Programming Language

    ライセンス情報

    Go言語のライセンスは「BSDライセンス」です。

    詳細について、こちらを参照ください。
    →The Go Programming Language →Text file LICENSE

    ダウンロード

    →The Go Programming Language →Downloads

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「C++」「Java」「C#」など。