Julia 1.11 Documentation
Welcome to the documentation for Julia 1.11.
release notesを読んで、前回のリリース以降に何が変更されたかを確認してください。
The documentation is also available in PDF format: julia-1.11.4.pdf.
Important Links
以下は、Juliaプログラミング言語を学び、使用する際に役立つリンクの非網羅的なリストです。
- Julia Homepage
- Download Julia
- Discussion forum
- Julia YouTube
- Find Julia Packages
- Learning Resources
- Read and write blogs on Julia
Introduction
科学計算は伝統的に最高のパフォーマンスを要求してきましたが、ドメインの専門家は日常の作業のために主に遅い動的言語に移行しています。私たちは、これらのアプリケーションに動的言語を好む多くの良い理由があると考えており、その使用が減少することはないと予想しています。幸いなことに、現代の言語設計とコンパイラ技術により、パフォーマンスのトレードオフをほぼ排除し、プロトタイピングに十分生産的で、パフォーマンス集約型アプリケーションの展開に十分効率的な単一の環境を提供することが可能になりました。Juliaプログラミング言語はこの役割を果たします:それは科学的および数値計算に適した柔軟な動的言語であり、従来の静的型付け言語と同等のパフォーマンスを持っています。
JuliaのコンパイラはPythonやRのような言語で使用されるインタプリタとは異なるため、最初はJuliaのパフォーマンスが直感的でないと感じるかもしれません。何かが遅いと感じた場合は、他のことを試す前にPerformance Tipsセクションを読むことを強くお勧めします。Juliaの動作を理解すれば、Cとほぼ同じくらい速いコードを書くのは簡単です。
Julia Compared to Other Languages
Julia features optional typing, multiple dispatch, and good performance, achieved using type inference and just-in-time (JIT) compilation (and optional ahead-of-time compilation), implemented using LLVM. It is multi-paradigm, combining features of imperative, functional, and object-oriented programming. Julia provides ease and expressiveness for high-level numerical computing, in the same way as languages such as R, MATLAB, and Python, but also supports general programming. To achieve this, Julia builds upon the lineage of mathematical programming languages, but also borrows much from popular dynamic languages, including Lisp, Perl, Python, Lua, and Ruby.
Juliaの典型的な動的言語からの最も重要な逸脱は次のとおりです:
- コア言語は非常に少ない制約を課します。Julia Baseと標準ライブラリは、整数演算のような基本的な操作を含め、Julia自体で書かれています。
- オブジェクトを構築および記述するための豊富な型の言語であり、型宣言を行うためにオプションで使用することもできます。
- 関数の動作を多くの引数タイプの組み合わせにわたって定義する能力 multiple dispatch
- 異なる引数タイプに対する効率的で専門的なコードの自動生成
- 良好なパフォーマンスで、Cのような静的コンパイル言語に近づいています。
動的言語を「型なし」と呼ぶこともありますが、実際にはそうではありません。すべてのオブジェクトは、プリミティブであれユーザー定義であれ、型を持っています。しかし、ほとんどの動的言語では型宣言がないため、コンパイラに値の型を指示することができず、しばしば型について明示的に話すこともできません。一方、静的言語では、コンパイラのために型を注釈することができ(通常はしなければなりません)、型はコンパイル時にのみ存在し、実行時に操作したり表現したりすることはできません。Juliaでは、型自体が実行時オブジェクトであり、コンパイラに情報を伝えるためにも使用できます。
What Makes Julia, Julia?
カジュアルなプログラマーは明示的に型や多重ディスパッチを使用する必要はありませんが、これらはJuliaの中心的な統一機能です:関数は異なる引数の型の組み合わせに対して定義され、最も特定の一致する定義にディスパッチすることによって適用されます。このモデルは数学的プログラミングに適しており、従来のオブジェクト指向ディスパッチのように最初の引数が操作を「所有」するのは不自然です。演算子は特別な表記を持つ関数に過ぎません – 新しいユーザー定義データ型に加算を拡張するには、+
関数の新しいメソッドを定義します。既存のコードは、新しいデータ型にシームレスに適用されます。
部分的には実行時型推論(オプションの型注釈によって強化される)と、プロジェクトの開始時からのパフォーマンスへの強い焦点によって、Juliaの計算効率は他の動的言語を超え、静的コンパイル言語に匹敵します。大規模な数値問題において、速度は常に重要であり続け、今後もそうであり続けるでしょう:処理されるデータの量は、過去数十年にわたりムーアの法則に容易に追いついてきました。
Advantages of Julia
Juliaは、使いやすさ、パワー、効率の前例のない組み合わせを単一の言語で作成することを目指しています。上記に加えて、比較可能なシステムに対するJuliaのいくつかの利点には以下が含まれます:
- フリーでオープンソース (MIT licensed)
- ユーザー定義型は組み込み型と同じくらい速く、コンパクトです。
- パフォーマンスのためにコードをベクトル化する必要はありません; デベクトル化されたコードは速いです
- 並列処理と分散計算のために設計されています
- 軽量の「グリーン」スレッド (coroutines)
- 目立たず強力な型システム
- 数値およびその他のタイプのためのエレガントで拡張可能な変換と昇格
- 効率的なサポート Unicode、ただし UTF-8 に限定されません。
- Cの関数を直接呼び出す(ラッパーや特別なAPIは不要)
- 他のプロセスを管理するための強力なシェルのような機能
- Lispのようなマクロとその他のメタプログラミング機能