我是如何愛上 Julia 編程語言的?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"},{"type":"strong"}],"text":"本文出處發表於 Towards Data Science 博客,經原作者 Emmett Boudreau 授權,InfoQ 中文站翻譯並分享。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲什麼 Julia 很快成了我最喜愛的數據科學編程語言。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"引言"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"談及 2020 年的數據科學,幾乎任何事情都有很多選項可供選擇。這樣對數據科學家來說,既是一個積極的方面,因爲科學家可以使用更多的工具工作、預測,同時也是一個消極的方面。因爲有了如此多的選擇,很難清楚地指出在某些情況下,哪種特定的工具能夠工作,或者最適合解決某個問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當我在進行研究的時候,偶然接觸到一種比較新的科技,那就是 Julia 編程語言。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那時,我一直在用 Python 編寫基於 C 語言的後端模型,還有一些 Sklearn 和 Tensorflow 模型,我發現這些模型維護起來非常複雜。在我的特定方案中,當通過請求移動大量數據堆時,我發現自己總會遇到 Pythonic 超時的情況。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在類似這樣的場景中,C 後端無疑已經證明了自己的地位,但同時也帶來了一個問題。大多數 Python 模塊都是用 C 語言編寫的,而不是 Python,這些模塊在速度方面與其他命令式語言的解決方案相競爭。對於我來說,這讓整個系統變得更加令人惱火,開發軟件並將其從高級 Python 前端轉移到工作中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"說白了,這確實是一個明智的解決方案,C 語言可能是能夠快速重複某些內容並使其可靠的最佳方法之一,因此最快的、行業標準的工具採用這個系統是有道理的。但是,要記住,雖然 Python 由 C 語言解釋,但 C 是一種不同的語言;這意味着 C 的專有實現常常需要某種依賴系統。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Julia 是如何解決這些問題的"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"總結一下我對 Python 的失望之處,它是用於 C 語言的一種優秀工具,但由於它是聲明性的且面向腳本的,因此通常很難設計出底層解決方案。也就是說,以 Python 的方式運行 Python 實際上會非常緩慢,並且肯定不適合機器學習或大數據操作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Julia 是一種高級、多範式、高級的編程語言,最近才發佈了 1.5 版本,如果你在這個行業,現在就去看看吧!"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"速度"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Julia 是一種速度非常快的編程語言,每個使用它的人都可能是爲了這個而學的。使用實時(Just-In-Time,JIT)編譯不僅能快速編譯,而且使用多態(polymorphic)和語法表達式編寫也快得令人難以置信,這些表達式往往能夠將完整的函數壓縮到一行代碼中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"依賴關係"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於依賴關係,Julia 也有一個非常有吸引力的方法。在 Julia 中,環境是以簡單的文本數據的形式存儲的,即"},{"type":"codeinline","content":[{"type":"text","text":".toml"}]},{"type":"text","text":"文件,該文件保存了給定項目的所有依賴關係信息。這使得科學家們可以非常容易地彼此分享環境,並更高效地進行合作。它也使得部署模型就像把它放到一個文件夾裏一樣簡單。要知道,Python 的 Pip 環境也有類似的模式,但 Julia 語言真正領先之處在於與預編譯、文件管理和存儲庫的完美集成。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"數據"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對數據類型,Julia 有獨特的處理方法,它使得探索不同類型的統計和科學數據變得更加容易,並使數據可以像在論文中一樣表達。對於大數據狂人來說,有"},{"type":"codeinline","content":[{"type":"text","text":"Big"}]},{"type":"text","text":"類型,能夠很好的保持浮點精度和整數精度。對於字典迷來說,任何數據類型都可以是一個包含符號的鍵,這意味着可以通過任意的數據表示形式調用字典鍵:我認爲這比在很多時候使用整數或字符串更好。尤其是在科學研究領域更是如此。集合可以獲得唯一的數據集,並且可以用於許多算法,在 Julia 語言中,還有許多類型非常有趣。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據和代碼的另一種擴展是元編程,感興趣的用戶可能會高興地發現,Julia 語言非常適合元編程。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"靈活性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後,真正讓我傾向於主要成爲 Julia 程序員的是這門語言的靈活性。在 Julia 中,從經典的函數式編程到完全不同的範式,只需一行簡單的代碼,就可以輕鬆實現。Julia 中的表達式是令人難以置信的,只需一行代碼就可以輕鬆地產生科學影響。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"總而言之,目前業界領先的解決方案都是很好的工具,但其中肯定也有不同的工具值得探討。我碰巧真正愛上的工具是 Julia 及其相關的生態系統,它也在快速發展,這讓我興奮不已。作爲一名數據科學家,不斷更新最新、最棒的工具,甚至實驗性工具,對你的行業來說可能都是至關重要的。Julia 是一門神奇的語言,我想任何想要在數據科學中使用它的人,都會喜歡它。無論這門語言能否會成爲你代碼庫的主要貢獻者,我認爲它肯定是一種我樂於學習並從中學到許多東西的技能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"作者介紹:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Emmett Boudreau,數據科學家。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/towardsdatascience.com\/how-i-came-to-love-the-julia-language-948c32e2f9b0"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章