計算機專業(yè)學習淺談
歸根結底,計算機的哲學依舊是人的哲學。拋開理念之爭議,超越技術的形式,以人為本地認識我們的行業(yè)與自身的地位,或許會使將來的發(fā)展道路走得更舒心一些。下面是學習啦小編分享給大家的計算機專業(yè)學習淺談的資料,希望大家喜歡!
計算機專業(yè)學習淺談一
廣泛了解,從科普書籍開始
選擇計算機專業(yè)的同學,也許是因為原先有一定的基礎,也許是因為一時的激情,但更多的人,可能對自己的選擇沒有深刻的認識,或多或少對計算機專 業(yè)有一些神秘的感覺。自己究竟是否喜歡這個學科?才華能夠在哪個分支領域有所施展?抑或是真的不適合這個專業(yè)?諸多疑問,解決的方法首先便是了解和認識我 們的學科。濃厚的興趣是學好任何學科的源泉;而廣泛的了解則是獲得興趣的途徑。當今我們對于信息的獲取已非難事,其中“閱讀”是一個簡潔而有效的方法。
也許你認為閱讀專業(yè)書籍對于剛剛步入大學的自己來說有點困難,也很枯燥,那么不妨先從科普書籍看起??破諘橇私饫碚摗@得應用知識最好的途 徑。相信不少理工科的同學被量子物理和相對論搞得頭昏腦脹過。究其原因,是我們的現實生活與抽象的數學模型之間存在思想意識上的鴻溝。然而要是讀讀斯蒂 芬·霍金的《時間簡史》,你就會被書中有趣的故事和例證所吸引,從而對抽象的理論有了感性的認識——即使仍然沒有讀懂,你也至少了解了這個學科研究的領域 和目標是什么,也必然有所收獲。所有理工學科都有這樣的性質,計算機專業(yè)也不例外。
我們知道,計算機理論是建立在數學基礎之上的。大學計算機專業(yè)對數學的要求較高,其重要性不必多言。數學令不少同學頭痛,除了其“繁”與“難” 外,很大程度上是因為他們沒有理解這些抽象理論的實際應用方向。與本科數學專業(yè)的課程設置相比,計算機專業(yè)的數學課程大都偏重實用性。比如我們的離散數學課程中涉及到的邏輯代數奠定了計算機一切運算的基礎,形式語言構成了計算機程序編譯的模型,代數系統(tǒng)則是當前各類數據庫系統(tǒng)的理論依據等等。因此,如果能夠提前地了解到并簡單地學習一下這些數學知識的具體應用,對理解理論是很有益處的。此外,電子學、信號與系統(tǒng)、控制理論等也是計算機專業(yè)學生必修的公共課,然而不少同學往往認為它們與計算機專業(yè)的關系不大,從而放松了學習。事實上這些學科是計算機硬件與網絡通信的基礎,學好這方面知識的前提是認識它們的現實應用及其與計算機的密切聯系。
也許你將來學習圖論的時候,對“歐拉路”的概念會很清晰,這是因為你在小時候的圖畫書上玩過“一筆畫”的游戲;然而“二分圖”、“生成樹”這些概念又是怎么回事呢?你的理解可能就不是那么深刻了——因為你一時難以找到一些生活中的實例,并從中抽取出特性。在這種情況下,翻閱一些涉及這些知識的科普書籍就十分有必要了。我曾讀過一套《數學游戲》(《科學美國人》雜志匯編,中文版:科學技術文獻出版社),它將圖論、邏輯代數、自動機理論等領域的抽象的概念具體化為一個個有趣的故事,引導讀者了解這些知識的現實應用,啟發(fā)讀者將抽象思維與感性生活有機結合。我還讀過一本《編碼的奧秘》(《CODE》, 中文版:機械工業(yè)出版社),它則將邏輯代數、數字電路、匯編語言等知識以實物和簡單電路的形式進行類比,揭示其中的原理,并引導讀者動手實踐。事實上這類與計算機專業(yè)相關的科普書籍還有很多,在學習課本的間隙閱讀一下,絕對能起到催化劑的作用。
談到科普書籍,相關的另一個問題便是計算機科學與計算機技術之間的關系。也許不少同學選擇計算機專業(yè),是源于對計算機令人眼花繚亂的應用的認識。所謂計算機技術,一般是指包括文字處理、信息管理、多媒體、網站建設等在內的計算機應用技術;而所謂計算機科學,一般指數據結構、組成原理、操作系統(tǒng)、編譯原理等計算機內部實現機制。前者是計算機在各行各業(yè)提高生產力的體現,屬于各類職業(yè)教育和??平逃姆懂?而后者是研究是計算機本身的理論,是本科計算機教學的重點。市面上大多數計算機書籍與雜志是計算機應用技術方面的,屬“技術普及型”,從受眾角度來看與科普書籍有著類似的性質。適當地涉獵一些自己感興趣的應用技術,對培養(yǎng)學習興趣、增強實踐能力、了解業(yè)界行情是很有好處的。不過如果確實想在計算機行業(yè)長期做下去,仍然應當將主要精力放在對計算機科學的學習方面。畢竟用科學的理論指導實踐是大學教育的意義所在。
總之,廣泛了解計算機學科基礎科普知識,在今后學習具體理論的時候才會少一些盲目,多一些頓悟。
計算機專業(yè)學習淺談二
把握全局,學習計算機導論
當你對計算機學科涉及的領域有所了解后,就應該著手展開專業(yè)學習了。初讀本專業(yè)的教學計劃與課程設置,你或許會被諸如離散數學、編譯原理、接口技術等生疏的課程名稱弄得一頭霧水。這些課程都是研究什么的?它們各自與我們面前的計算機有哪方面的聯系?要回答這類問題,首先需要把握全局,從整體上認 識計算機科學。
國內高等院校一般都為大一學生開設計算機基礎課程。這類課程的受眾面廣,主要涉及計算機基礎應用知識。各種版本的計算機基礎教程幾乎都以計算機科學導論作為開篇。對于把計算機作為應用工具的其他專業(yè)的學生而言,導論只算是“內容概要”,他們往往更注重后面的應用型知識;而對于把計算機作為研究對象的我們,則決不能忽略這類指導性的內容。專門地、有意識地學好計算機科學導論,能夠使你對計算機科學有一個大局觀,清楚地認識到每一個分支學科的研究領域與重要意義,從而在今后的具體學習中明確方向,加深理解。
依我個人的學習經驗,建議初學者閱讀一些國外優(yōu)秀計算機基礎與導論教材。與國內大多數講解軟硬件具體使用的同類教材相比,國外教材更偏重以應用為切入點,深入淺出地闡述計算機科學原理。諸如《計算機文化(第8版)》(《New Perspectives on Computer Concepts》,中文版,機械工業(yè)出版社)、《計算機科學導論》(《Foundations of Computer Science: From Data Manipulation to Theory of Computation》,中文版,機械工業(yè)出版社):前者適合于各種信息類專業(yè)的學生或計算機愛好者閱讀。該書圖文并茂,語言生動,從應用角度出發(fā),廣泛涉及計算機軟件、硬件、網絡的基本原理,同時概述了計算機學科的歷史背景與行業(yè)現狀。隨書的光盤中給出了不少影音材料,在學習的同時還可以提高計算機專業(yè)英語聽說能力。后者在風格上與前者類似,但內容更適合計算機專業(yè)學生閱讀,被美國不少高校定為計算機專業(yè)學生的入門課。它以實例作為出發(fā)點,系統(tǒng)地講解了計算機組成、計算機網絡、操作系統(tǒng)、數據結構、算法設計等分支學科的研究領域、基本原理和應用方向,而幾乎不涉及晦澀的數學模型與實現細節(jié)。閱讀此類書 籍,可以在潛移默化中理清初學者對于計算機科學學習的思路。
計算機科學是一個有機聯系的整體,每個分支都或多或少地與其它分支存在依賴關系。如果死板地依照教學計劃線性地進行學習,往往會遇到知識理解上 的問題。例如算法分析課程與程序設計課程分屬理論與實踐;組成原理課程與體系結構課程是對計算機系統(tǒng)不同層面的剖析。我們不能簡單地找出它們的先修、后修關系,這樣難以建立完整的知識體系。因此在把握大局之后,我們仍有必要簡單了解一下每個分支學科的基礎知識。在這方面,推薦大家閱讀《編程卓越之道(第一卷):深入理解計算機》(《WRITE GREAT CODE: Volume 1:Understanding the Machine》,中文版,電子工業(yè)出版社)這本書。分開來看每一章節(jié),其內容編排結構與國內高校計算機課程體制相近,涵蓋了邏輯代數、數字電路、機器指令、體系結構、存儲器管理等方面的基礎知識和實現方法,特別是闡明了各個分支學科之間的本質聯系。有了這些基礎之后,在遇到更高階的問題時,你至少會明白這個問題應該在哪個分支學科中尋找答案了。
當你有了一定的計算機理論基礎,尤其是程序設計基礎后,想更加深入地把握計算機科學的脈絡,不妨看看這本書:《深入理解計算機系統(tǒng)(修訂版)》 (《Computer Systems A Programmer’s Perspective》,中文版,中國電力出版社)。它與《編程卓越之道》系列的共同特點是從程序員的視角觀察計算機系統(tǒng)。而這本書作為國外數十所高校的計算機系統(tǒng)導論教材,其組織更加嚴密,風格更加嚴謹。它以“程序在計算機中如何執(zhí)行”為主線,全面闡述計算機系統(tǒng)內部實現的諸多細節(jié)。當你在學習數據結構、組成原理和體系結構等課程和時候,翻閱一下此書的相應章節(jié),同時編程實現其中的例子,一定會對課本上單純的文字型理論有更加感性的認識——原來它們是 這樣活生生地存在于我的計算機里的!
正所謂“會當凌絕頂,一覽眾山小”,從計算機科學全局的高度整體把握其分支學科,在頭腦中率先構建計算機科學的整體框架并為其夯實最基層的結構,就能夠為你在未來每一步的學習中掃清迷霧,指明方向。
計算機專業(yè)學習淺談三
運籌帷幄,掌握編程的思想
程序設計與開發(fā)是計算機學習的一個關鍵環(huán)節(jié),編程能力是衡量一名計算機專業(yè)人員素質的重要考核點。這是因為程序是連接理論與實踐的紐帶,是計算機科學與計算機技術相交融的領域。作為一名計算機專業(yè)學生,我們一方面有別于其它專業(yè)將計算機作為工具的應用型人才,不能僅僅利用計算機,而要為他人利用計算機提供平臺;另一方面我們暫時達不到計算機科學家的水平,不能做出理論研究成果,但能為理論學習鋪墊實踐基礎。因此,只有具備足夠的程序設計與開發(fā)能力,才能真正體現我們的智慧,同時充分發(fā)揮計算機的潛力。
學習編程,首先應掌握至少一門程序設計語言。C語言作為一種語法清晰、功能強大、應用廣泛的高級語言,長期以來被國內大多數高校的定為程序設計必修課。全面理解和掌握C語言的脈絡的重要意義這里毋庸多言。市面上C語言的教程多如牛毛,但最經典的當數C語言的設計者Kernighan與 Ritchie 合著的權威白皮書——《C程序設計語言(第2版)》(《The C Programming Language》,中文版,機械工業(yè)出版社)。書雖不厚,但絕對全面而準確。其語言簡潔,例證通俗,實用性強。相比之下國內的一些C語言教材在學習曲線可能比前者平滑,但它們往往以考試為導向,過多地糾纏語法死角,同時大都未遵從ANSI標準。對于計算機專業(yè)學生來說,前者能夠讓我們看到更加嚴謹與實務的態(tài)度。當你的語言功底達到一定程度后,就需要從一個更高的視角來探察語言的本質,不妨看看這本:《計算機程序的構造和解釋(第2版)》 (《Structure and Interpretation of Computer Programs》,中文版,機械工業(yè)出版社)。它闡述了編程語言本身的機制與實現,同時引入了一門對于大多數中國學生來說不甚了解的語言——LISP。 LISP是很多美國高校計算機專業(yè)的入門語言,也是一種結構上與C、Pascal、Java、Basic等完全不同的非馮·諾依曼語言。研讀SICP,體味LISP,給你耳目一新的感覺之后更多地可以加深對編程思想本質的理解。
大學的各類程序設計與開發(fā)課程旨在培養(yǎng)我們兩方面的能力——算法設計能力與應用開發(fā)能力。前者偏重計算機科學,后者偏重計算機技術。算法是用計算機思維解決現實問題的理論,具有較強的數學性。算法學的曠世巨著應數Knuth的《計算機程序設計藝術》(《The Art of Computer Programming》,中文版,清華、機工、國防等出版社皆有授權),不過要徹底讀懂這個大部頭需要相當的數學理論基礎與編程實踐經驗積累。對于初學者,建議首先培養(yǎng)使用常規(guī)算法解決小規(guī)模問題的能力,并行地提高駕馭語言的水平與抽象問題的思維。針對這個目的,結合程序設計實踐一類的課程,可以讀讀這幾本書:《編程珠璣(第2版)》(《Programming Pearls》,中文版,中國電力出版社)、《程序設計實踐》(《The Practice of Programming》,中文版,機械工業(yè)出版社)、《代碼閱讀方法與實踐》(《Code Reading: The Open Source Perspective》,中文版,清華大學出版社)、《C專家編程》(《Expert C Programming》,中文版,人民郵電出版社)。它們的側重點各有不同,但對于通過實踐來學習算法與數據結構都是很有益處的。
應用開發(fā)方面,實踐是第一要務,然而高效的實踐是建立在科學的程序設計方法之上的。以C語言為代表的結構化程序設計方法是規(guī)范的程序邏輯的基礎,目前主要使用在系統(tǒng)級開發(fā)中,前面所提到的諸多書籍都或多或少有所涉及。而以Java、C++為代表的面向對象程序設計方法廣泛應用于實用項目開發(fā), 這方面的經典之作中,推薦閱讀Bruce Eckel的《Java編程思想(第3版)》(《Thinking in Java》,中文版,機械工業(yè)出版社)與《C++編程思想(第2版)》(《Thinking in C++》,中文版,機械工業(yè)出版社)。此外軟件架構設計、編碼規(guī)范與風格、代碼除錯與質量管理以及軟件工程的各類原則在實際項目開發(fā)中都是及其重要的,在 具備了一定的編程經驗、準備投入一些實際項目開發(fā)的時候務必要了解。建議閱讀《代碼大全(第2版)》(《Code Complete》,中文版,電子工業(yè)出版社)這本大而全的軟件構建綜合性寶典,它在從總體上指導軟件開發(fā)的各個環(huán)節(jié)的同時也引入了一些細節(jié)問題(諸如 goto的使用)的討論,引導我們對一些司空見慣的程序設計理念不但要知其然,而且要知所以然。
有一位熱衷于游戲的同學告訴我,游戲給予他滿足控制欲的空間。但是請放眼看看,游戲的控制范圍不外乎一個特定進程中他人預先設定好的一系列數據,并以有限的圖像與聲音形式體現出來。然而如果你掌握了編程這一強大的武器,就能夠面對眼前的計算機游刃有余,在硬件條件允許的情況下盡你所能將控制欲升華為創(chuàng)造力,方便自己的同時造福他人。運籌帷幄,掌握編程的思想,無論走向科學研究或是應用開發(fā),這都將為你奠定堅實的基礎!
計算機專業(yè)學習淺談四
理性思辨,體味計算機哲學
Bill Gates對計算機事業(yè)充滿激情——“每天早晨醒來,一想到所從事的工作和所開發(fā)的技術將會給人類生活帶來的巨大影響和變化,我就會無比興奮和激動。”自由軟件運動的精神領袖Richard Stallman幾十年如一日,將打破知識壟斷、共享人類智慧作為己任,帶領著數以萬計的軟件志愿者推動著開源世界的發(fā)展。但并非每個計算機業(yè)者都能有Gates那樣豪邁的氣度和Stallman那種堅定的信仰,計算機及其相關技術對于大多數業(yè)者來說僅僅是興趣愛好或者謀生的工具。計算機行業(yè)半個多世紀 以來形成了其獨有的文化氛圍,作為一名計算機專業(yè)學生,了解專業(yè)文化,體味專業(yè)哲學,對于學習和從業(yè)都是具有指導意義的。
首先必須承認,計算機世界中存在著形形色色的意識理念差異。諸如微軟帝國與開源世界的明爭暗斗,不僅僅是一場商戰(zhàn),更多的是兩種哲學的搏擊。當代大學生多數是在微軟Windows光環(huán)照耀下認識計算機的。在這種環(huán)境下,多接觸一些開源世界的事物,對于理解計算機的本質不無裨益?!豆矂?chuàng)未來:打造自由軟件神話》(《Free for All: How Linux and the Free Software Movement Undercut the High-Tech Titans》,中文版,上??萍冀逃霭嫔?是一本講述開源世界發(fā)展史的書,你可以從中了解自由軟件運動及其領袖人物的傳奇故事,從而對GNU、 Linux、OpenSource這些概念蘊生人性化的理解。清華大學王垠的《完全用GNU/Linux工作,擯棄Windows——你我共勉》、蘭州大學黃平的《自由,你忘記了嗎?》等長篇文章則是國人對開源運動的慷慨陳辭。盡管這些文章常常被指為“偏激”,但沒有調查就沒有發(fā)言權,無論支持還是反對, 客觀的認識是第一位的。
其次,我們應該用平和的心態(tài)對待知識與技術,衡準專業(yè)學習在生活中的位置。一些同學出于種種原因,成為了“先進技術”的追隨者:通曉各類流行的編程語言,一有新版本的工具推出立即安裝學習,一有新的技術論戰(zhàn)立即關注其走向。還有一些同學成為了某些技術的忠實信徒:看準了Java就對.NET的東西置之不理。這些追隨者和信徒們往往為突飛猛進的技術所累,以至于有感于學習的空虛。過分追捧技術可謂舍本逐末,死扣某一知識也顯得目光短淺。一方面百變的技術離不開計算機科學的本源,在實踐過程中深入理解基礎知識是關鍵;另一方面任何技術都有統(tǒng)領其實現細節(jié)的思想精髓,觀其形不如知其神。我們不妨甩開冗繁的技術,換個角度靜下心來讀幾部計算機文化與哲學作品:
程序人生方面:《編程之道》(《The Tao of Programming》,雙語版,電子工業(yè)出版社)一書出自一位對東方道家與禪宗思想有著獨特理解的美國軟件工程師之手,全書由一則則短小而富有哲理故事組成,以類似寓言的形式生動地反映了程序員群體的生活以及計算機文明的演進。閑暇時隨手翻閱,即使不能立刻體會到每個故事的真諦,但隨著自身閱歷的增長,相信你會領悟程序人生的“道法自然”。
設計理念方面:開源軟件界的“斗士”級元老Eric Raymond所著的《Unix編程藝術》(《The Art of Unix Programming》,中文版,電子工業(yè)出版社)一書,以Unix系統(tǒng)的設計原則為主線,展示了Unix所開啟的“KISS”(Keep It Simple, Stupid!)編程文化與思維方式。對于很多干啃千篇一律的課本、禁錮于Windows開發(fā)的計算機專業(yè)學生來說,這本書一定能夠使你眼界大開——“結構化”并非真理,“面向對象”也不是王道;而對于有一定Unix/Linux使用或開發(fā)經驗的同學,這本書也一定會使你豁然明朗——原來一個程序的設計竟可以如此精巧!
管理哲學方面:對于有志于軟件工程,想涉足項目管理的同學,《人月神話》(《The Mythical Man-Month》,中文版,清華大學出版社)這本書就有必要讀一讀了。它拿真實案例說事,仿佛一部實例化的軟件工程課本。如果你在團隊開發(fā)的道路上陷入了困境,不如參考一下前輩們是如何處理“人”與“月”二者之矛盾的吧。事實上不僅是軟件工程,任何事業(yè)的成功,往往技術不是關鍵,社會科學的因素才是埋 頭技術的朋友們更應當關注的。