解謎計算機科學(前言)-----轉載自王垠的博客--http://www.yinwang.org/

解謎計算機科學(前言)

計算機科學直到今天仍然是一個謎。它簡單而美麗的精華,被壓在沉重的歷史包袱和功利誘惑之下。紛繁複雜的 IT 技術充斥着各種浮誇和忽悠,變成一本本大部頭“聖經”,讓人不知所措,頭腦發漲,讓外行尤其是女性望而卻步。她們說,學計算機能賺錢,可是計算機知識淘汰速度太快,需要不斷學習才能跟上,計算機工作枯燥,傷眼睛,傷皮膚,老得快!去看看各位計算機界前輩的照片,你會發現她們說的好像是對的 :)

“IT 男”和“極客”的苦逼名聲,來源於這個領域創造者們的自大和虛僞。他們認爲自己是天才,能夠理解複雜的理論,所以他們喜歡把簡單的問題搞複雜,然後告訴你“只有天才才能理解這種簡單”。最後這種自大蔓延到整個領域。計算機科學雖然名字叫“科學”,但它的從業人員在很大程度上是宗教化的。不同信仰的教徒們盲目輕信,跟風拍馬,互相鄙視,甚至掀起聖戰。進入這個領域面臨的,不僅是高度近視,不修邊幅的同事,而且很多還很自大,喜歡顯示自己聰明,覺得自己了不起。他們所謂的“聰明”,也就是能折騰那些紛繁複雜的理論和代碼。發表論文來顯示自己解決了一個問題,但別人看了仍然摸不着頭腦。這種不健康的心理,進入了計算機科學的基因,完全違背了科學的精神。

在這種情況下產生出來的所謂“知識”,當然是淘汰速度很快的,因爲他們只給了你浮於表面的東西。IT 業的很多知識就像媽媽告訴你,我把勺子放在這個抽屜裏了,你記住啊!第二天她又把勺子換了一個地方,要你重新“學習”。這叫知識嗎?他們把精華的東西牢牢地鎖了起來,只把衍生出來的副產品給其他人。拿到這些副產品的人一知半解,又在上面加上一些亂七八糟的東西,然後轉手倒賣給更下一層的學生。這樣幾層轉手之後,你拿到的東西就只能湊合用了,不能用於產生新的想法,甚至使用中有問題還不能解決。這就是爲什麼很多碼工折騰來折騰去,代碼也只是碰巧能工作而已。沒有理解原理,就成爲了“知識”的奴隸。看不準方向,在錯誤的道路上越走越遠。

愛因斯坦說:“如果你不能把一個問題跟六歲小孩解釋清楚,那你並不真的理解它。” 這句話打了計算機前輩們的耳光。計算機界至今沒有出現一本像物理界的『費曼講義』那樣負責任的教材。沒有人從日常生活解釋清楚那些基本的理論和技術是怎麼回事。一方面是因爲很多人並不真懂,只會照本宣科,拿別人的代碼來拼湊折騰。另外一方面,很多懂了的人爲了自己的私利,想掩蓋這些簡單的精華,故意把事情搞複雜。

我寫這本書,就是爲了彌補計算機業界這一空缺,改變行業的現狀。它將吸引新鮮乾淨的血液進入這個行業,並且賦予他們力量。它也可以刷新內行人員的頭腦,讓他們重新理解和審視已有的知識。這樣也許我們能衝破這個行業的重重迷霧,讓它變得誠實,獲得科學的精神,成爲像物理一樣踏實的學科。

很多計算機書籍都喜歡從“數學基礎”開始,一開頭就是長篇累牘的數學公式,定理,證明…… 結果讀者還沒讀完數學基礎就倒下睡着了,再也不想打開這本書。所以我不從數學基礎開始,而是從最簡單的生活常識。在認識發展的過程中,你會自己去創造出所需要的那些數學。

這本書不要求讀者理解高等數學,而只需要幼稚園或者學前班水平的數學:掰手指頭算加法,手算多位數加減法。它不要求,也不會試圖教會你中學幾何,高等數學或者物理學,你不需要那些來理解計算機科學。它不灌輸給你死知識,而是從日常生活的經驗出發,引導你去“重新發明”它們。最後你不是學會了知識,而是自己創造了它們。只有這樣的知識才是屬於自己的,纔是可靠安心的,不受別人控制,也不會忘記。我討厭“學習”這個詞,因爲它基本代表着死記硬背。我不是在教你,你也不是在學習,因爲你自己發明了這一切。

如果有一天,一場災難毀滅了世界上所有的計算機和電子產品,以及它們的設計文檔,我希望看過這本書的人,能夠根據他們的日常經驗,重新創造出這些東西。對的,這本書不僅是關於編程和軟件,它還會告訴你硬件是怎麼回事,並且把軟件和硬件統一起來。它不只是教會你一種程序語言,而是教會你所有的程序語言,它告訴你如何發明一種語言。它不要你去“記住”計算機裏面有哪些東西,而是讓你自己發現“需要”它們:晶體管,寄存器,指令,堆棧…… 你會發現虛擬機(VM)到底是什麼,指令系統爲什麼那個樣子,怎麼創造它們…… 所有這一切,都以掰手指頭的幼稚園算術爲基礎。

實際上,計算機科學和邏輯學是統一的,你會不知不覺理解很多看似高深的邏輯學,你會看透白鬍子邏輯學家爺爺們的把戲。這種理解會爲你提供更好的理解數學的工具,所以這本書不僅會幫助你理解計算機科學,而且會幫助你更好的理解數學。理解了數學你就能更好的理解物理。理解了物理,你就能更好的理解所有的科學……

有人可能懷疑這麼浩大的工程,要什麼時候才能完成。不會很久的,因爲計算機科學最精華的部分,真的沒有很多,我掰着手指頭都數的出來。剩下來的都是衍生出來的技術,外加自欺欺人和商業炒作。你會掌握精華,識破忽悠和炒作,你可以衍生出自己的技術。即使你決定不進入這個領域,你也會成爲一個火眼金睛的投資人,管理者,或者消費者。你不再能被這些“內行”欺騙。爲了達到這個目標,你不需要損害自己的視力或者健康,不需要長出雞窩一樣的鬍子,不需要成爲一個對異性具有排斥力的呆子 ;)

這本書不是固定不變的,它會不斷地完善和發展。有人看我寫的東西就是我最大的動力,所以爲了使我自己有動力寫書,我會採用“快速迭代”的方法。我是一個很懶的人,我不會等書完全寫完才發佈它,那樣我會打瞌睡以至於不能繼續,所以我會分章節發佈書的內容。每一章發佈之後,還會經過成百上千次的修改。每一章的內容,我會在它“基本可讀”之後就進行發佈,而不會等到它完美。之後我會反覆的思考和修改,接受人們的反饋。

這種做法對早期的讀者有益,也有一定的弊端。弊端就在於,由於這些內容隨時可能變化和改進,所以早期讀者有時候會遇到看不懂的地方,必須之後再次閱讀,才能跟上改進的思路。不過這樣做也有好處,讀者不用等上一年就能讀到這本書,而且能跟着我的寫作思路去思考,反覆琢磨。俗話說,書讀百遍,其義自見。他們可以跟我討論,給我反饋,向我提問。這些都是後期讀到完善作品的人無法體驗到的。在某種程度上,這些人對問題的理解會更加深刻一些,因爲他們被迫去進行獨立思考。另外,早早的有了讀者,會讓我很開心,滿懷着愛去做這件事。

人的短期記憶只能記住七個東西,所以我會努力讓這本書簡短。每個知識點都不應該長篇大論之後才能理解,而應該是正中要害。當然這篇前言也應該簡短,所以前言就到此結束了。

計算機的世界,就將被你一個人重新發明出來。它的內容沒有很多,真的沒有很多……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章