程式設計龍書的兩位作者憑藉編譯器技術獲得2020年圖靈獎
Alfred Aho和Jeffrey Ullman憑藉開創性的編譯器和演算法工作而獲得2020年圖靈獎。
週三,全球最大的計算機專業人士協會電腦科學協會表示,Aho博士和Ullman博士將因其在支援計算機程式語言的基本概念方面所做的工作而獲得今年的圖靈獎。Ullman和Aho之間的合作是開創編譯器技術的先河,該合作始於1967年在AT&T的傳奇研究中心貝爾實驗室。
在過去的五十年中,電腦科學家已經建立了越來越直觀的程式語言,使人們越來越容易地為桌上型電腦,膝上型電腦,智慧手機,汽車甚至超級計算機建立軟體。編譯器的工作是將這些語言指令轉換成處理器真正理解的機器程式碼,也就是將這些語言有效地轉換為計算機可以理解的一和零。Aho和Ullman幫助找出了將高階程式轉換為低階機器程式碼的編譯器技術。
Aho和Ullman還共同撰寫了2篇經典的CS書籍:綠色和紅色的“龍書”(1977年和1986年)。
黑客新聞網友評論:
龍書今年獲得了圖靈獎!想象一下,您在40年前所做的事情贏得了大獎。
十年後,我開始閱讀《龍書》,並意識到如何修改NFA正規表示式搜尋演算法,以解決我在數字取證和電子資料展示中遇到的問題。
我經常看到龍書被當作一個出氣筒的時候。似乎在某些時候,這本書與K&R一起成為了毫無根據的批評的目標。
《龍書》在解析上花費了太多時間,而在優化上卻花了不多的時間。公平地說,本書的第一版是1986年出版的。看起來第二版(2006年)增加了3章有關資料流分析和並行化的章節。
《龍之書》的第一版就表明了Aho和Ullman當時就領先了很多嗎?
從事正規表示式引擎工作的人不多。
我的碩士論文是為Haskell進行程式碼生成的,其中我花了相當長的時間來學習樹模式匹配,AST操作,暫存器分配等。通過理解程式碼生成的這些不同階段,可以大大提高速度。
在編譯器的上下文中,另一個原因是通過微優化詞法分析和解析沒有太多收穫。畢竟,一個程式碼只被編譯一次並執行多次。因此,您知道很多樂趣在哪裡。不幸的是,本科生通常會錯過編譯器課程中最複雜的部分。
過去,詞法分析是編譯器最熱的部分,因為它必須接觸原始碼的每個位元組,並且後續階段沒有太多資料需要處理。但是在1990年代,隨著優化編譯器成為主流技術,這種情況不再成立。
儘管我在大學期間真的很喜歡編譯器,但我從沒想過出於實際原因會構建一個編譯器。我最終將這些知識用於兩個非常有趣的專案。其中一個是Java中的模板引擎,用於將變數轉換為SQL查詢中的子句。另一個是PL / SQL的直譯器,該直譯器有助於提取過程和功能以對生產環境中的軟體包進行部分更新(使用者可以選擇將哪些過程傳送到生產環境,而不必更新整個軟體包)。
很奇怪,我記得這本書太笨拙,晦澀難懂,當我最初閱讀它時,沒有足夠的說明性文字來編寫編譯器課程……也許我記錯了。
我實際上認為前端(詞法分析,語法分析,語義分析)對大多數軟體工程師而言更為重要。
想象一下:在大多數職業中,您都不需要在後端工作。但是,如果您想解析某些內容(例如配置檔案),則Lexing和解析非常有價值。這類事情在日常工作中比在程式碼生成和優化中更常見。
建議大多數軟體工程師避免發明新的配置或其他DSL及其解析器/詞法分析器。這很容易導致難以除錯的程式和長期的技術債務。始終首先研究現有的和經過測試的解決方案(甚至是JSON!)。即使您不發明語言,也可以避免使用高階格式(例如無上下文語法)來編寫低階解析器/詞法分析器(請參閱Lark https://github.com/lark-parser/lark)。定義和維護語法要容易得多。
在“資料結構和演算法”是我們最先進的教科書的黑暗時代,我們將Aho,Hopcroft和Ullman的作者三人稱為“三個智者”。很高興看到Aho和Ullman得到了更多的重視。
真正的“弦論”大師
獎金沒有發給React創作者嗎?好吧,也許明年。
相關文章
- 圖靈技術圖書譯者須知圖靈
- 跨語言程式設計的探索 | 龍蜥技術程式設計
- Core Image程式設計指南翻譯七(獲得最佳效能)程式設計
- 2555. 兩個線段獲得的最多獎品
- “CCF 科技成果獎”獲獎名單公佈,龍蜥榮獲技術發明一等獎
- 2024年諾貝爾物理學獎頒給兩位AI專家!秒變圖靈獎?AI圖靈
- 圖靈獎獲得者:資料科學家或將取代業務分析師?圖靈資料科學
- 程式語言和編譯器書單(1)編譯
- 一個瘋子居然獲得北京市科學技術獎?
- 淺讀 John Backus 圖靈獎獲獎演講論文圖靈
- 全圖化引擎(AI·OS)中的編譯技術AI編譯
- CSS精靈圖技術CSS
- 如何獲得更持久的廣告投放,閒魚程式設計師的年終獎全靠它。。。程式設計師
- 《計算機程式設計藝術》作者高德納計算機程式設計
- 藉助 Valve 的新編譯器,Linux 遊戲在 AMD GPU 中獲得了效能提升編譯Linux遊戲GPU
- 「程式設計師讀書月」: 參與活動,每天贈送一本技術圖書!程式設計師
- OceanStor Pacific 9920分散式儲存獲得IT168技術卓越獎分散式
- ☕【Java技術指南】「編譯器專題」深入分析探究“靜態編譯器”(JAVA\IDEA\ECJ編譯器)是否可以實現程式碼優化?Java編譯Idea優化
- 深度學習來得太晚也太猛,對話2018年度圖靈獎三位「大佬」深度學習圖靈
- 圖靈獎獲得者:大資料、AI、網路安全將是改變世界的“三大元素”圖靈大資料AI
- 上海·得物技術沙龍「安全專場」開啟報名啦!快來查收你的技術安全白皮書
- 2022“金i獎“|科藍軟體憑藉SUNDB資料庫榮獲2022資料庫領軍企業獎資料庫
- [圖靈贈書]《24小時365天不間斷服務:伺服器/基礎設施核心技術》點評贈書圖靈伺服器
- 為什麼編譯原理被稱為龍書?編譯原理
- 程式設計師必讀的30本非技術書(文末福利)程式設計師
- 憑藉在計算機視覺領域長期的技術深耕以及豐富的場景經驗計算機視覺
- 推薦兩篇有關 Rust 自動向量化編譯技術的文章Rust編譯
- Linux 程式編譯過程的來龍去脈Linux編譯
- 雨果獎作者郝景芳做客核桃程式設計:少兒程式設計培養孩子通用學習能力程式設計
- 程式設計師常用的編輯器程式設計師
- 飛利浦GoPix 1投影儀榮獲兩項設計大獎Go
- [圖靈程式設計叢書].持續交付:釋出可靠軟體的系統方法.pdf圖靈程式設計
- 程式設計師的技術遺產程式設計師
- 好程式設計師web前端教程分享CSS預編譯器的再次理解程式設計師Web前端CSS編譯
- 從編譯到可執行,eBPF 加速容器網路的原理分析 | 龍蜥技術編譯eBPF
- 計算機架構的新黃金時代,兩點陣圖靈獎得主最新力作計算機架構圖靈
- 程式設計師的自我修養-編譯連結程式設計師編譯
- 十年自學程式設計譯文 作者: 彼得·諾維格程式設計