「Julia (プログラミング言語)」の版間の差分
Momiji-Penguin (会話 | 投稿記録) ウィキデータを利用するように変更 |
書誌情報 |
||
1行目: | 1行目: | ||
{{Infobox プログラミング言語 |
{{Infobox プログラミング言語 |
||
| fetchwikidata |
| fetchwikidata = ALL |
||
| onlysourced |
| onlysourced = false |
||
| name |
| name = Julia |
||
| released |
| released = {{release date and age|2012}} |
||
| latest release version = 1.2.0 |
| latest release version = 1.2.0 |
||
| latest release date |
| latest release date = {{release date and age|2019|08|20}}<ref>{{Cite web|title=Releases|url=https://github.com/JuliaLang/julia/releases|publisher=GitHub|accessdate=2019-10-13}}</ref> |
||
| typing |
| typing = 付随型[[アノテーション]]及び[[型推論]]の[[動的プログラミング言語]] |
||
| license |
| license = [[MIT License]] |
||
| website |
| website = {{ConditionalURL}} |
||
}} |
}} |
||
'''Julia'''(ジュリア)は、[[汎用プログラミング言語]]水準から高度の[[計算科学]]や[[数値解析]]水準まで対処するよう設計された[[高水準言語]]かつ[[仕様記述言語]]、及び[[動的プログラミング言語]]である<ref>{{cite web |
'''Julia'''(ジュリア)は、[[汎用プログラミング言語]]水準から高度の[[計算科学]]や[[数値解析]]水準まで対処するよう設計された[[高水準言語]]かつ[[仕様記述言語]]、及び[[動的プログラミング言語]]である<ref>{{cite web |
||
| title = The Julia Language |
|||
| type = official website |
|||
| url = https://julialang.org/ |
|||
| accessdate = 2014-01-17 |
|||
}}</ref><ref>{{cite web |
|||
| year = 2012 |
|||
| month = Oct |
|||
| last = Bryant |
|||
| first = Avi |
|||
| title = Matlab, R, and Julia: Languages for data analysis |
|||
| url = http://strata.oreilly.com/2012/10/matlab-r-julia-languages-for-data-analysis.html |
|||
| publisher = O'Reilly Strata |
|||
| accessdate = 7 February 2013 |
|||
}}</ref><ref>{{cite web |
|||
| last = Krill |
|||
| first = Paul |
|||
| title = New Julia language seeks to be the C for scientists |
|||
| url = http://www.infoworld.com/d/application-development/new-julia-language-seeks-be-the-c-scientists-190818 |
|||
| publisher = InfoWorld |
|||
| accessdate = 7 February 2013 |
|||
}}</ref>。[[並行計算]]、[[並列計算]]、[[分散コンピューティング]]、及び[[Adapter パターン]]不要で[[C言語]]や[[FORTRAN]]への[[Foreign function interface]]に対応している。[[ガベージコレクション]]<ref>{{cite web |url= https://groups.google.com/forum/#!topic/julia-users/6_XvoLBzN60 |title= Suspending Garbage Collection for Performance...good idea or bad idea?|accessdate=2017-05-25}}</ref>を行い[[先行評価]]を用いるほか、[[浮動小数点数]]計算、[[線型代数学]]、[[高速フーリエ変換]]、[[正規表現]]照合のライブラリを利用できる。 |
|||
[[LLVM]][[コンパイラ]][[フレームワーク]]を用いて[[C言語]]、[[C++]]、[[Scheme]]で組まれており、標準ライブラリの殆どは独自に実装した<ref name=Julia-TR>{{cite web |
[[LLVM]][[コンパイラ]][[フレームワーク]]を用いて[[C言語]]、[[C++]]、[[Scheme]]で組まれており、標準ライブラリの殆どは独自に実装した<ref name=Julia-TR>{{cite web |
||
| format = [[PDF]] |
|||
| title = Julia: A Fast Dynamic Language for Technical Computing |
|||
| url = http://julialang.org/images/julia-dynamic-2012-tr.pdf |
|||
| year = 2012 |
|||
| accessdate = 2014-01-17 |
|||
}}</ref>。2009年に開発が始まり、2012年2月に[[オープンソース]]として公表された<ref>{{cite web |
|||
| title = Why We Created Julia |
|||
| year = 2012 |
|||
| month = Feb |
|||
| type = [[World Wide Web]] log |
|||
| url = http://julialang.org/blog/2012/02/why-we-created-julia |
|||
| accessdate = 7 February 2013 |
|||
}}</ref><ref>{{cite web |
|||
| last = Gibbs |
|||
| first = Mark |
|||
| title = Gear head |
|||
| contribution = Pure and Julia are cool languages worth checking out |
|||
| url = http://www.networkworld.com/columnists/2013/010913-gearhead.html |
|||
| type = column |
|||
| work = Network World |
|||
| date = 2013-01-09 |
|||
| accessdate = 7 February 2013 |
|||
}}</ref>。実装の最も注目すべき特徴は速度であり、完全に最適化したC言語([[Python]]やR言語よりも桁違いに速い場合が多い)と比べて計算パフォーマンスの低下は半分程度であることが知られている<ref name=Julia-TR/>。 |
|||
2018年8月8日にバージョン1.0がリリースされた<ref>{{Cite web|url=https://julialang.org/blog/2018/08/one-point-zero |title=Julia 1.0 |publisher=The Julia Language |date=2018-08-08 |accessdate=2018-08-12}}</ref><ref>{{Cite web|url=https://mag.osdn.jp/18/08/10/163000 |title=プログラミング言語「Julia 1.0」リリース |publisher=OSDNマガジン |date=2018-08-08 |accessdate=2018-08-12}}</ref><ref>{{Cite web|url=http://news.mit.edu/2018/mit-developed-julia-programming-language-debuts-juliacon-0827 |title=MIT-created programming language Julia 1.0 debuts |publisher=MIT News |date=2018-08-27 |accessdate=2018-09-01}}</ref>。 |
2018年8月8日にバージョン1.0がリリースされた<ref>{{Cite web|url=https://julialang.org/blog/2018/08/one-point-zero |title=Julia 1.0 |publisher=The Julia Language |date=2018-08-08 |accessdate=2018-08-12}}</ref><ref>{{Cite web|url=https://mag.osdn.jp/18/08/10/163000 |title=プログラミング言語「Julia 1.0」リリース |publisher=OSDNマガジン |date=2018-08-08 |accessdate=2018-08-12}}</ref><ref>{{Cite web|url=http://news.mit.edu/2018/mit-developed-julia-programming-language-debuts-juliacon-0827 |title=MIT-created programming language Julia 1.0 debuts |publisher=MIT News |date=2018-08-27 |accessdate=2018-09-01}}</ref>。 |
||
78行目: | 78行目: | ||
== Julia開発の契機と他言語(AI系言語)との相違点== |
== Julia開発の契機と他言語(AI系言語)との相違点== |
||
2009年に開発が始まったとされているが、その発端は21世紀の最初期にまでさかのぼる。Julia は、2000年代から2010年代にかけて、MIT(米マサチューセッツ工科大学)の教授であるAlan Edelman氏と彼の同僚たちが中心となって開発した[[コンパイル]]方式の汎用コンピューティング言語であり、動的プログラミング言語である<ref name=MIT-Julia-creation >https://julialang.org/blog/2012/02/why-we-created-julia</ref>。そして、PythonやR言語よりも新しいAI(人工知能)記述言語としても、いま大きな脚光を浴びつつある<ref name= Sunrising-Julia>https:// |
2009年に開発が始まったとされているが、その発端は21世紀の最初期にまでさかのぼる。Julia は、2000年代から2010年代にかけて、MIT(米マサチューセッツ工科大学)の教授であるAlan Edelman氏と彼の同僚たちが中心となって開発した[[コンパイル]]方式の汎用コンピューティング言語であり、動的プログラミング言語である<ref name=MIT-Julia-creation >https://julialang.org/blog/2012/02/why-we-created-julia</ref>。そして、PythonやR言語よりも新しいAI(人工知能)記述言語としても、いま大きな脚光を浴びつつある<ref name= Sunrising-Julia>佐藤純一, 鷲沢嘉一、「[https://doi.org/10.3169/itej.71.74 動的プログラミング言語Juliaの紹介]」 『映像情報メディア学会誌』 2017年 71巻 1号 p.74-77, {{doi|10.3169/itej.71.74}}, 映像情報メディア学会</ref>。 |
||
[[Python]]が[[インタプリタ]]言語であり、20世紀の遺産であるPython2系をまだ用いている事実と対比すれば、同じAI系言語でもJuliaの新しさは明らかであろう。なお、英語版Python公式サイトによれば、2010年1月以降、Python2系は用いられなくなると明確に予告されている<ref name= Sunsetting-Python-2>Sunsetting Python 2 ; https://www.python.org/doc/sunset-python-2</ref>。 |
[[Python]]が[[インタプリタ]]言語であり、20世紀の遺産であるPython2系をまだ用いている事実と対比すれば、同じAI系言語でもJuliaの新しさは明らかであろう。なお、英語版Python公式サイトによれば、2010年1月以降、Python2系は用いられなくなると明確に予告されている<ref name= Sunsetting-Python-2>Sunsetting Python 2 ; https://www.python.org/doc/sunset-python-2</ref>。 |
||
Edelman氏は、MITのJulia Labの責任者で、プログラミング言語「Julia」を管理する企業Julia Computingの共同創設者でもある。新統合型の動的プログラミング言語とは、いわゆる「2つの言語」問題を解決し、統合することを目指そうとしたという意味である。MIT学派がそれを実際に完全に解決したか否かは別問題で、あくまでもそれを目指して実現できる道筋を示したということのほうが画期的であったと言えよう。この「2つの言語」問題とは、人間が比較的簡単に記述できる言語か、コンピュータが比較的簡単に実行できる言語のどちらか1つしか選べないという二律背反、ジレンマの問題である。この二律背反を解決し、「2つの言語」を統合した汎用コンピューティング言語Juliaを開発した動機・契機を、Jeff Bezanson, Alan EdelmanらMIT学派は”Greedy(貪欲さ、飽くなき探求心)”と表現している<ref name=MIT-greedy>https://julialang.org/blog/2012/02/why-we-created-julia</ref>。 |
Edelman氏は、MITのJulia Labの責任者で、プログラミング言語「Julia」を管理する企業Julia Computingの共同創設者でもある。新統合型の動的プログラミング言語とは、いわゆる「2つの言語」問題を解決し、統合することを目指そうとしたという意味である。MIT学派がそれを実際に完全に解決したか否かは別問題で、あくまでもそれを目指して実現できる道筋を示したということのほうが画期的であったと言えよう。この「2つの言語」問題とは、人間が比較的簡単に記述できる言語か、コンピュータが比較的簡単に実行できる言語のどちらか1つしか選べないという二律背反、ジレンマの問題である。この二律背反を解決し、「2つの言語」を統合した汎用コンピューティング言語Juliaを開発した動機・契機を、Jeff Bezanson, Alan EdelmanらMIT学派は”Greedy(貪欲さ、飽くなき探求心)”と表現している<ref name=MIT-greedy>https://julialang.org/blog/2012/02/why-we-created-julia</ref>。開発者にとってのJuliaのメリットは、「2つの言語」問題に対処できる道筋を示したことである。それを考えると、こんにちJuliaへの関心が高まっていることはそれほど不思議ではないだろう。 |
||
開発者にとってのJuliaのメリットは、「2つの言語」問題に対処できる道筋を示したことである。それを考えると、こんにちJuliaへの関心が高まっていることはそれほど不思議ではないだろう。 |
|||
「同じ人や同じチームで原型の作成と展開の両方に対応できれば、サイクルは格段に早まる」「Juliaは汎用コンピューティング言語だが、ビッグデータアナリティクス、ハイパフォーマンスコンピューティング、科学研究や工学研究のシミュレーション実行などに向いている」(Edelman氏)<ref name=Edelman-big-data>https://japan.techrepublic.com/article/35127906.htm</ref>。 |
|||
「Juliaは汎用コンピューティング言語だが、ビッグデータアナリティクス、ハイパフォーマンスコンピューティング、科学研究や工学研究のシミュレーション実行などに向いている」(Edelman氏)<ref name=Edelman-big-data>https://japan.techrepublic.com/article/35127906.htm</ref>。 |
|||
105行目: | 103行目: | ||
* Beginning Julia Programming-For Engineers and Scientists, Sandeep Nagar (2017), Springer. |
* Beginning Julia Programming-For Engineers and Scientists, Sandeep Nagar (2017), Springer. |
||
* Bezanson, J., Edelman, A., Karpinski, S., & Shah, V. B. (2017). Julia: A fresh approach to numerical computing. SIAM Review, 59(1), 65-98. |
* Bezanson, J., Edelman, A., Karpinski, S., & Shah, V. B. (2017). Julia: A fresh approach to numerical computing. SIAM Review, 59(1), 65-98. |
||
===和文=== |
===和文=== |
||
*「Juliaプログラミングクックブック 言語仕様からデータ分析、機械学習、数値計算まで」Bogumił Kamiński 著、Przemysław Szufel 著、中田 秀基 訳、2019/10/、オライリー・ジャパン |
*「Juliaプログラミングクックブック 言語仕様からデータ分析、機械学習、数値計算まで」Bogumił Kamiński 著、Przemysław Szufel 著、中田 秀基 訳、2019/10/、オライリー・ジャパン |
2019年10月15日 (火) 03:49時点における版
Juliaのロゴ | |
パラダイム | オブジェクト指向プログラミング、関数型プログラミング、命令型プログラミング、マルチパラダイムプログラミング、配列プログラミング、メタプログラミング、手続き型プログラミング、並列計算、多重ディスパッチ |
---|---|
登場時期 | 2012年 |
開発者 | Jeff Bezanson、Stefan Karpinski、Alan Edelman、Viral B. Shah |
最新リリース | 1.2.0/ 2019年8月20日[1] |
型付け | 付随型アノテーション及び型推論の動的プログラミング言語 |
影響を受けた言語 | MATLAB、Python、LISP、C言語、FORTRAN、NumPy、Lua、R言語、Scheme、Perl、Ruby |
プラットフォーム | Linux、Microsoft Windows、macOS |
ライセンス | MIT License |
ウェブサイト |
julialang |
拡張子 | jl |
Julia(ジュリア)は、汎用プログラミング言語水準から高度の計算科学や数値解析水準まで対処するよう設計された高水準言語かつ仕様記述言語、及び動的プログラミング言語である[2][3][4]。並行計算、並列計算、分散コンピューティング、及びAdapter パターン不要でC言語やFORTRANへのForeign function interfaceに対応している。ガベージコレクション[5]を行い先行評価を用いるほか、浮動小数点数計算、線型代数学、高速フーリエ変換、正規表現照合のライブラリを利用できる。
LLVMコンパイラフレームワークを用いてC言語、C++、Schemeで組まれており、標準ライブラリの殆どは独自に実装した[6]。2009年に開発が始まり、2012年2月にオープンソースとして公表された[7][8]。実装の最も注目すべき特徴は速度であり、完全に最適化したC言語(PythonやR言語よりも桁違いに速い場合が多い)と比べて計算パフォーマンスの低下は半分程度であることが知られている[6]。
2018年8月8日にバージョン1.0がリリースされた[9][10][11]。
特徴
- 多重ディスパッチ[1] (PDF)
- 動的型付け
- C言語などの静的型付け言語に迫る速い実行速度
- パッケージマネージャが組み込まれている
- Lispのようなマクロやその他のメタプログラミング機能
- Pythonの関数を呼び出す機能
- C言語とFortranのコードの呼び出し[2]
コード例
Hello world
次のコードはJuliaで書いたHello worldプログラムである。
println("Hello, World")
Julia開発の契機と他言語(AI系言語)との相違点
2009年に開発が始まったとされているが、その発端は21世紀の最初期にまでさかのぼる。Julia は、2000年代から2010年代にかけて、MIT(米マサチューセッツ工科大学)の教授であるAlan Edelman氏と彼の同僚たちが中心となって開発したコンパイル方式の汎用コンピューティング言語であり、動的プログラミング言語である[12]。そして、PythonやR言語よりも新しいAI(人工知能)記述言語としても、いま大きな脚光を浴びつつある[13]。
Pythonがインタプリタ言語であり、20世紀の遺産であるPython2系をまだ用いている事実と対比すれば、同じAI系言語でもJuliaの新しさは明らかであろう。なお、英語版Python公式サイトによれば、2010年1月以降、Python2系は用いられなくなると明確に予告されている[14]。
Edelman氏は、MITのJulia Labの責任者で、プログラミング言語「Julia」を管理する企業Julia Computingの共同創設者でもある。新統合型の動的プログラミング言語とは、いわゆる「2つの言語」問題を解決し、統合することを目指そうとしたという意味である。MIT学派がそれを実際に完全に解決したか否かは別問題で、あくまでもそれを目指して実現できる道筋を示したということのほうが画期的であったと言えよう。この「2つの言語」問題とは、人間が比較的簡単に記述できる言語か、コンピュータが比較的簡単に実行できる言語のどちらか1つしか選べないという二律背反、ジレンマの問題である。この二律背反を解決し、「2つの言語」を統合した汎用コンピューティング言語Juliaを開発した動機・契機を、Jeff Bezanson, Alan EdelmanらMIT学派は”Greedy(貪欲さ、飽くなき探求心)”と表現している[15]。開発者にとってのJuliaのメリットは、「2つの言語」問題に対処できる道筋を示したことである。それを考えると、こんにちJuliaへの関心が高まっていることはそれほど不思議ではないだろう。
「同じ人や同じチームで原型の作成と展開の両方に対応できれば、サイクルは格段に早まる」「Juliaは汎用コンピューティング言語だが、ビッグデータアナリティクス、ハイパフォーマンスコンピューティング、科学研究や工学研究のシミュレーション実行などに向いている」(Edelman氏)[16]。
関連項目
脚注
- ^ “Releases”. GitHub. 2019年10月13日閲覧。
- ^ “The Julia Language”. 2014年1月17日閲覧。
- ^ Bryant, Avi (2012年10月). “Matlab, R, and Julia: Languages for data analysis”. O'Reilly Strata. 2013年2月7日閲覧。
- ^ Krill, Paul. “New Julia language seeks to be the C for scientists”. InfoWorld. 2013年2月7日閲覧。
- ^ “Suspending Garbage Collection for Performance...good idea or bad idea?”. 2017年5月25日閲覧。
- ^ a b “Julia: A Fast Dynamic Language for Technical Computing” (PDF) (2012年). 2014年1月17日閲覧。
- ^ “Why We Created Julia” (2012年2月). 2013年2月7日閲覧。
- ^ Gibbs, Mark (2013年1月9日). “Gear head”. Network World. 2013年2月7日閲覧。
- ^ “Julia 1.0”. The Julia Language (2018年8月8日). 2018年8月12日閲覧。
- ^ “プログラミング言語「Julia 1.0」リリース”. OSDNマガジン (2018年8月8日). 2018年8月12日閲覧。
- ^ “MIT-created programming language Julia 1.0 debuts”. MIT News (2018年8月27日). 2018年9月1日閲覧。
- ^ https://julialang.org/blog/2012/02/why-we-created-julia
- ^ 佐藤純一, 鷲沢嘉一、「動的プログラミング言語Juliaの紹介」 『映像情報メディア学会誌』 2017年 71巻 1号 p.74-77, doi:10.3169/itej.71.74, 映像情報メディア学会
- ^ Sunsetting Python 2 ; https://www.python.org/doc/sunset-python-2
- ^ https://julialang.org/blog/2012/02/why-we-created-julia
- ^ https://japan.techrepublic.com/article/35127906.htm
参考文献
英文
- Beginning Julia Programming-For Engineers and Scientists, Sandeep Nagar (2017), Springer.
- Bezanson, J., Edelman, A., Karpinski, S., & Shah, V. B. (2017). Julia: A fresh approach to numerical computing. SIAM Review, 59(1), 65-98.
和文
- 「Juliaプログラミングクックブック 言語仕様からデータ分析、機械学習、数値計算まで」Bogumił Kamiński 著、Przemysław Szufel 著、中田 秀基 訳、2019/10/、オライリー・ジャパン
- Juliaデータサイエンス―Juliaを使って自分でゼロから作るデータサイエンス世界の探索 (原書:『Julia for Data Science - Explore the world of data science from scratch with Julia by your side』Packt Publishing, 2016, written by Anshul Joshi), 2017.