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