計算機專業學生該如何提升本身

對於不少計算機專業的學生來講,如何在專業上提高自身能力是件很困惑的事情,特別是在面對現在各類不停更替的最新最流行的編程語言和開發框架時,更是手足無措。爲此,正值新學期開學季,咱們將江博士以前在知乎上的回答 「計算機專業學生該如何提升本身」的內容分享給一些學生朋友,但願對大家有所幫助。

大學是系統性地學習基本原理的時候,沒有必要追逐最新最流行的編程語言和開發框架,畢竟到了畢業工做的時候每每又有不少新的變化。把基本的知識體系掌握好會終身受用無窮。大學只是提供環境和條件,學習的方向和重點須要本身把握。下面這幾方面對於本科生是尤爲重要的。算法

計算機體系結構:這是理解計算機工做原理的基礎,即便之後只作軟件方面的工做,這方面的知識也是相當重要的。一方面軟件運行在硬件上,理解計算機各部分的工做原理以及他們之間的通訊機制對於代碼優化和系統級的軟件開發都是必須的;另外一方面硬件只不過是石化的軟件,軟硬件不過是邏輯組合的不一樣實現方式而已。不少美國大學的這門課程都會讓學生用代碼把一臺虛擬計算機實現出來,這確實是個好辦法。編程

操做系統:全部作軟件開發的人都須要對進程、線程、內存的管理有清楚的理解。操做系統爲在計算機上運行多個應用程序提供基礎,Docker 等這些如今流行的技術也無非是把操做系統提供的機制和工具進行了封裝而已。數據結構

編譯原理:編譯原理讓你理解程序在運行的時候具體在作什麼。只有能把高級語言的每條語句在大腦中映射到 CPU、寄存器、內存裏棧和堆的具體操做,才能寫出高效、錯誤少的代碼。每一個計算機專業的學生都應該嘗試本身實現一個語言。框架

一門系統編程語言(C/C++):C 語言仍然是最好的用來學習編程的語言。它在語言層面的概念比較少,容易比較快地把注意力從語法轉到程序設計上。同時因爲 C 在標準庫裏沒有提供現成的容器,因此不可避免地須要學習如何實現基本的數據結構:不一樣類型的鏈表、隊列、字典等,在實現這些結構的時候又不可避免地要熟悉指針操做和遞歸。雖然在平常軟件開發中不多會須要本身實現這些容器,可是理解他們的實現和性能特色能夠避免你用 Java 之類的語言時什麼都用 Vector 來作。編程語言

算法、數據結構:若是你未來作系統軟件開發,將會須要本身作一些算法的實現。即便是作應用軟件開發,也須要在這方面有足夠的知識來權衡不一樣的選擇。雖然現代的高級語言大多提供了豐富的容器、算法函數、中間件等等,只有理解他們的性能特徵和資源代價才能做出好的選擇。函數

一門學科的知識體系就好像大腦中的一個架子,一開始搭建它的時候會感受是個很慢的過程。可是若是你耐心地把它創建起來,再學習新的東西就會知道該把新吸取的知識放在什麼位置,它和架子上現有的內容是如何聯繫的,在理解、記憶、應用上都會事半功倍。工具

相關文章
相關標籤/搜索