原文地址:編程
https://blog.csdn.net/seekiu/article/details/47397067markdown
隨着 Julia 1.0版本的推出,人工智能圈子比較炸鍋, 好像這門小衆語言要趕超Python了, 做爲如今編程領域的大佬,Python最被人詬病的就是運算性能,恰巧 Julia 是已高性能並行計算爲主打,而且兼顧了語法簡潔和動態性,好奇之下找了找網上的相關資料,發現確實是過小衆了,最後發現了下面這篇文章,以爲有些用處。 編程語言
如下爲原文內容:函數
上一篇博文中推薦了 Python 的 JIT 編譯器 numba,這兩天又用空餘的時間嘗試了一下最近的一個新興語言 Julia。Julia 的目標設定得很高,將來是要成爲一個速度上接近甚至超過 Fortran/C 這樣的傳統語言的通用編程語言。然而就我這兩天很初步的嘗試結果看來,它也許有這個能力,但至少目前,對工程計算的人來講,尚未達到 production-ready 的程度。(固然,這只是基於我我的的編程經驗和需求的結論,極可能不適用於其餘人。並且Julia自己是一門相對年輕的語言,很值得持續關注。)工具
之因此這樣說,有三個方面的理由:性能
-
做爲一個動態語言,它的 JIT 編譯器(在不少狀況下)尚未智能到,讓我能夠同時享受動態語言的便利和它的速度優點。例如最近我在試用 Julia 時最早嘗試的就是把原來用 Numba 寫的函數重寫一遍,然而發現結果很是很差。Julia 版本的函數執行速度至關於純 Python 的速度,與 Numba 版本相差三個數量級,佔用的內存也異常地大。後來發現,最主要的緣由是三層嵌套循環中,循環長度我按 Python 的習慣定義爲變量,而在 Julia 中不變的全局量最好聲明爲常量。僅僅這個修改,讓速度提高了兩個數量級,但還不及 numba 的速度。進一步的測試還能夠經過一些細小的地方來進一步提高速度,如這篇文章作的那樣,最終高度優化以後速度也許能夠達到接近 Fortran。可是,若是要這樣作,爲何不乾脆用 Fortran 呢?相比之下,numba 的可用性就要高太多了。不過畢竟它如今的穩定版本仍是0.3.10,還須要再給它一點時間發展成熟。測試
-
做爲一個新興、小衆的語言,相關的工具鏈還太弱了。沒有合格的 IDE,Juno 在我看來如今連半成品都還算不上。包管理彷佛是用的 Git,有時會出一些奇怪的問題,這時候用
Pkg
倒還不如手動去管理。調試程序也比較痛苦,一方面是不少錯誤信息跟沒給差很少,像我這種不熟悉的人基本只能用print
一半一半地查,另外一方面是相關的調試工具也還不夠好用。優化 -
文檔、相關信息還太少。已經有很多人開始使用 Julia,但網上公開的信息中,官方的文檔還比較簡陋,其餘用戶貼出的博客也不多。這致使在遇到問題的時候,很難快速地難過 Google 直接獲得問題的答案,而每每須要在社區中等待圈內人士的解答。人工智能
另一個對 Julia 印象不太好的是,官網給出的 benchmark 沒有多少參考價值,至少其結果中 Python 和 Matlab 都頗有問題,多半是單純地逐行翻譯出來的程序。這就跟我把 numba 的程序直接翻譯成 Julia,而後得出結論它很慢同樣,是不公平的比較。spa
無論怎麼樣,Julia 目前看來仍是值得持續關注的,可是目前,我還不會考慮把它做爲主要的計算語言。