於我來講,最主要的緣由就是學習了。javascript
去年差很少這個時候,我剛進入大學的計算機系,對於如何學習這個專業尚模糊不清。在開學一個月左右的時候,學院爲了探索教學改革,要組建一個虛擬的試驗班,讓一個老師給咱們作了一次宣講(當時沒想到這個老師就是給我重大影響的韓老師)。他先說了一些他所碰見的大牛的例子,這些大牛的共同特徵就是基礎特別好,對於計算機系統的底層很是瞭解。因此學院但願經過這個試驗班,作一些教學方面的探索,看能不能培養出基礎紮實的,更優秀的學生。還拋出了三個願望:操做系統,編譯器,數據庫,但願咱們走一遍,不只知道他們的運行機制,還要可以動手實踐出一個簡單可用的版本。前端
對韓老師說的打牢基礎的說法深覺得然。如今IT方面的技術發展很快,封裝也是愈來愈抽象,如何在這種瞬息萬變之中積累下真正有用的知識技能,我想惟有以不變應萬變,摸清這些知識的根部,纔是最好的學習方法。或許最後咱們用於工做的是java,是python,是javascript。可是學習彙編,研究操做系統,編譯器,會讓咱們對這些新技術知根知底,進而學習的速度。java
如我研究連接器的參考書《程序員的自修養:連接,裝載與庫》的做者在序言中說的:python
「我目前從事的工做和系統底層關係不是很大,如今最經常使用的都是web前端,MySql數據庫等這些應用層面的系統。雖然不是直接與系統底層打交道,可是以前的積累無時無刻不在幫助我取生如理解應用開發。好比MySql系統的內存和文件系統的優化,若是對操做系統的虛擬儲存和文件系統機制沒有深刻了解,那麼可能只能在配置參數上作一些「猜想」性質的調整,不斷地嘗試各類參數,或者參考網絡上別人提供的配置參數,但不必定適合本身的應用狀況。瞭解虛存如何運做,進程地址空間的分佈等,將會對應用的優化,甚至是架構設計上都會有更高層次的俯視。「linux
一個可用的C連接器,能夠連接MiniCRT(64位版)程序員
這個系列的更新我會同時發在博客園和個人獨立博客上:nanshu.pwweb