要理解王垠的研究,就數學上而言,需要達到什麼層次?
編譯器大概可以分為前中後三塊。
前端是Parser、Tokenizer,難點主要在於如何優化性能,即想辦法加快解析速度。不過由於現代電腦運行太快了,即使什麼都不優化,手寫的遞歸下降分析,也慢不到哪去,所以這個領域是王垠認為編譯器最不重要的領域。
後端就是代碼生成部分,截至2015年這個領域最有前途的是LLVM,難點也是優化性能,但這次的性能重點在於如何生成高效的運行時機器碼或位元組碼。這個領域水很深,但顯然也不是王垠關注的重點。在@王垠看來,只有除掉前端和後端的『中端』,才算是『編程語言』這門學科真正的研究領域。主要包括類型系統、靜態分析、程序變換。王垠,作為一名前科學家,在該領域的理論積累無疑大大高於我們這樣的工程師。王垠的在『中端』的成果ydiff是新東西,除了本身的實用價值以外,還具有一定的獨創學術價值,相比之下, @趙劼的wind.js,在下的haxe-continuation、stateless-future,雖然也在『編程語言』這一學科範疇內,但都只能算是舊理論的工程實踐,而沒有任何學術價值。
王垠本人站在科學家立場時,瞧不起我們這樣缺乏理論知識的工程師。因為我們費勁做出來的東西,比如go,在學界看來只是裝了一堆大雜燴的新瓶舊酒而已。
然而當他站在工程師立場時,他也同樣瞧不起編程語言學界。因為學界的很多灌水論文,從工程角度看,只不過是把編程實踐中早就有的功能改寫成數學語言而已。那麼,現在就可以回答樓主的問題了:『要理解王垠的研究,就數學上而言,需要達到什麼層次?』
答案是,你必須理解編程語言領域中的最新最好的東西,幸好你可以有兩種理解方式:一、從數學形式(formally)上理解;二、從工程實踐、編程語言使用上理解。兩種理解方式都可以。我自己是一個工程師。那些畫滿希臘字母的形式化理論,我一直感覺有點怵。編程語言方面我覺得有新意的是:D、Haskell、Rust、Scala。我覺得想要從工程角度而非數學角度學習編程語言的話,這幾門語言都值得一看。本來我覺得把Scala列到有新意的語言中比較勉強,但最近我在翻譯Scala作者,馬丁·奧德斯基的一系列訪談,我才知道Scala在把面向對象和泛型整合起來的許多特性其實也都算得上前所未有。反倒是其函數式編程特性大都能在ML、Haskell等別的語言中找到原型。我假設提問者對編譯這行有興趣。
如今的編譯理論,特別是前端部分的詞法和語法分析,和數學關係不大。入門者對喬姆斯基的形式語言理論有一些初步的了解,能夠理解三型到二型文法的區別的特徵,即可開始後續的詞法和語法分析工作。後端部分的代碼生成和優化,更多地需要了解計算機特別是 CPU 的系統結構,與此同時,考慮到並行編譯實踐的需要,建議對圖論和集合論的基礎知識有所涉獵,會比較有利。
順便說一句,時至今日,把編譯理論稱為研究是不合適的。在我眼裡,前端領域自上世紀七十年代之後,已經沒有真正懸而未決的問題;而下一個最可能產生突破的大方向,是並行編譯和優化,而那更多的是後端領域,而且對計算機組成結構的依賴頗大,帶有很重的工程味道。所以,如果不是致力於代碼生成相關的工作,那麼最好不要自稱在做「編譯理論研究」。對我們這個專業的人來說,這個用詞聽起來,其實頗為滑稽。我好無聊啊,八卦了下這個問題: 王垠到底對 winter 做了什麼? - 匿名用戶的回答順藤摸瓜,大概好像明白 @winter 是怎麼受誤導的了:
@winter
任何掌握LL(n)和LR(1),也就是認真聽了大學一半編譯原理課的程序員,也就是編譯原理入門的程序員,這樣的人當中,我尚未見過瞧得起王垠的。鄙人
winter雖然算不上喜好編譯和編程語言,碰巧也寫過不少tokenizer和parser,所以呢,就碰巧瞧不起王垠了。雖然前端、工程體系、團隊建設和架構是我目前的主要工作和長項,但我自以為編譯原理方面我可以達到普通入門級工程師水平,與王垠應當不相伯仲
哈哈,終於找到這個梗的出處了,原來是這樣, @陳甫鵃 :
我假設提問者對編譯這行有興趣。如今的編譯理論,特別是前端部分的詞法和語法分析……
哈哈哈哈,「碰巧也寫過不少tokenizer和parser,所以呢,就碰巧瞧不起王垠了……我自以為編譯原理方面我可以達到普通入門級工程師水平,與王垠應當不相伯仲」,哈哈哈哈~~
上面回答這些問題的,自己都做不出來怎麼好意思回答的?
搞得自己會做一樣,還高中水平就可以。知乎怎麼辣雞人這麼多了
大約需要能列方程而不是用算數方法解雞兔同籠問題
怒刷論文三百篇,不能做詩也能垠...
ydiff是我想要很久的東西
可惜沒有普適性 照說應該是可以根據型別來建立一個適用於各種語言的 ydiff可是他老人家好像也沒這份心思作這「瑣碎的小事」於是讓 git 支援 ydiff 就沒有什麼意義了(事實上可以自己做個 meta 然後只送 meta 不送 source 彷彿也可以達到 ydiff 的效果??不過那是你們專業碼農的事了)
------補充一個小比喻大家參考參考我覺得他有點像是文學中研究詩學跟比較文學那塊的學者偏偏自己也愛寫幾筆還寫的不錯可是孜孜矻矻筆耕的作家不計其數除了天賦眼界積累也是很必要的如果沒有持續發表作品
可能就只能是個「據說才高八斗可惜作品傳世甚少」的作者最多就是一則軼事成就什麼的可能不樂觀啊要理解他的研究,就應從他的作品開始,王垠自稱自己所有cs知識都是實踐而來的,因此應該問實踐的層次,而不是數學的層次。況且在他的觀念裡面,編程語言比數學式子優越,有心追隨的後學們應聽從他的忠告。
畢竟是清華博士,康奈爾博士,印第安納博士,就是學神了,要理解王垠的研究,至少要十多年時間吧
你們說的這些都跟數學有個毛線關係
要想理解yin神的研究, 三遍博士, 加上plt 基礎理論研究十五年是必要的。 數學怎麼也得是個博士吧。
其實我特別好奇, 噴「andrew ng在學術圈的名聲早就丑了」需要從事相關工作幾年。推薦閱讀:
※有哪些值得一看的數學家、物理學家或者計算機科學家的傳記?
※數學不好能深入學習計算機嗎?
※跨專業從事機器學習或數據挖掘可能性?
※數據結構方面,你認為最好的書是哪本?
※如果計算機沒有浮點運算能力,系統能正常啟動嗎?