你應該在大學學到的10個方面的知識

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

  英文原文:10 things you should learn at the University

  我去年畢業了,想總結一下我的收獲。在 StackOverflow Podcast #36,Eric Sink 說道:

優秀學生在課堂上學習計算機科學,然后自己編程。

  我記得大學朋友在討論他們第一份工作時的情景了,他們有 90% 的人會說類似的話:這 1 個月的實習比我在大學 3 年學得都要多。我不談論我的工作了。剛開始我認為,他們很可能找了一個比我好得多的工作或實習崗位。我用了 3 年時間才理解了這種現象這不是現象。他們認為,他們學了很多,因為他們能夠使用框架搞定一些工作,框架在背后做了一些魔法(比如創建簡單的、帶有數據庫的 CRUD web 應用程序,所有東西都是自動化的)。然而,在框架和硬件之間還有大量的技術。我注意到,很多開發人員不關心這一點。而且,沒有它們你照樣能夠搞定工作。就像出租車司機不需要了解這個城市,只要他有 GPS。我認為了解基礎是有好處的。

  有一些課程,能夠幫你學到技術,在你找到工作后,你將不會感到煩惱了。同時,它們值得去學習,幫助你理解計算機工作原理,在我看來,將對你未來的工作有幫助。

  下面是你應該在大學學習的 10 種技術/課程(大學是用來學習的最佳時機):

  1. 計算機架構:了解計算機工作原理,它們怎樣表示數據(補碼【注1】、IEEE 二進制浮點數算術標準【注2】)。有兩本不錯的書:《計算機體系結構量化研究方法》和《計算系統的要素》。
  2. 編譯器:計算機結構的某種補充。它連接著軟件和硬件。編譯器的經典書籍有《編譯原理》(又叫龍書)
  3. 算法和復雜度(O標記):這是個有難度和有挑戰的主題。需要大量時間,但是未來會得到回報。算法和計算復雜度的圣經是 Cormen 的書:《算法導論
  4. 自動控制(DFA、NFA、圖靈機【注3】等):要認識到,語言里的字符串是表達任何問題的一種正式途徑。做為凌駕于所有軟件和硬件建立之上的一種科學,這是計算機科學的首要法則。
  5. 匯編語言:幫助理解并行應用程序,以及出現在其中的 bug。比如,由指令重新排序所引起的。
  6. 系統程序設計:對于云計算和虛擬機,這仍然是有用的主題,能夠讓你理解軟件是如何與硬件交互的。
  7. 嵌入式設備:物聯網是未來,它也是有趣的(參看 Jon Gallant 的博文,他加入了微軟的物聯網團隊)。
  8. 人工智能(AI):每一年,設備都更加智能(包括你的手機醫療設備Google 汽車)。根據比爾蓋茨的預測,AI 將在未來 10 年爆發。大學是學習 AI 基礎的絕佳場所。
  9. 計算機網絡:學習網絡是不錯的,數據是怎樣在導線(包)中流動的,什么是 DNS、CDN,我們在快速和可靠的數據交換中面臨什么樣的挑戰和限制。推薦書目:A. Tanenbaum 寫的《計算機網絡》。
  10. 計算機安全:每個人都想成為黑客。首先,你需要了解基礎,還要警惕到,這個主題每年都在變化著(sha1 正在被 sha2 取代,因為它不再足夠安全了)。因為它變化如此之快,還沒有更新及時的通用圖書。然而,《Unix 與 Internet 安全防護─網路篇》仍然非常有價值。為了及時跟進安全問題,我強烈推薦你關注 Troy Hunt 的博客(在我看來:它是互聯網上最好的博客之一)。

  有人會說:圖靈機?我會用到它嗎?很可能不會。。但是,重申我在討論計算機科學,而不是編程。沒有這些知識,你照樣可以生活,并作出讓人驚奇的東西。就像剛才提到的出租車司機,它能夠把顧客從地點A載到地點B。但是當 GPS 沒電了或出錯了,他能夠做什么呢?如果兩個街道有著同樣的名字,該怎么辦呢?或許 GPS 能夠標示出來,也可能沒有。還有,好的出租車司機知道哪條路更快,在某些時段他將遇到堵車,這是 GPS 做不到的。

  我們經常不會感激在大學里學到的知識,但是它在日常工作中一直默默地幫著我們,就像游泳和跑步對參賽拳擊手的幫助一樣

  如今什么是酷的,那就是你能夠在線免費學習計算機科學

  總之,你是想學習計算機科學,還是只學習如何編程,這完全取決于你。我認為最好兩者都了解一下。你的觀點呢?你將從我的前 10 項增加或移除某些項嗎?

  • 注1:二補數(2′s complement)是一種用二進制表示有號數的方法,也是一種將數字的正負號變號的方式,常在計算機科學中使用。在中國大陸稱作補碼,臺灣和香港稱為二補數。http://zh.wikipedia.org/wiki/%E4%BA%8C%E8%A3%9C%E6%95%B8
  • 注2:IEEE 二進制浮點數算術標準(IEEE 754)是 20 世紀 80 年代以來最廣泛使用的浮點數運算標準,為許多 CPU 與浮點運算器所采用。這個標準定義了表示浮點數的格式(包括負零-0)與反常值(denormal number)),一些特殊數值(無窮(Inf)與非數值(NaN)),以及這些數值的浮點數運算符;它也指明了四種數值舍入規則和五種例外狀況(包括例外發生的時機與處理方式)。http://zh.wikipedia.org/wiki/IEEE_754
  • 注3:圖靈機(英語:Turing machine),又稱確定型圖靈機,是英國數學家阿蘭·圖靈于 1936 年提出的一種抽象計算模型,其更抽象的意義為一種數學邏輯機,可以看作等價于任何有限邏輯數學過程的終極強大邏輯機器。http://zh.wikipedia.org/wiki/%E5%9B%BE%E7%81%B5%E6%9C%BA

   END

  譯文: 《你應該在大學學到的 10 個方面的知識 》 臘八粥


Cnblogs www.labazhou.net 2015-08-23 08:57:30

[新一篇] 以一當十的程序員不是傳說

[舊一篇] 關于GC進行垃圾回收的時機 - quinn.hong
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表