理想化的電腦科學知識體系

來源:互聯網
上載者:User

一家之言,但大家可以看看。

-∞.Theory
   (Math, Number Theory, Graph, Automata, Geometry)
-3.Hardware
   (Processor Architecture, Memory Hierarchy, Cache,  System I/O)
-2.Machine-Level Programming
   (Assembly, Executable File Format, Linking & Loading)
-1.Operating System  
   (Process & Thread, Memory Management, File System, I/O, Kernel & Drivers)
 0.Programming Fundamentals  
   (Data Structure, Algorithms)
+1.Programming Language
   (Compilation, C is a must,; C++ Java recommended; C# Python JS, etc, optional)
+2.Advanced Programming Frameworks and Libraries  
   (Windows Programming, Unix/Linux Programming; STL, MFC, Boost, TR1, Qt, GTK optional)
+3.Programming Design and Software Engineering
   (OOP Design Pattern is a must; Agile, RUP, Iterative, and other models are optional; Debugging and QA)
+∞.Applications
   (Computer Network, Database, Http & Web, Concurrent Programming, Distributed System )
 
理論是所有的基礎 應用是最終的目標
 
搞電腦科學的需要會[-∞, +∞]
專註於軟體開發的可以只管自然數
剛入門的同學一般都從第1關開始玩 第1關以前的都是隱藏關 通幾關以後你就會自然而然的想玩隱藏關了
 
以下的是對應的書目(只限於我看過的 迫切需要大家補充)
 
書名縮寫:
Advanced Programming in the UNIX Environment => APUE
Computer System: A Programmer's Perspective => CSAPP
The Art of Computer Programming => TAOCP
Introductin to Algorithms, 2nd => CLRS
The C Programming Language => K&R
Design Patterns => GOF
 
-∞.Theory
   (《TAOCP》vol.1,ch.1)
-3.Hardware
   (《CSAPP》)
-2.Machine-Level Programming
   (《CSAPP》,《Intel x86 Assembly Reference Manual》(工具書)《Linkers & Loaders》,有待補充)
-1.Operating System  
   (《CSAPP》,《Modern Operating System》)
 0.Programming Fundamentals  
   (《CLRS》,《TAOCP》vol1.ch.2)
+1.Programming Language
   (《Compilers》(龍書),《K&R》,《C++ Primer》,《Effective C++》,《Thinking in Java》,有待補充)
+2.Advanced Programming Frameworks and Libraries  
   (《Programming Windows》, 《APUE》, 《深入淺出MFC》,有待補充)
+3.Programming Design and Software Engineering
   (《GOF》,知之甚少 有待補充)
+∞.Applications
   (《Computer Network》, 《MySQL Manual》有待補充)
 
後記
1 紙上得來終覺淺,絕知此事要躬行
  光看理論缺少實踐就會變得跟包老師我一樣只會忽悠, sigh~
  看低層就要動手寫彙編和跟蹤程式,看作業系統就要去讀API的手冊,學語言就要在實踐中盡量把語言特性都用上
 
2 無劍勝有劍 Thinking Beyond Languages
  進階語言只是工具而已 作者這麼設計必然是有他的道理的  
  不想當司機的廚子不是好裁縫 要像上帝一樣去思考 Know How, then Know Why
  Concrete的書告訴你How Theoretical的書告訴你Why
 
3 好記性不如爛筆頭 看書不做筆記等於沒看
  這就好像是為每本書的內容做一個緩衝 每次需要knowledge fetch的時候先查筆記cache  
  如果fault了就從書裡把內容添加到筆記cache裡
 
4 美國一位海軍將軍在總結中途島海戰時說,對手所用的語言不夠精確是他們失利的原因之一。
  英語雖然沒有漢語博大精深,但是在描述複雜問題上卻可以化繁為簡,避免語義模糊。
  不信你用漢語和英語分別表述一下int (*(*func_ptr[10])(int, int))(int)看看
  書盡量讀英文版比較好 除非原書是中文寫的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.