「Julia」の言語仕様として、「Julia言語の目標」「言語仕様概要」「科学技術計算向け言語」「マルチパラダイム言語」「型宣言」「関数定義」「その他の言語仕様ポイント」について紹介します。

「Julia」の言語仕様

「Julia」の言語仕様として、「Julia言語の目標」「言語仕様概要」「科学技術計算向け言語」「マルチパラダイム言語」「型宣言」「関数定義」「その他の言語仕様ポイント」について紹介します。

■関連する比較ページ

「Julia」の言語仕様

■Julia言語の目標

Julia開発チームは、目指している最終的なJuliaの姿として、次のような目標を掲げています。
・ゆるやかなオープンソースライセンス
・コンパイルできる言語
・C言語の高速性
・Ruby言語の動的性
・Lisp言語のような真のマクロが使える同図象性
・Matlabのように分かりやすい数学記述と線形代数計算機能
・Python言語のような汎用性
・R言語のような統計処理機能
・Perl言語のような文字列処理機能
・シェルのように簡単に使用できる複数パーツ連携機能
・ベテラン技術者(研究者)も満足できる高機能性
・Hadoopのような大規模分散コンピューティングへの対応
・インタラクティブ性
・低い学習コスト

→丸井綜研 →なぜ僕らはJuliaを作ったか(翻訳)

■言語仕様概要

Juliaは「LLVMコンパイラフレームワーク」を用いて「C言語」「C++」「Scheme」などで実装されています。ほとんどの標準ライブラリは独自実装されています。

Juliaは、言語設計とコンパイラ最適化技術により、パフォーマンスに関する多くのトレードオフを排除でき、プロトタイプ化に十分な生産性を持ち、パフォーマンスを重視するアプリケーションを展開するのに十分な単一環境を提供することを可能にします。

Juliaは厳密な低レベルループから高レベルのプログラミングスタイルに至るまで、複雑なアルゴリズムを簡単に表現できます。プログラミングレベルでの連続的なスペクトルが、Juliaのプログラミングに対するアプローチの特徴であり意図的に設計されています。

型推論とJIT(ジャストインタイム)コンパイルにより、「オプションの型指定」「多重ディスパッチ」「優れたパフォーマンス」を実現します。

■科学技術計算向け言語

Juliaは、従来の静的型付き言語に匹敵するパフォーマンスで、科学的数値計算に適した柔軟な動的言語です。

「科学技術計算向け言語」とは、専門的な科学技術分野(線形代数、数値解析、統計解析など)での計算処理に特化させた言語です。多くの専門的な計算用ライブラリが用意され、計算処理をシンプルに記述できるように設計されています。

科学技術計算向け言語であるJuliaも、「MATLAB」や「numpy/scipy」と同じような感覚で利用でき、多次元配列などについて簡単に扱えるように設計されています。

■マルチパラダイム言語

Juliaは、「命令型」「機能型」「オブジェクト指向プログラミング」などを組み合わせたマルチパラダイム言語です。

R/MATLAB/Pythonなどの言語と同じように、一般的なプログラミングをサポートしていることに加え、高度な数値計算のための容易さと表現力を提供します。

Juliaは数学プログラミング言語の系統をベースにしていますが、マルチパラダイムを実現するために、Lisp/Perl/Python/Lua/Rubyなどの一般的な動的言語の汎用性も組み入れています。

■型宣言

一般的な動的言語において、基本的にはユーザー定義なども含め、すべてのオブジェクトに型があります。しかし、ほとんどの動的言語での型宣言の欠如は、コンパイラに値の型について明示的に指示できないことを意味します。

一方、静的言語では、コンパイラの型に注釈を付けることができますが、型はコンパイル時にのみ存在し、実行時に操作または表現することはできません。

Juliaでは、型はそれ自身が実行時オブジェクトであり、情報をコンパイラに伝えるためにも使用できます。

■関数定義

Juliaのプログラムコードは、複数のディスパッチを中心に編成されています。

Juliaにおいて、関数はさまざまな引数型の組み合わせで定義され、最も具体的なマッチング定義にディスパッチすることによって適用されます。

このモデルは、従来のオブジェクト指向のディスパッチのように「操作を所有する」という第一引数が不自然である数学的プログラミングに適しています。演算子についても、特別な表記法を持つ関数に過ぎません。

新しいユーザー定義データ型への追加を拡張するためには、関数の新しいメソッドを定義します。既存コードは、新しいデータ型にシームレスに適用されます。関数を定義し、それらを引数の型の異なる組み合わせに対してオーバーロードすることによるユーザー定義も行えます。

■その他の言語仕様ポイント

・スクリプト言語
・構文は「MATLAB」ベース
・複数ディスパッチ(引数型の多くの組み合わせで関数の動作を定義)
・さまざまな引数型による効率的で特殊なコードの自動生成
・動的型システム(文書化/最適化/ディスパッチタイプ)
・組み込みパッケージマネージャ
・Lispのようなマクロ機能
・メタプログラミング機能
・他プロセス管理機能
・並列処理(分散計算用に設計、軽量スレッディング)
・拡張可能なコンバージョンとプロモーション
・ガベージコレクションによる先行評価
・Unicodeの効率的なサポート など

 

参考元サイト

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

Julia最新TOPICS

【OSS】分析データベース「JuliaDB」---Julia言語でクエリ作成、高速並列処理、高速CSVパーサー(2020年09月14日 10:20)

「JuliaDB」とは JuliaDBは、大規模永続データセットを操作するためのパッケージで、優れたパフォーマンスを発揮する分析データベース機能を提供する。 「Julia言語」をベースに構築されており、Pandasなどの同様プロダクトと比較しても、優れた機能を利用できる。 「the MIT "Exp...

Julia最新CLOSEUPコラム

イベント情報

セミナー講演資料

無料資料プレゼント

2021/03/04 セキュリティDAYS Keyspider資料

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



セミナー講演資料公開中

ローコード/ノーコードのツール比較と内製化 ~ユーザー企業は、ノーコード/ローコードで内製化できるのか?~

CI/CDが開発ガバナンスの弱体化を招く?回避する方法とは ~複数ツールの組み合わせで生じる問題を、統合プラットフォーム「GitLab」で解決~

エンジニアにとって「情報発信」は重要なのか? ~テックピット DEVELOPERS RESKILLING CONFERENCE クロージングセッション~

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter