極客時間出品的《編譯原理之美》由宮文學所作,宮文學是北京物演科技CEO。本專欄手把手教你實現一個編譯器 。
課程訂閱及價格:
原價¥99 ,限時¥68 4648 人已學習 · 共36講 · 每週一 / 三 / 五更新, 本課程為音訊+圖文。可在極客時間APP/小程式/網站上永久觀看。
用我的邀請購買,返現24元。購買成功之後,請加我微訊號 dismissmewp ,備註:返現。
編譯原理是一門經過長期實踐的,有著悠久歷史的計算機經典課程。作為一名工程師,在實際工作中你經常會碰到需要編譯技術的場景,比如:
- 編寫介面模板引擎;
- 為專案編寫各種各樣的DSL;
- 深度理解甚至編寫Spring、Hibernate、阿里巴巴Druid這樣的工具。
那如何才能真正掌握編譯原理呢?是蒐集市面上的教材,埋頭苦讀嗎?要知道,教材往往過於抽象和理論化,如果你沒有系統化的學習體系,做不到學以致用,掌握再多的理論知識,也不會形成章法,事倍功半。因此,學習編譯原理最關鍵在於掌握其關鍵知識點以及核心思維方法,即學即用。
《編譯原理之美》講師介紹
宮文學,北京物演科技CEO,連續創業者,2016年入選廈門市第九批“雙百計劃”領軍型創業人才。他是國內最早做BPM(流程管理平臺)和BI平臺(大資料平臺)的創業者之一,之後也做過電子表單和快速開發平臺,這些經歷都與編譯技術密不可分。
在他看來,優秀的工程師要保持長期的競爭力,需要提升自身的專業素養。而瞭解與學習基礎技術理論並加以實踐是一種行之有效的方式。
在這個課程裡,他從前端與後端兩個層面來講解編譯原理的核心技術點,用具體的案例帶你理解抽象的原理,幫助你建立信心,克服畏難情緒,讓你在這個過程中一步步趟過雷區,在工作中真正用到編譯技術。
你能通過這門課,實現寫出一個編譯器的願望,還能通過SQL解析器、報表工具、位元組碼生成等小練習鍛鍊自己的動手能力。當然了,你還可以解鎖更多應用編譯原理的業務場景,將知識活學活用。相信只要沉下心去學習研究,掌握編譯技術指日可待!
《編譯原理之美》課程模組
課程共36講,分為三個部分。
第一部分:實現一門指令碼語言
通過具體例項,帶你瞭解詞法分析、語法分析、語義分析的原理,實現一門指令碼語言,並用工具提升效率。
第二部分:實現一門編譯型語言
帶你瞭解如何生成目的碼和對程式碼進行優化,並引入LLVM工具,最後生成可執行的檔案能支援即時編譯,並經過了多層優化。
第三部分:面向未來的程式語言
人工智慧與編譯技術結合是否會出現人工智慧程式設計?這部分是對編譯技術發展趨勢的一些分析,這些分析會幫助你更好地把握未來技術發展的脈搏。
《編譯原理之美》課程目錄
開篇詞 :為什麼你要學習編譯原理?
第一部分:實現一門指令碼語言
原理篇
理解程式碼:編譯器的前端技術
正則文法和有限自動機:純手工打造詞法分析器
語法分析(一):純手工打造公式計算器
語法分析(二):解決二元表示式中的難點
語法分析(三):實現一門簡單的指令碼語言
編譯器前端工具(一):用Antlr生成詞法、語法分析器
編譯器前端工具(二):用Antlr重構指令碼語言
作用域和生存期:實現塊作用域和函式
物件導向:實現資料和方法的封裝
閉包:理解了原理,它就不反直覺了
語義分析:上下文相關情況的處理
繼承和多型:物件導向執行期的動態特性
應用篇
前端技術應用(一):如何透明地支援資料庫分庫分表?
前端技術應用(二):如何設計_個報表工具?
演算法篇
First和Follow集合:用LL演算法推演一個例項
移進和規約:用LR演算法推演一個例項
案例總結與熱點問題答疑
期中考試周(9.30〜10.6)
編譯原理期中試題(100分)
第二部分:實現一門編譯型語言
原理篇
高效執行:編譯器的後端技術
執行時機制:突破現象看本質,透過語法看執行吋
生成彙編程式碼(一):組合語言其實不難學
生成彙編程式碼(二):把指令碼編譯成可執行檔案
中間程式碼:相容不同的語言和硬體
後端技術的重用:LLVM不僅僅讓你高效
生成IR:實現靜態編譯的語言
程式碼優化:為什麼你的程式碼比他的更高效?
資料流分析:你寫的程式,它更懂
目的碼的生成和優化:如何適應各種硬體架構?
應用篇
指令選擇:對海量資料做計算,到底可以有多快? 29註解和位元組碼生成:為什麼Spring技術很強大?
擴充套件篇
垃圾收集:能否不停下整個世界?
執行吋優化:談談即吋編譯技術
案例總結與熱點問題答疑
第三部分:面向未來的程式語言
編譯技術的發展趨勢
雲程式設計:雲端計算吋代是否需要更新的語言特性?
超程式設計:一邊寫程式,一邊寫語言
案例總結與熱點問題答疑
結束語:用程式語言,推動這個世界的演化
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***