1.1 Introduction to Compilers and interpreters
上傳視頻封面
斯坦福大學 編譯原理中文字幕
開頭簡單的講了編譯器和解釋器:
編譯器:在一個程序運行之前,首先需要被翻譯成一種能夠被計算機執行的形式,完成這項翻譯工作的軟件系統就是編譯器。
一個編譯器就是一個程序,可以閱讀以某一種語言(源語言)編寫的程序,并把改程序翻譯成一個等價的,用另一種語言(目標語言)編寫的程序,編譯器的重要任務之一就是報告他在翻譯過程中發現的源程序中的錯誤。
解釋器:
解釋器是另一種常見的語言處理器,并不通過翻譯的方式生成目標程序,從用戶的角度看,解釋器直接利用用戶提供的輸入執行源程序中指定的操作。
這門課程討論在編程語言編譯器實現中使用的主要思想,包括詞法分析,解析,語法導向翻譯,抽象語法樹,類型和類型檢查,中間語言,數據流分析,程序優化,代碼生成,和運行時系統。
因此,將學習如何將以人類設計的高級語言編寫的程序系統地轉換為以更適合機器的低級程序集編寫的程序。在此過程中,還將討論如何設計編程語言,編程語言語義以及為什么有這么多不同類型的編程語言。
課程講座將在簡短的視頻中呈現。為了幫助掌握材料,將有講座問題回答,測驗和兩個考試:期中考試和期末考試。還會有練習形式的作業,要求顯示導出特定結果所需的一系列邏輯步驟,例如類型檢查器執行以鍵入檢查一段代碼所執行的步驟序列,或者解析器將執行以解析輸入字符串的步驟。這種檢查技術是斯坦福大學不斷研究開發創新教育工具的結果。
一個可選的課程項目是為COOL(面向課堂面向對象語言)編寫一個完整的編譯器。 COOL具有現實編程語言的基本特征,但是它小而簡單,可以在幾千行代碼中實現。選擇執行項目的學生可以用C ++或Java實現它。
為什么學習編譯器?
計算機所做的一切都是某些程序的結果,世界上所有數以百萬計的程序都是用過去60年來開發的數千種編程語言中的一種編寫的。設計和實現編程語言變得困難;計算機科學中的一些最優秀的思想家已經考慮過所涉及的問題并且貢獻了美麗而深刻的結果。學習編譯器的東西將向您展示計算機科學中理論與實踐的相互作用,特別是強大的一般思想與工程洞察力的結合能夠為非常困難的問題提供實用的解決方案。了解編譯器的工作原理也將使您成為更好的程序員,并提高您快速學習新編程語言的能力。
年前我也在看龍書,很好奇編譯原理,對于編譯器的工作,詞法的分析,如何解析語言,什么是樹。。。。。。都很感興趣,但是看書時還是有很多疑惑,也在慢慢學習中,偶爾看到這個斯坦福大學關于編譯原理的視頻感覺還不錯,網易云課堂的沒有翻譯,就自己做了翻譯,放在了B站和公眾號上,希望給想學習但是英文和我一樣不太好的朋友參考一下。