Julia到底哪好在哪,让数学学霸接触2年就定了终生?还传授读者学数学的秘诀...
大家好,我是為人造的智能操碎了心的智能禪師。
今天內容很有料,禪師這里就不多說了。只提醒一句,有彩蛋。
全文大約4000字。讀完可能需要好幾首下面這首歌的時間
?
天下武功,唯快;新秀出世,求快
2009年的一個下午,中國還沒有完全從北京奧運會的亢奮中恢復平靜。
在世界的某個角落里,有四個年輕人。他們正在合租房中,默默無語的埋頭擺弄著手里的Matlab。屋里的氣氛有些安靜,有些單調,有些無聊。
終于,其中一個人按捺不住,一拍桌子站了起來!其余三人停止了手上的動作,抬頭看著他。
”沙雕Matlab!”站起來的那個人,從嘴里擠出這幾個字。其余三個人互相對視一眼,點了點頭,表示贊同。
站起來的那個人,環視一圈,突然眼中精光四射,青筋暴起。他的頭發仿也佛被無形的氣流擾動,開始飄舞起來。
午后的陽光透過打開的窗戶,射到他的臉上,使得他的臉上泛起了一層金色的光芒。他轉頭向窗外的遠山望去,其余人跟著他的目光也都望向窗外…
誰也沒有想到,3年后,一個武林新秀甫一出世便鋒芒顯露。
誰也更沒想到,9年后,這位武林新秀會成長為江湖中的第一快劍。
至此,禪師實在編不下去了…
上文中提到的4個年輕人,分別是Jeff Bezanson, Stefan Karpinski, Viral B. Shah, 和Alan Edelman。
這群計算機和數學天才們,將Matlab的不滿,轉化成開發一門新語言的動力,創造了Julia這門編程語言。
Julia是什么?能做什么?
Julia對比R和Python有什么區別呢?
最新TIOBE排行榜中,Python排名第4;R第15;Julia第43。對應的,Python是1989年出世的語言,R是1995年,R是2012年。
在一些特定的場合下,Julia的速度是超越R和Python的。這三種語言各有所長,每個都有不少死忠用戶。
大家對Python和R已經很了解了。Julia雖然現在也獲得了不少關注,但真正了解這門語言、研究比較透徹的人,還是比較少。
其實很好理解。大家都覺得程序員是一個高薪、剛需的崗位,于是很多人投身于碼農大軍中。
然而企業并不在乎你對某種語言的熱愛程度。企業最關心一門語言是否值得信賴、是否有充足的維護資源、是否被驗證過擁有很好的擼棒性。
?這位小哥給出了好的擼棒性的示范?
對新手來說,選擇一門擁有成熟生態系統的語言,也更劃算?;旧显趯W習過程中遇到的問題,無論角度有多刁鉆,總能找到前人留下的解決方案。
但總有一些人,不在乎為了所謂的高薪去迎合主流。他們有著超越常人的心智、能力和毅力,更有比常人強數倍的獨立精神。
他們只為自己的興趣工作,而不是為了工資。Chris Rackauckas,就是這樣一個人。他同時也是Julia內部成員之一,為Jualia編寫了第三方庫DifferentialEquations.jl。
項目地址 ?
http://julidiffeq.org/
他在接觸到Julia之前,就已經精通包括Python、R在內的多種編程語言。但是當他開始接觸到Julia的時候,他義無反顧、全身心的投入到Julia的懷抱。
所以,“到底是道德的淪喪還是人性的扭曲”?就讓禪師來揭開這層神秘的面紗。
誰是Chris Rackauckas?
禪師:先讓我們的讀者認識一下你吧,請來一段自我介紹吧。
Chris(以下簡稱C):親愛的中國朋友們大家好,我叫Chris Rackauckas,來自南加州的Mission Viejo,一個與Irvine相連的城市,這也被稱為橙縣。雖然是洛杉磯和圣地亞哥之間的一個小點,有點偏,但我敢說這兒的海灘全世界最美!?
我是馬里蘭大學巴爾的摩分校的高級研究員,加州大學歐文分校的博士后學者,以及麻省理工學院的應用數學講師。?
我剛獲得數學博士學位,研究了如何使用隨機微分方程在發展中的斑馬魚后腦中控制生化相互作用的隨機性(隨機性)。在這項工作中,我為Julia編程語言構建了微分方程求解器庫DifferentialEqu。
結緣Julia
禪師:你是怎么和Julia結緣的?
C:大概是在兩年半前吧。開始我寫了一些關于在Julia做有限元法的文章,后來很快開發了DifferentialEquations.jl。
Juliacon 2017上遇到了Julia的創始人。然后又遇到了來自馬里蘭大學的Vijay Ivaturi,當時Vijay正在尋找在用Julia建一個藥物計量學 模擬器。
他聯系到了Julia Computing的作者,提到他需要微分方程,因此他們就我來接手,Julia Computing為JuliaDiffEq起到了很大的幫助。
我現在是Julialang Google Code夏令營的管理員,都吸引了大量學生,Julia Computing資助了機器學習培訓材料(我是該團隊的一員)。
在過去我深入研究了許多語言:MATLAB,Mathematica,R,Python,Javascript,C,Fortran…,還為每個語言都做了Package。但現基本是純“Julia控”了,自己都覺得不可思議。
Julia優缺點
禪師:我也覺得很不可思議。Julia最吸引你的地方是什么呢?人工智能頭條翻譯過一篇文章《Julia vs R vs Python》(沒看過的讀者可以點擊文末閱讀原文鏈接),講Julia在第一次運行慢但是后續就更快。所以關于Julia的優缺點,展開講講吧。
C: 用Julia寫數學算法、自動優化方面,超級容易!注意,我說的是自動優化,而不是普通意義上的優化。
你給算法X做一個通用代碼片段,針對GPU,TPU,任意精度數字,雙數字(輸出值及其衍生物) ,具有不確定性的數字(誤差條)等,它可以自己進行自我優化!
一個代碼就能完成所有這些,并且完成的非常高效。而Cython和Numba也就能完成64位浮點數,卻無法做到上述的自我優化。
缺點嘛,因為需要生成上述的通用代碼生成,Julia啟動時候會慢一點。如果你只是編寫一個64位浮點數的簡單腳本,那么 C/Fortran/Cython/Numba可能更好用。否則,Julia還是更快、更好用。
關于 DifferentialEqu
禪師:說說你自己的項目吧。
C:因為我為一篇論文創建了新的隨機微分方程求解器,這是以前算法的大規模性能升級。我覺得這需要一個優化的參考實現,以便人們可以在實踐中實際使用它,因為算法本身非常復雜。
做完之后我花了很多時間來優化。我為一些ODE求解器做了同樣的事情,僅僅是出于自用的目的。但做完后我發現速度快的跟狗一樣,所以我覺得這玩意兒肯定有用就一直在做了。?
不就我就注意到,這回是一個非常有用的微分方程生態系統。所以我就一邊做,一邊分享,并且獲得了足夠的資金支持我的開發。到博士學位結束時,DifferentialEqu已經成為一個獨立的大型項目。
禪師:那Julia更新的時候,你的lib也需要更新吧?Julia終于走到了1.0,對你來說意味著什么?
C:基本上,Julia每次更新,我都停下博士畢業論文,花一個月時間來升級DiffEq和所有相關軟件包(優化,插值,線性代數等)。
Julia v1.0,意味著未來幾年不需要有大的升級變動了,我覺得,也確實是時候真正冷靜下來,并優化現有的內容了。
我覺得,越來越多的人會來嘗試Julia v1.0,因為它不再是“業余愛好者的玩具”了,他現在指的信賴了!
禪師:這個lib主要解決了什么問題?
C:如果你有一個常微分方程,隨機微分方程,隨機微分方程,微分代數方程,延遲微分方程,離散隨機(連續馬爾可夫)方程,或以上的任意組合,都可以交給DifferentialEquations.jl處理。?
它是第一個以自適應全自動方式完成大量工作的產品,它可以匹配、封裝最高效的包,或者做出比以前更高效的全新產品。這些方程式在生物建模,制藥建模,物理學(量子力學,廣義相對論,電磁學等),控制理論,天氣/氣候建模等方面都有很重要的應用價值。
這么說吧:微分方程,在整個科學中無處不在。
學習數學的訣竅
禪師:我覺得我這輩子是沒機會感受作為一個資深數學研究員是怎樣的體驗了。所以我很好奇這是一種什么樣的體驗,是像魔術一樣還是像功夫一樣?可以跟我們的讀者講講你學習數學的訣竅嗎?
C:解決數學問題的過程吧,看起來仿佛很神奇,但其實是和武俠游戲一樣,剛開始跟小伙伴一起打小怪不,直到最后征服了大Boss。但因為大家沒看到之前的過程,只看到打Boss了,就會覺得超厲害。
學會數學的訣竅在于:學會蠶食難題。就像水滴穿石一樣,你碰到一個難題,肯定一次性解決不了,那么就尋找各種方式和途徑,把這個難題的各個枝節一點點的解決掉,最后這個難題就迎刃而解了。
像Euler和Ramanujan這樣的著名數學家,老被認為是用魔法解決數學難題。但實際上,這些人整天都在拿著小本本研究數學難題。
包括我之所以能夠成為Julia的核心成員,被大家廣泛認可,無非也是將別人吃雞的時間,用研究、重構Julia代碼上,用在了解決微分方程、求解器上(當然Chris有可能不知道吃雞這個哏,禪師這么寫就是為了大家更容易理解)。
這個我堅持了近6年,這比大多數人上大學時間都長。
禪師:說白了還是那句話:天道酬勤。
花絮
禪師:說說你用的最順手的編輯器吧。
C:Atom。漂亮,配色方案也好,鍵盤命令很直觀。它具有很好的交互式窗口,這對于科學建模代碼的可視化調試是必需的。
禪師: 最喜歡的語言和最不喜歡的語言是什么?
C:最喜歡的當然是Julia。最不喜歡的嘛,Perl吧。因為只要有人給我的代碼里面有$$這樣的變量,整個程序就是翔。
禪師:寫不出代碼的時候通常怎么做?
C:不存在的。這么多代碼等著寫呢,根本不會出現寫不出來的情況,只會出現沒時間寫的情況。
禪師:給你一把刀,你最想砍誰
C:設計。
禪師:覺得最高效的工作環境是什么樣的
C:只要有狗狗在腳邊臥著,手上有Kombucha喝著,3個大屏幕用來編程,我能敲20個小時的鍵盤。
我編程時候,我的狗會繞著我兜圈子。我室友給她弄了個鯊魚頭罩,兜圈子的時候看著特別好玩兒。
(禪師:其實我們很多中國程序員也是一天20個小時,甚至通宵敲代碼的……[手動狗頭])
禪師:接下來有什么打算?
C:肯定繼續做Julia嘛。為此我去了MIT,以便有更多時間繼續深入,為他奉獻青春。
禪師:能讀到這里,說明你是對Julia非常感興趣了。所以,禪師在最后,為大家推薦?這本Julia學習教材:
幸福
無非就是
我 & 你
我 ?AI ?你
總結
以上是生活随笔為你收集整理的Julia到底哪好在哪,让数学学霸接触2年就定了终生?还传授读者学数学的秘诀...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【微信小程序】自定义组件(二)
- 下一篇: 在屏幕上输出9*9乘法口诀表---C语言