大學的編譯原理課程是講解如何設計編譯器的。我要作的,是在一學期沒怎麼聽課的條件下,用我對算法的理解能力,和互聯網以及身邊同窗的幫助,來在不足一天的時間中複習完考試所需的全部知識。前端
我手上有兩份可用資料:算法
而如今的時間是晚上6:33,我剛剛看完大約四分之一,明天下午1:10就考試了。因爲時間緊迫,我必須對本身的任務有個計劃,不能浪費一點時間。這個計劃會花去我大概半個小時的時間,但它是必定要作的,不然我必定複習不完。後端
考試涉及的有如下幾部分知識:工具
鑑於考試的時間很少,我在算法弄懂以後,應該再過一遍,把會考到的部分熟記於心。不然,就算懂思路,考試也沒有這麼多時間讓我去臨場推導。學習
考試涉及的知識中,前兩部分是我已經掌握的,第三部分我瞭解了大意,但再多的我手頭並無能讓我快速掌握的教程,惟一的方法就是去讓同窗給我講,能夠快速弄明白。後兩部分,是我今晚十點以前要看的,我必須把它們解決得七七八八,只留下一些疑問去問同窗,不然時間將會不夠。優化
我手頭除了複習課的筆記,只有龍書。雖然很亂,但至少比老師那個更亂的PPT要強。所以我先去看書,配合複習課的筆記,看看可不能夠對我有幫助。如今是6:48……翻譯
如今是6:59,我利用老師複習課的例子,基本搞懂了第四部分。其中的一些疑問,已經和以前的疑問一塊兒記在紙上。這樣,我如今應該去看第五部分了。設計
這過程當中,我發現我必須儘量地放棄書,纔有可能看完。所以,我如今對資料使用的優先級是:複習課筆記 > 網上資料 > 腦中記憶 > PPT > 龍書,從資料中提取能迅速幫助我理解的部分,幫我快速學習概念的含義。教程
我如今複習地點是咖啡館,旁邊有同窗打牌。這種時候,身邊人的行爲無疑會使你分心,你應當作的,就是專心於本身的事情,不要放棄。遞歸
這裏不少概念須要瞭解,首先看到的是流圖。網上教程沒有圖,所以去翻PPT。
運氣很好,PPT中對此有簡潔的演示,很容易懂。如今是7:14,我看懂了基本塊和流圖的概念,效率不錯,繼續看概念。
如今是7:25,我正在看基本塊的dag構造。這時我有些分神,想起了上課的一些場景。在你看書看得很順暢的時候,你容易感到輕鬆,而且容易分神。這時候,要保持本身的專心,由於你還沒完成任務,只是看到了比較容易的部分而已。
如今是7:48,我正在看控制流和數據流分析。我感到有些亂,這時候應該理一理本身都看了哪些知識點,都有哪些須要記。切忌感到有些混亂的時候繼續往下看,這樣不一下子你就會看不下去,從而感到無比沮喪,前面看的也忘了,只能從頭看起。回頭理清楚,你會發現只花了幾分鐘,並且思路瞬間清晰了。
我多花了點時間,從頭整理了一遍,花了20分鐘。不過很值得,我發現我對全部知識點的掌握狀況已經瞭然於胸,而且很容易能看出接下來應該從哪兒看起。保持高效複習的一個訣竅,就是保持本身思路的自由和靈活,不斷解決冒出的一個個小困難,這樣你就會很快發現本身很厲害,而且得到巨大的信心。
我發現我把PPT看完了,但還有一些概念沒有找到解釋。OK,下面我選擇先去網上查相關概念,先不看書。之因此這樣,是由於書太羅嗦,如今看書會把我清晰的思路弄亂,而清晰的思路是高效工做時必不可少的條件。
好吧,運氣很差……網上這方面的資料沒有能看的。這樣的話,我本身的複習只能到此爲止了。下面,我要積極聯繫個人兩位複習得差很少的同窗,請求他們的幫助。我已經弄懂了幾乎全部概念和大部分算法,只須要讓他們給我講幾個算法、幫我糾正對幾個算法的細節理解,而後我再理一遍思路,今天的複習就能夠結束了。而後,明天上午再過一遍,複習就完成了。
好了,聯繫他們的時候,本身休息一下~
狀況很樂觀,A同窗正好有時間,能夠給我講講;B同窗今晚有事,因此只能有問題留言,等他回我了。A同窗一下子就來,那我如今就先本身理理思路,想一想他來了以後怎麼問。
呼,要睡覺了。如今是12:39,我剛剛從A同窗的宿舍回來。咱們從咖啡館複習到寢室,除了剛回寢室的時候我用一刻鐘整理了一下程序設計語言的做業交上去,剩下的時間都在複習。全部的知識點已經都解決了,只是不知道會忘多少。
毫無疑問,如今是要睡覺了。等明天起牀,再把該看的看一遍吧。明天還要交算法做業,因此起牀先寫算法做業,而後等十點課上交了做業,再開始複習編譯原理。
其實這時候並不以爲困,但務必記住,在這種轉天還要高強度工做的時候,必定要讓本身去睡覺。不說了,睡覺。
如今是8:53,我剛剛洗了頭、洗了腳,如今有些餓。我在想我要不要吃早飯。我一下子須要先把算法做業寫了,而後再去看編譯原理。手頭沒有算法做業本,得,去東上院小賣部吧,買個本再來倆漢堡,而後去空教室自習去。
教師人還很少,挺好。右前方還有個妹子,看背影挺好看的,不過如今不是欣賞女孩的時候,戴上耳機,專心作算法。對了,坐女孩子附近有個好處,忽然發現本身沒帶餐巾紙的時候能夠借一張^_^
11:01,我交了算法做業,本身找了間清靜的教室。放上許嵩的歌曲,開始最後的複習。
看到了分析表,雖然昨天咱們一致認爲,應該本身手推一遍,但如今時間已經不夠了。那麼,按照個人思路,去理解吧。最後這一遍,把算法的思路都理解了,記在內心,至於細節就去臨場發揮吧。加油!
(忙碌中,暫無直播……)
呼,交卷啦~
如今是2:39,離考試結束還有半小時。照例,依舊是我交卷以前沒人交卷……其實根本不是你們沒作完,只是喜歡一次性作完不檢查的極少罷了。
考試以前,從算法課離開以後,我把全部的算法思路都過了一遍,正好下課,和女友一塊兒吃飯去了。吃飯聊聊天,完事兒回寢室拿傘(發現傘沒在寢室,不知道忘哪兒了-_-#),就去考場了,那時候離考試還有半小時。我把以前複習的最後一點疑問找A同窗問了,而後就趴桌子上休息去了。
而後就是髮捲、答卷、交卷、離場,一鼓作氣,沒遇到什麼意外。分數的話,我以爲會扣幾分,能不能上90看運氣。
好啦,看看本身的一天覆習記錄,還挺有成就感的。下面就是在4點以前手寫完《政府與市場》的論文,這段就不直播了。
在直播的最後,我要吐槽一下咱們編譯原理這門課:這門課質量真的不高,從它能讓我用一天覆習完就可見一斑了。
編譯領域,研究的是編譯器如何將高級語言編譯成機器碼的全過程。具體來講,首先把源代碼預處理,分析成抽象語法樹,而後再對它詳細分析,開始編譯器的正式工做:分析程序結構、數據流,看看哪裏能夠優化什麼的,最終生成機器碼。
顯然,這過程當中,如何分析程序結構和優化纔是重點,而前面的預處理(語法分析)根本就是鋪墊罷了,因語言而異。那麼,我喜歡的編譯原理課程,應該是主講這些重點的。那樣講完,咱們怎麼也能寫個簡單的編譯器後端了。
惋惜,天不遂人願。咱們的教材是龍書,老師的思路也和龍書相同。看過的都知道,龍書主講編譯器前端和表層的後端。因而,咱們考試考了不少基礎知識,最難的題就是作個LR(1)分析表了。可老師只講怎麼作表,根本不講表怎麼用。因此,我才能一天覆習完,也才能發現課都上完了,本身除了知道些名次以外,仍是什麼都寫不出來。
固然,和這門課配套的還有一門編譯原理實踐課。可那門課也並不讓我喜歡(幸虧我沒選,不過我去聽了,因此知道她讓作什麼),只讓作編譯器前端中最基礎的部分而已,後端一丁點都沒涉及。還鼓勵咱們用現有的工具,不爽。
與這門課造成鮮明對比的,就是咱們的《程序設計語言》課程。這門課的老師很是好,有水平,講得也很棒(仍是中文老師純英文授課,口語也純正,讓我英語聽力和口語提升了很多~)。這是我這學期惟一一門認真聽的課程了,每節課都好好聽,期末也很認真地複習。要是每門必修課都這樣就行了!(《程序設計語言》是限選課……)
好了,3:01了,我要去抄《政府與市場》的2K字讀後感了。明明以前沒說非得手寫,我都電子版寫好了,還打印好了,結果上節課臨時變卦讓手寫了,這老師真是蛋疼!
不說了,本次直播結束~