如何正確有效學習大學計算機

  很多同學想要學習計算機,但是怎麼都學不會,為了幫助同學們更好的學習計算機,以下是小編分享給大家的學習大學計算機的方法,希望可以幫到你!

  學習大學計算機的方法

  專注並著重於基礎

  經常有同學向小蒜抱怨程式設計難學,但是他們的狀態總是今天看 C 語言課程,明天又看 Java,後天又看 Python,東搞西搞!看到別人做網頁,自己興趣了來了,學學學……這是幾乎所有初學者的通病。多學一些知識並不是壞事,但是如果你今天想學這個,明天又想學那個。這樣你就只能永遠徘徊在技術的門外。

  學習電腦科學,最重要的是要打下紮實的基礎,先專注於一門語言,然後再拓展到其他語言,養成快速學習新語言的能力。然後是演算法和資料結構,這些都是超出語言的,就是說不管是學 C 學 Java 學 Python 還是別的什麼,這一部分都是一致的。因此學習這部分的知識可以說是事半功倍的事情。

  學會使用搜索

  學會正確使用搜索將會幫助你在學習道路上更快地解決問題,有很多同學一遇到問題自己也不思考就急於找人問。在 github、google 和線上網站上面有大多數現成的解決方案。買本老教授的書學程式設計的日子已經過去了。現在的程式碼來得快去得也快,而至關重要的事情是培養自己快速學習新知識的能力。掌握一些使用搜索引擎的技巧,如學會使用搜索語法、布林檢索等方法,能讓你在學習的道路上事半功倍。

  堅持寫程式碼

  就像運動員每天鍛鍊一樣,經常練習寫程式碼其實也是學習電腦科學必須要做的。這不僅適用於寫程式碼,事實上,這句話可應用於任何行業。騎自行車,打籃球,讀書,烹飪等等等等。你做的越多,你就會越擅長,熟能生巧就是這個道理。

  這也是計算機領域的真理。如果你想擅長程式設計,那麼你就必須每天寫程式碼。程式碼寫得越多,你才會覺得它越容易,並且越擅長於程式設計。每天寫程式碼,每天學一點新的東西。隨著時間的積累,你不但能學到很多,你也會變得更為優秀。

  讓程式碼錯落有致

  錯落有致,使用空格,程式碼質量與其整潔度成正比。乾淨的程式碼,既在質量上較為可靠,也為後期維護、升級奠定了良好的基礎。在課程中小蒜再三提到了養成良好的程式碼便攜風格的重要性,但是仍有同學寫的一塌糊塗,既不利於自己檢查詢錯,也不利於別人幫助檢視。在這裡小蒜推薦大家閱讀 Robert C. Martin 寫的《Clean Code》,作者給出了一系列行之有效的整潔程式碼操作實踐。

  學會檢查與提問

  難以有效地自我檢查一直是初學者最大的弊端。小蒜經常會遇到有同學因為一個非常小的失誤導致在一個問題上卡殼好久,而發生這一切只是因為他不願意回頭去檢查。所以,在你責怪別人之前,先檢查自己的程式碼,想一想福爾摩斯的這條建議,“一旦你排除了種種不可能,剩下的不管有多麼難以置信,一定就是真相”。

  在遇到問題上同理,有很多問題並不是問題本身很難,小蒜遇到的多數提問者的根本原因是:“沒有明白這個問題究竟是怎樣的問題。”可想而知,當提問者都不清楚自己所面對的問題,回答問題的人也就只能愛莫能助了。

  減少熬夜

  隨著學得越深,很多同學也染上程式設計師的惡習——熬夜。雖說有時晚上夜深人靜的時候工作效率奇高,但是放棄睡眠就像是高利貸借款,第二天所要付出的代價非常高昂。當真的累了的時候,往往更容易走上偏執的道路,而不是反思路線是否正確。當我們累了的時候,創造力極容易急劇下降以致於想不出創造性的解決方案。而且當你疲倦的時候,你的耐心和忍受力就會受到嚴重的影響,就像炮仗一樣一點就著。

  軟體開發很少是短途衝刺,大多是馬拉松。而且是多場馬拉松。所以,試圖今天壓榨出 110% 的效能而明天只有 70% 的效能可用,絕對是一個壞主意。

  學習大學計算機的好處

  1.英語為技術插上翅膀

  搞計算機的同學應該都知道英語的重要性,至少如果你英語好一些,寫程式不至於捉襟見肘用拼音給變數命名。同時,因為很多先進的技術理念都會以英文形式出現,如果你要等到翻譯的版本,一方面要晚一大步,另外一方面,也要忍受翻譯腔的傷害。

  至於為什麼翻譯的文獻不能盡如人意,一方面是技術人才在翻譯領域的訓練不夠,翻譯也是一門語言轉換的技術;另外一方面是純粹的翻譯往往是外語背景出身,在技術領域的積累也不足,同時翻譯尤其是筆譯行業的低價,也會造成譯文質量的低下。

  但是如果你的英語好一些,可以為你省去大量的精力和時間。只要你搭好梯子就能接入一個無限遊弋的世界。當你的思想不會被語言所束縛的時候,你的視野也隨之開闊起來。

  我在微軟亞洲研究院實習的時候,有幸和微軟總部研究院的研究員共同完成一項研究課題。在前期和我的導師大量地做文獻調研,製作研究計劃方案,中期遠端會議商討方案,後期完成論文寫作,全部用英語完成。該聊的天,該扯的淡,該爭的觀點,該摳的細節,都不能說中文……雖然我是在國內長大並完成學業,我也沒有出國留學交流,但是我相信我的英文,還是能讓我和領域最好的科學家對話,我覺得這是對我學習成果的肯定。

  整個過程最大的感受是,英語的積累的確為我後期工作節省了大量的看不見的時間,這些看不見的時間是在對比之下才意識到的。在早期讀論文的時候,由於基本上沒有生詞語法障礙,能把關注點放在學術層面,而我是直到見到其他同學拿著字典查論文上的單詞才意識到,我的英語幫助我避開了許多語言的坑。當你在用英語學技術的時候,千萬不要把技術材料學成英語教材,因為這完全是關注點不同的兩件事情。

  所以對技術從業者們,儘管技術的熟稔也許早已讓我們獲得一個不錯的安身立命的技能,以至於我們可以驕傲地說,老子英語不好能看懂文件說不出又咋樣,不是照樣年薪XX萬?但是我想說,讓英語為你的技術插上翅膀,技術能飛得更遠。至少你搞定了發音的問題,就不會讀錯一些技術裡的單詞,而光是這一點,就已經足夠勝出許多技術儕輩了,起碼你可以在一些國際會議的報告上,談笑風生。

  2. 技術讓英語如虎添翼

  我在業餘時間學習英語和口譯,接觸了許多英語專業的同學以及英語專業背景出身的朋友。以英語等外語為基礎並且衍生出的翻譯、口譯等行業有一個顯著的特點,從業者多為文科相關背景。人文社科領域雖然也有邏輯相關的訓練,但是整體上在邏輯嚴密性以及定量分析上,較工科或者理科會有一些差距。

  這表現在,許多英語學習者包括口譯學習者對於學習和訓練的節奏,只停留在多練多聽多看的定性層次,但是以我目前接觸到的思考方式,採用系統化、邏輯化、步驟化、數量化的方法來思考,並且用於指導行動的,少之又少。

  而這些恰恰又是計算機專業訓練的強項,不管是系統流程還是白盒黑盒,不管是演算法步驟還是輸入輸出,借鑑計算機構造的體系和世界,對映到英語或者口譯的世界中,定量分析,定性調整,不論是對於英語學習還是口譯訓練,都會有極大的推動作用。

  藉助這個思想,我發起了口譯100小時訓練訓練,十萬字筆譯/視譯訓練計劃,以及1000天持續行動框架計劃……引入量化機制,設定步驟,強化落地執行。同時,也採用一些簡單的程式,做一些關於詞的分析和處理,編寫一些小工具,以更好地輔助英語和口譯的訓練。我還成立了一個社群叫ScalersTalk成長會,用行動和成長的視角,以“從英語初階到同聲傳譯”的成長框架,規劃並執行整體的英語技能提升。

  大資料時代,計算機技術可以讓計算機做一些粗略的翻譯,有的人甚至揚言要代替同聲傳譯,但是如果你介入到口譯的訓練中,你會發現,以計算機的智慧,在一段時間內,還真是無法替代人的作用;而倘若你把技術代入英語,卻能起到奇效,讓英語更加如虎添翼。

  3.兩個領域的相通性提供對世界更本質的理解

  計算機要程式設計,程式設計有程式語言,這是用於和計算機溝通的工具。英語是自然語言,人類交流溝通的媒介,也是人類文明傳承的重要方式。從語言的角度,兩者具有很強的相通性。

  當我們學習計算機技術,從計算機組成原理高效能運算,到計算機程式語言編譯原理,再到資料結構與演算法分析設計,到資料庫系統以及所謂的大資料,再到密碼學網路資訊保安……這是一套幾十年工程師以及電腦科學家工作積累演進的成果。每一代計算機行業從業者在前人的基礎上開拓創新,才推動了整個社會資訊科技的發展,才有了今天的移動網際網路時代的大潮流。

  當我們學習英語以及在此之後的口譯,我們從盎格魯撒克遜到莎士比亞,從日不落的大不列顛再到美利堅合眾國,英語的演化伴隨著日耳曼民族的發展,伴隨著英國統領全球的輝煌,伴隨著美國成為全球最強國的崛起……從紐倫堡國際軍事法庭第一次同聲傳譯,到聯合國大會多語言同傳接力工作,再到每年兩會總理記者會的亮眼高翻……不管是英語,還是依託英語之上的口譯,都是和世界連線的重要渠道,一種讓聲音變得具有全球相容性的解決方案。

  兩個領域的有自己的特點,又有自己的相通性。你可以理解,英語和計算機技術都是工具,一個承載文明的演進,一個以位元形式承載資訊的流動,而後者也將以一種更基礎的方式承載我們的一切生活。我們關於未來的想象,可以由這兩項重大工具,通往全球各地,通往各往各業。

  把握好這種相通性,你可以獲得一種自信。這種自信可以給你一種淡然,讓你面對困難時自如,面對挑戰時淡定。因為二者都可以讓你和整個世界相連,當你能連上這個最大資源,視野更開闊,內心也更富足。

  當然駕馭好二者的差異性,你又能獲得一種遊走的自如。寫程式很燒腦,但是你可以刷刷口譯;如果演算法讓你思維堵住,你不妨來一段奧巴馬在聯大演講的口譯訓練。左腦右腦交替使用,神清氣爽,相當於提高了一倍的使用效率,頻寬翻倍。

  有的人說,你的語言的邊界就是你的世界的邊界,在我做ScalersTalk微信公眾號的日子裡,有幸結識了學習英語、俄羅斯語、法語、德語、西班牙語、葡萄牙語、日語、韓語等的朋友,我發現真的就是這樣,一個語言就是一片天地,就是一個世界。

  但是我還是要補充一下,當你在這個基礎上,把計算機技術納入考慮,這豈止是打開了一個新世界,這就是增加了一個新維度。

  學習大學計算機必看書籍

  《深入理解計算機系統》

  ***原書第3版***

  書籍簡介

  ISBN:978-7-111-54493-7

  作者:蘭德爾 E.布萊恩特、大衛 R. 奧哈拉倫

  譯者:龔奕利 賀蓮 譯

  定價:139.00

  出版時間:2016/11

  計算機系統入門的經典書籍,從程式設計師視角全面剖析的實現細節,使讀者深刻理解程式的行為,將所有計算機系統的相關知識融會貫通。第3版相較上一版內容上最大的變化是,從以IA32和x86-64為基礎轉變為完全以x86-64為基礎。主要更新如下:

  基於x86-64,大量地重寫程式碼,首次介紹對處理浮點資料的程式的機器級支援。

  處理器體系結構修改為支援64位字和操作的設計。

  引入更多的功能單元和更復雜的控制邏輯,使基於程式資料流表示的程式效能模型預測更加可靠。

  擴充關於用GOT和PLT建立與位置無關程式碼的討論,描述了更加強大的連結技術***比如庫打樁***。

  增加了對訊號處理程式更細緻的描述,包括非同步訊號安全的函式等。

  採用新函式,更新了與協議無關和執行緒安全的網路程式設計。

  《計算機系統概論》

  ***原書第2版***

  書籍簡介

  ISBN:978-7-111-21556-1

  作者:[美]派特、派特爾

  譯者:樑阿磊,蔣興昌,林凌譯

  定價:49.00

  出版時間:2007/07

  計算機系統的另一本經典著作,作者是與Donald E. Knuth齊名的美國計算機界泰斗級專家Yale N. Patt。本書站在計算機整體系統的高度將軟硬體連貫起來進行闡述,強調對軟硬體結合的理解,從硬體的基本構件一直講到軟體的高階程式設計與構造,使讀者在學習過程中能夠將軟硬體融會貫通、相互印證。

  本書最大的特點是其提倡的層次轉換概念,即從問題開始到計算機運算出結果可以分為七個層次。通過七個層次的轉換,即可完成從問題到結果的轉變。

  《計算機系統》

  系統架構與作業系統的高度整合

  書籍簡介

  ISBN:978-7-111-50636-2

  作者:阿麥肯尚爾·拉姆阿堪德蘭、小威廉 D. 萊希

  譯者:陳文光 等譯

  定價:99.00

  出版時間:2015/07

  美國佐治亞理工學院的教材。與《深入理解計算機系統》從程式設計師視角來講解計算機系統,內容偏向系統軟體***特別是作業系統***不同,本書在計算機系統結構和作業系統的內容基本平衡,旨在讓讀者瞭解計算機體系結構和系統軟體之間的關係,為進一步深入學習計算機體系結構、作業系統和網路的高階課程打下基礎。

  《計算機系統》

  核心概念及軟硬體實現***原書第4版***

  書籍簡介

  ISBN:978-7-111-50783-3

  作者:J. 斯坦利·沃法德

  譯者:龔奕利 譯

  定價:79.00

  出版時間:2015/07

  本書用一個虛擬的計算機系統Pep/8系統展示了計算機系統的7個抽象層次:應用層、高階語言層、彙編層、作業系統層、指令集架構層、微程式碼層和邏輯閘層,最大的特色就是著眼於計算機軟體和硬體系統背後的設計原理,而這些原理數年來都未曾改變過。而且,去除那些眼花繚亂的新技術的表象,能夠更好地看清和理解系統的本質。

  計算機系統基礎

  袁春風 編著

  書籍簡介

  ISBN:978-7-111-46477-8

  作者:袁春風 編著

  定價:49.00

  出版時間:2014/07

  作者對美國麻省理工學院、加州大學伯克利分校、斯坦福大學、卡內基梅隆大學等著名大學與計算機系統有關的課程進行了深入的對比分析後,結合我國學生的基礎和需求編寫的本土化教程。

1.計算機專業大學排名

2.計算機專業高校排名

3.大學計算機專業排名

4.大一計算機學習心得感悟

5.計算機專業大學排名