官網:https://julialang.org/
中文社區:https://cn.julialang.org/
Julia 是一個面向科學計算的高性能動態高級程序設計語言。
首先定位是通用編程語言,其次是高性能計算語言。
發展歷史
2019年中,Julia語言誕生於MIT。
2012年2月14日,發布v0.1.0版本。
2018年8月8日,發布v1.0.0版本。
2021年11月30日,發布v1.7.0版本。
誕生背景
嘗試尋找兩種編程語言性能和動態的平衡點:靜態語言和動態語言。
雙重編程語言的問題,語法與速度。
We are greedy: we want more.
We want a language that's open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that's homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled.
期望
Julia 語言的締造者們對它的期望是這樣的:
- 程序運行速度像 C 語言;
- 通用性像 Python 語言;
- 動態語言特性像 Ruby 語言;
- 統計分析便利性像 R 語言;
- 字符串處理便捷性像 Perl 語言;
- 線性代數運算能力像 MATLAB 語言;
- 元編程能力像 Lisp 語言;
- 操作系統的能力像 Shell 語言。
目前來說,上述期望還真在很大程度上實現了!
特點
Fast、Dynamic、Reproducible、Composable、General、Open source
快速、動態、可復用的環境、可組合性、通用、開源
寫起來快
語法基於數學語言。
支持的編程范式:面向對象和函數式。
julia語法復雜度最多有1/3個ruby,1/20個scala,1/30個cpp。---知乎上某用戶的評價
跑起來快
Julia Joins Petaflop Club - Julia Computing
Petaflop :每秒千萬億次浮點運算
Petaflop Club成員目前有四個:Fortran、C、C++、Julia
優缺點
優點
- Julia 的運算速度能接近 C++ 和 Fortran。
- Julia 的可讀性比其他語言好,(十年后回頭看自己的代碼也能秒懂)。
缺點
- 社群小,學習資料主要是英文。
- 包不夠多,目前6000多個了,不過有些處於廢棄狀態。
可持續發展與開源
項目開源,但團隊成員均是全職,幾乎都是 Julia 委員會的長期成員。
資金來源:
- 商業咨詢服務
- 贊助
Fichser(項目的長期貢獻者之一)指出,“開源項目的貨幣化努力總是壓力重重。在項目開發早期,就有一些風投建議我們把性能優化功能當作付費開放的選項,這樣更容易獲利。但我們不想這么干,我們開發 Julia 的初衷就是為人們提供能真正解決困難問題的工具,而為了賺錢故意把核心功能去掉簡直離譜。所以我們堅定了決心,要找到一條既不阻礙技術應用、也能從中獲利的發展道路。”
Julia Computing 公司
https://juliacomputing.com/
該公司成立於 2015 年,其成立最重要的目的就是為了發展 Julia 語言。其旗艦產品 JuliaHub 是一個 SaaS(Software as a Service)平台,允許用戶直接在平台上使用 Julia 開發、部署應用,並擴展上千個節點。
Julia的使用者/Julia Computing的客戶
使用
安裝
下載地址:https://julialang.org/downloads/
- windows:運行exe,一路確認
- linux:https://www.cnblogs.com/qujingtongxiao/p/12595851.html
IDE
- ATOM
https://www.it610.com/article/1283534601997795328.htm - VSCODE
https://www.pianshen.com/article/92131696923/
目前建議用atom,不過未來屬於vscode
線上環境
https://www.nhooo.com/tool/julia/
https://julialang.org/learning/tryjulia/
包管理
Julia現在的包已有6000多個,常用的基本都有了。
已注冊包的路徑:C:\Users{yourname}.julia\registries\General
安裝已注冊的包,在REPL 環境中
- 運行 import Pkg
- Pkg.add("包名")
入門資料
- https://learnxinyminutes.com/docs/julia/
- https://www.math.pku.edu.cn/teachers/lidf/docs/Julia/JuliaIntro.html
入門這兩個足夠了。
項目中的應用
轉表工具
雙周發版、每版500關卡數計算,1年約12萬份關卡。平均關卡大小15K,總大小1.7G。
第一次優化:耗時降低了96%。優化前12分鍾(python),優化后30秒(julia重寫+邏輯優化+多線程)。
第二次優化:耗時降低了60%。優化后12秒(替換使用不當的函數)。
current threads:6
versions num:287
begin:2021-12-21T15:14:09.744
end:2021-12-21T15:14:21.349
cost:11678 ms
per:40.0 ms
參考
https://zhuanlan.zhihu.com/p/70598973
https://zhuanlan.zhihu.com/p/408764534
https://www.infoq.cn/article/0mck3o3diwhUW77RmFJ9
https://www.infoq.cn/article/b0dpmasunf3lbb8y2svq
一圖了解 Julia(lang) v2.0 狐狸教程
《Julia 編程基礎》正式出版! 狐狸教程
https://zhuanlan.zhihu.com/p/105953560