Julia1.0程式語言淺析

JimmyChoo發表於2018-08-18

目前從網上得知Julia1.0這門語言是上升最熱的語言,那麼分析一門語言為什麼會在短時間會很火爆,首先我們需要檢視官方文件來理解基本特性:Julia 語言的官網:https://julialang.org/
Julia 語言專案地址:https://github.com/JuliaLang
通過閱讀官方文件的方法和查閱網上資源來了解一門新技術是一種最快速的學習方法,當然如果作為研究人員可能要去閱讀論文總結特點和規律這個工作其實還是很有難度的。
首先僅個人看法:
這門語言為什麼迅速上升,這個問題回到是python這種函數語言程式設計語言處理矩陣流計算是有很大缺陷,對於矩陣的加減運算和點乘及叉乘是非常佔優勢,這些語言本身的資料型別為其函式程式設計之間的操作提供了方便,但是對於浮點運算其實存在缺陷,通常需要kill一個程式來釋放不然記憶體中沒法清空導致程式溢位或者計算錯誤很多。
再者就是回到C、C++、java三種語言,首先C、C++語言之間的差異是C++擁有了bool型別範類技術,這為構造和析構及其泛化做出來突破性貢獻,而三者的共同點是都擁有陣列這種資料結構操作,資料的操作比比矩陣在記憶體中更加高效,記憶體中的矩陣其實大部分是操作矩陣的秩。所以底層或架構性開發工業級都是這些內容。工業界使用技術一般不需要先進、大公司除外,穩定第一。
其實有一種語言我同事應該很熟悉叫scala非常強大的流處理功能,主要能彌補python和C、C++、java處理兩個問題的合併方面非常簡單。
接下來我們淺談一下Julia這門語言,前段時間python的作者退出可能也是這麼此刻爆發的原因之一。
語言的特點:C語言的速度、Matlab一樣的數學表徵、python的通用程式設計、shell命令。
那麼我個人的理解這麼語言起源類似一個編譯組態Octave的設計思想,這個環境是當時最早在coursera上學習Ng老師第一個版本的機器學習課程中學習到的,那時候好像對python並不熟悉。python上當時這門語言在引力波發現上貢獻很大,所以我關注的。最早了解有個師兄用R語言解決生物資訊科技演算法來自spss、sas、matlab等庫。
我個人學習計算其實最早上一本叫圖解機器學習的日本人書,這本書真心在當時給我很大啟發,讓我從一個數學建模思想轉化到一種思想驗證的路上,最早用到的演算法書魯棒演算法和退火演算法做一個費舍爾判別法的優化用於發達與發展中國家分類。此時感謝我大學的數學建模培訓老師杜老師給我很大啟發。後來在我學習路上學習到了python科學計算,從一個網頁學到一本書真心非常棒,這兩個東西主要是給你一種學習或者學術體系,讓你的路形成一種知識網路圖。
通過閱讀相關資料,Juila該語言應該會在短時間解決計算高效性問題,首先這門語言來自MIT的CSAIL的Alan Edelman教授,優勢是MIT這種學校培養思維是然所有的產品都是一種精品或者藝術品包括人才和技術。哈佛是比較自由一點,培養髮散式突破級天才各有千秋。一種技術其實背後更多是文化,文化不會短時間被代替但是技術永遠在更新。
那麼從文化分析語言優勢,這門語言肯定在後期有一大部分教授團隊和學校維護更新相比某些公司的維護更加具有前沿性和穩定性的支援,公司肯定考慮維護成本和更新,但是學界背景出身的語言一般比較有前瞻性同時使用在工業場景應該有諸多挑戰。
從網上看這門語言擁有完善的體系,但是側重點是《數值計算》,這本書其實有空看看很有意思,同時我最近工作發現返璞歸真的思想開始閱讀小學生和書,它們的書真心很有啟發性,最佩服小學生的寫書作者思維。工業界很多難題可以用小學生的數學課本解決,不信堅持閱讀10萬小時小學生的各類數理化書看看,包括偶讀讀語言的文學。文學是哲學的思想基礎,哲學是數學等STEM的基礎。以前看過一本小說:一句話深有感悟,當你迷茫時候請教問題的人是小孩、老人。這兩類人是兩類書,第一類思想與可行性指導(這種方法叫推理與邏輯),第二類經驗和考慮問題全面性(這種方法叫歸納法)。現在的小孩很多人學習奧數、心算、IO競賽、ACM競賽。這種高強度思考已經開發思維到極致,所以不要看不起小孩子無知,其實它們的思考更加理性更加可行。小孩解決的問題思路方法總結出來可能就是世界級難題的解決方法,在量子力學中N維的問題放到N-1空間解決才能防止概率波奔潰和薛定諤的貓類似。返回來說這門語言特點主要部分肯定是資料結構,那麼我們要研究它資料結構型別就懂為啥可以在自動駕駛這種對語言非常的技術都能用Juila,那它的運算機制規律肯定是一種特殊的結構,這是一種過程性不是函式解釋性程式設計特點。平行計算和科學計算說明該語言具有特殊機制可以實現浮點運算的執行緒同步技術流,該技術是時空轉換基礎。
這門語言相容python、R、C/C++、java庫使用範圍肯定會很廣泛,那麼這門語缺點也可以看出來目前廣泛但是專業程度估計需要後期研究人員參與維護。
總結語言特點:
C語言速度
Ruby語言靈活性
Lisp真實巨集
matlab/octave數學符號運算與矩陣
py通用型程式設計
R計算
perl字元處理
shell膠水性互動
綜上特點:該語言擁有互動性和可編譯的數理資料結構,可以通過這兩個方向來研究這麼語言的資料結構更加有助於演算法的使用與研究。
這門語言未來可能有的研究根據特點如下:
LLVM多平臺編譯的本地高效性,快速
多分配範化是的程式設計模式更加容易例項多物件,便於程式控制和包管理同時便於語言分析,通用
動態型語言具有指令碼語言的互動功能,動態
多分配更加擅長平行計算類陣列及陣列運算,科學計算專業
描述型資料型別是的程式宣告清晰便於人類理解接近人類語言,資料型別多樣性
資料包組合便於流計算處理,這塊python沒有scala做得好,組合是一個非常重要的工業技術。
https://docs.julialang.org/en/release-0.7/NEWS/ 特點改進與優缺點分析地址。
一種新技術是一種革命,通常在方案或者技術檔案中是 各種動態規劃與樹,在工業生產實際技術是for迴圈和分治。程式設計是一種將想法實現的過程和工具,是一種證明思維和自然客觀現象的技術。所以技術永遠在進步思維不要被限制是關鍵。當技術一定程度時候其實閱讀量子力學和某些佛學、道學、神學或者哲學更加在一個高層才能突破是一種最強大的自我語言創造。

相關文章