JuliaとPythonを比較

    「Julia」と「Python」の比較

    「Julia」と「Python」は、オープンソースのプログラミング言語です。どちらも「科学技術計算」「統計」「機械学習」などの分野で力を発揮します。

    ■概要

    Julia

    Juliaは、科学計算処理向けの高水準/動的プログラミング言語です。比較的新しい言語で「JITコンパイラによる高速処理」「外部ライブラリ連携」などの特徴があります。

    Python

    Pythonは、パワフルなオープンソースプログラミング言語です。「インタプリタ」「動的型付け」「純粋オブジェクト指向」「インデント強制ルール」などの特徴を持ちます。

    コンピューティングやデータ分析の作業をより迅速かつ便利にする「ライブラリ」「ツール」「アプリケーション」などのエコシステムが豊富に備わっています。

    ■処理速度比較

    Julia

    Juliaは、「LLVMベースのJITコンパイラによる実行時コンパイル」により、非常に高速な処理を行えます。

    Pythonの処理速度と比較する場合、「ケースによってはJuliaはPythonの30倍程度高速」というデータもあります。

    ■ライブラリ比較

    Julia

    Juliaは「歴史が浅いためライブラリ数が少ない」という問題がありますが、外部ライブラリ連携でカバーできるようになっています。

    「C」「Fortran」などの共有ライブラリの外部関数について、ラッパーコード不要で呼び出せます。

    また、「PyCall」「PyPlot」「IPython Notebook」などを使用すると、Pythonコードを呼び出せます。

    Python

    Pythonは、長い歴史があり、コミュニティが膨大な数のライブラリを作成してきているため、「matlplotlib」「Spyder」「ipython」など、非常に多くのライブラリが用意されています。

    ■分散処理比較

    Julia

    Juliaは「並列処理」「分散(クラウド)コンピューティング」も視野に入れて設計が行われているため、Pythonよりも並列処理コードを実装しやすいメリットがあります。

    ■開発コミュニティ比較

    Julia

    Juliaの開発コミュニティは熱心に成長を続けています。

    Python

    Pythonは、Juliaのコミュニティサイズを圧倒する開発コミュニティを抱えており、世界中で日々開発が行われています。

     

    参考元サイト

    「Julia」基本情報

    ■概要

    Julia(ジュリア)とは、科学計算処理向けの高水準/動的プログラミング言語です。比較的新しい言語で「JITコンパイラによる高速処理」「外部ライブラリ連携」などの特徴があります。

    ■基本説明

    Juliaは、「実行速度」と「記述性」の両立を目指したテクニカルコンピューティングのためのハイレベルで高性能な科学技術計算向けプログラミング言語です。

    オフィシャルサイトでは『他の技術計算環境のユーザーに馴染みのある構文を備えた、高レベル・高パフォーマンスな技術計算のための動的プログラミング言語』と説明されています。

    「高度なコンパイラ」「分散並列実行」「高い数値精度」「広範な数学関数ライブラリ連携」を提供します。

    Juliaは、汎用プログラミング言語水準から高度の計算科学や数値解析水準まで対処するよう設計された高水準/動的プログラミング言語で、Julia自身で実装された基本ライブラリをコアとして、C/Fortranライブラリを統合することで、「線形代数」「乱数生成」「信号処理」「文字列処理」などの機能を実現します。

    ■経緯

    2012年2月、オープンソース公開されました。

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

    オフィシャルサイト

    →Julia(The Julia Language)

    ライセンス情報

    Juliaのライセンスは「MIT License」です。

    詳細について、こちらを参照ください。
    →GitHub →JuliaLang/julia →LICENSE.md

    ダウンロード

    →Julia →downloads

    ■同様製品

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

    オープンソース製品:「R言語」「Python」など。


    「Python」基本情報

    ■概要

    Python(パイソン)とは、パワフルなオープンソースプログラミング言語です。インタプリタ、動的型付け、純粋オブジェクト指向、インデント強制ルールなどの特徴を持つスクリプト言語です。

    ■基本説明

    Pythonは、汎用の高水準プログラミング言語として設計されています。

    Pythonは、その言語発展経緯/文法上特徴から、初心者にも扱いやすいシンプルな言語と言われています。可読性に優れています。

    さまざまな領域に対応する大規模な標準ライブラリを提供しています。ライブラリと一体となったPythonは、単なる言語ではなく、フレームワークレベルの力を持っています。

    豊富なライブラリにより、Webアプリ/GUIアプリの作成も可能です。また、理工学、統計解析など、幅広い領域で使用されています。

    「Perl」や「Ruby」に比べて大規模プログラムを作りやすいという利点があります。小さなスクリプトを大きなプログラムに拡張しやすいという特徴もあります。

    Pythonは、複数のプログラミングパラダイムに対応しています。オブジェクト指向型、命令型、手続き型、関数型などのスタイルでコーディングできます。

    ■経緯

    Pythonは、オランダ人の「Guido van Rossum」氏が開発しました。

    「Python」の名前は、イギリスのテレビ局BBCが製作したコメディ番組『空飛ぶモンティ・パイソン』に由来しています。

    「Python」を直訳した「ニシキヘビ」が、Python言語のマスコット/アイコンとして使われています。

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

    オフィシャルサイト

    →Python

    ライセンス情報

    Pythonのライセンスは「Python Software Foundation License」です。

    詳細について、こちらを参照ください。
    →Python →History and License

    ダウンロード

    →Python →Downloads

    導入事例

    GoogleやFacebookで使われているという実績があります。YoutubeやDropboxもPythonで記述されています。開発者からの人気は高く、世界レベルでランキング上位にあり、幅広く利用されています。

    ■同様製品

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

    オープンソース製品:「Ruby」「PHP」「Perl」など。

    「Python」の主な特徴

    ■スクリプト言語

    Pythonはスクリプト言語であり、コンパイルを必要としないプログラミング言語です。「軽量プログラミング言語」ともいわれ、記述が容易、コンパイル不要などの特徴があります。

    一方、実行速度に難があるとされることもあります。

    ■パワフル/高速

    Pythonは、高度に最適化されたバイトコードコンパイラ/ライブラリにより、多くのアプリケーションで十分な速度で実行することができます。

    ■連携性

    Pythonは、Java/.NETなどの、他のフレームワークオブジェクトと組み合わせることができます。

    ■拡張性

    C/C++で拡張モジュールを作成したり、既存のコードをSWIGやBoost.Pythonを使ってラップして使用することができます。

    ■インデント強制ルール

    Pythonは、Javaのように「 { 」(中カッコ)は使用しません。Rubyのように「end」も使用しません。

    Python独特な大きな特徴として、「インデント(字下げ)強制ルール」があります。コーディングルールとして、ブロック構造はインデントで表現します。

    コーディング自由度が制限されるため、誰が書いても同じようなコードになります。簡潔に、より少ないコード行数でプログラムを表現でき、とてもクリーンで読みやすいコードになります。

    ■クロスプラットフォーム

    Windows、Linux/Unix、MacOSなど多くのメジャーなOSで動作させることができます。

    ■学習しやすい

    ドキュメントが豊富に存在しています。

    ■pip / PyPI(Python Package Index)

    「pip」とは、Pythonで書かれたパッケージソフトウェア管理システムです。また、PyPI(Python Package Index)というリポジトリがあり、非常に多くのライブラリ(パッケージ)が登録されています。

    ■バージョン体系

    Pythonのバージョンは、旧型「2.x系」と新型「3.0系」があります。後方互換性は保証されていません。

    ■その他のポイント

    ・多くの基本的な機能は標準搭載
    ・広範囲に及ぶ標準ライブラリとサードパーティモジュール
    ・完全なモジュール化サポート(パッケージ階層化もサポート)
    ・アプリケーションに組み込んでスクリプトインタフェースとして利用することが可能
    ・マルチパラダイム
    ・動的型付け
    ・関数型言語
    ・直感的なオブジェクト指向
    ・WSGI(Web Server Gateway Interface)によるインターフェース統一化
    ・インタラクティブシェル
    ・ガベージコレクション
    ・例外ベースのエラーハンドリング
    ・ドキュメンテーションスクリプト機能
    ・過去のプログラム言語の便利な考え方を多数取り入れている
    ・科学演算や機械学習で利用可能なライブラリが多数用意されている など