他の言語との注目すべき違い

他の言語との注目すべき違い

MATLAB との注目すべき違い

MATLAB ユーザーはジュリアの構文を親しみやすいと思うかもしれませんが、Juliaは MATLAB クローンではありません。構文や機能の違いは大きいです。MATLAB に慣れているJuliaユーザーがつまずきやすい注目すべき違いは次のとおりです:

  * Juliaのsvdは特異値を密な対角行列ではなくベクトルとして返します。   * Juliaでは、 ...はコード行を継続するためには使用されません。代わりに、不完全な式は自動的に、次の行へと解釈が継続します。

R との注目すべき違い

One of Julia's goals is to provide an effective language for data analysis and statistical programming. For users coming to Julia from R, these are some noteworthy differences:

Python との注目すべき違い

C/C++ との注目すべき違い

*文字列リテラルは "または""" で囲って表記することができます。 """ を使った文字列リテラルは、"\"" のようにクオートすることなく、文字 " を内に含むことができます。文字列リテラルは他の変数や式の値を 展開して用いることができます。そこでは、$variablename$(expression) と言った具合に書かれ、変数名や式をその文字列を用いたコンテキストの中で評価されます。

*慣例により、引数を変更する関数は名前の最後に !を持ちます。例えば、push! などです。

Common Lisp との注目すべき違い

arbitrary index offsets.

COMMON-LISP:CONS. Various iterable collections can be used interchangeably in most parts of the language (eg splatting, tuples, etc). Tuples are the closest to Common Lisp lists for short collections of heterogeneous elements. Use NamedTuples in place of alists. For larger collections of homogeneous types, Arrays and Dicts should be used.

manipulation of the image, implemented with the Revise.jl package.

overflow.

using have a dual role: they load the code and make it available in the namespace. import for only the module name is possible (roughly equivalent to ASDF:LOAD-OP). Slot names don't need to be exported separately. Global variables can't be assigned to from outside the module (except with eval(mod, :(var = val)) as an escape hatch).

language as Common Lisp; consequently, macro usage is not as widespread as in the latter. A form of hygiene for macros is supported by the language. Because of the different surface syntax, there is no equivalent to COMMON-LISP:&BODY.

don't have to follow the same template, which leads to a powerful idiom (see do). Optional and keyword arguments are handled differently. Method ambiguities are not resolved like in the Common Lisp Object System, necessitating the definition of a more specific method for the intersection.

se*. M.var evaluates the symbol var in the module M.

including closures, but isn't always the idiomatic solution for Julia. Some workarounds may be necessary for performance when modifying captured variables.