計算機科學的哲學:破解IT技術難題的秘密心法 | 被動收入的投資秘訣 - 2024年8月
![](https://www.books.com.tw/img/001/082/08/0010820801.jpg)
計算機科學的哲學:破解IT技術難題的秘密心法
本書將告訴你困擾你內心已久,但是一直沒有人告訴你的問題答案。
作者集30年的IT技術從事經驗,以銳利的眼光,細膩的觀察,顛覆傳統的哲學邏輯觀點,為你從頭到尾貫穿所有計算機科學的基準概念,幫助您打通IT技術思維的任督二脈。
沒看過此書,不要說你精通電腦技術。
看過此書,再來回想你是不是真的了解IT技術。
【精粹聚焦】
本書最終的目的是要讓讀者能具有:
● 貫穿IT軟硬體的解析觀點。
● 建立原本應有的對IT軟硬體觀察批判及品味的能力。
● 不再困惑,釋放出想像力以及創造力。
本書著重在基本觀念的闡述,即具通用性、通透性、涵蓋性的定律及概念,帶領讀者建立:
● 一套行為系統的架構觀念與哲學。
● 一套資源利用與方案創造的思維系統。
● 一套智能與知識的哲學。
本書並不是一本在探討特定技術細節的書,目的在引導讀者面對處理這些細節時的整體思維方向及處理方法,而不是在交代特定細節;方向決定了你的行為選擇,有正確的方向才會有正確、效率的行為,有了正確的方向,才會有正確的細節。
本書特色
貫通計算機技術的思想法則
軟韌體工程師面對問題的思索之道
突破軟體學習困境的完美理論
這是本精解基礎觀念思維的上乘經典
A篇 基本觀念
A1 資訊科技是什麼
A2 IT系統的探索之道
A3 行為系統
A4 生物性的行為能力
A5 知識性的行為能力
A6 語言與文字
A7 作業總論
B篇 電腦運作體系的解析
B1 電腦系統概論
B2 電腦系統與行為系統
B3 CPU的行為模式
B4 電腦系統及CPU行為的解析觀念
B5 電腦系統的行為體系
B6 程式實作的細節議題及觀念
B7 電腦作業與電腦化作業體系
B8 解讀程式語言的方式
B9 組合語言的解析
B10 C程式語言的解析
B11 作業體系的分析觀點
B12 函式庫與巨集
B13 直譯程式語言與腳本語言
C篇 非硬體專業者的程式開發體系
C1 非硬體專業者的程式開發體系
C2 需求導向的缺點
D篇 軟體工程
D1 軟體工程
D2 電子化作業體系的發展
D3 產品工程下的軟體工程
D4 軟體工程師眼中的軟體工程
D5 作業研究
D6 源代碼實作
D7 源代碼與系統的解析
E篇 知識工程
E1 智能與知識的探索
E2 智能的構成
E3 智能程序
E4 三向工程
E5 知識概論
E6 知識的系統
E7 知識的投資策略
E8 知識的迷思
楔子
我想在現今這個世界上,應該沒有什麼人用「哲學」這個字詞來當作計算機相關技術的主題吧!一般的印象,哲學是深度的思考,是文科學生的事;技術是工學,是數學物理化學。這兩者的距離遙遠,從來就是不搭嘎的兩回事。
用哲學當主題,一般人應該都難以接受吧。看到「哲學」這個字眼,不禁讓人想到那些哲學家的形象,滿頭散亂的灰白頭髮,住在破舊的平房裏。孤獨、脾氣古怪、動不動就亂罵人。不時一人漫無目標地喃喃自語,說著別人都聽不懂的語言,跟瘋子差不了多少。
相對於高科技書籍讀者群所追求的,新穎光鮮亮麗的氣味比起來,書名取成這樣,有點自殺找死,想讓書賣不出去意味。但筆者的個性一向實話實說,有什麼就說什麼,偏好尋求精準的字眼來描述所看到,所想的東西。過度的修飾與偽裝的事情,實在是作不出來,也難以接受。
若將時光推移到30多年前,也就是筆者剛開始接觸到電腦的時候,其實我的看法跟大部份的人都一樣,認為電腦就是高科技,是工學的技術,是理工科學生的領域。可是隨著時間的推移,我與它的接觸時間越來越長,摸索越來越深入,不但是大學念了相關科系,就業也從事了相關產業。
我漸漸地發現,計算機科學其實不是什麼純粹的高科技,或者是什麼純粹的工學。事實上,它所牽涉到的思維範疇,遠遠超過工學與技術的定義。而在這個範疇裡,工學與技術只不過是一個程序末端,最底層的實現手段而已。而在工學與技術被運用於實現之前,更初始發源的重點是
● 你的需求是什麼?
● 如何從需求衍生出解決方案,它的過程是什麼?
● 解決方案的具體作法是什麼?
漸漸地你會發覺,這些才是產品、系統被創造出來的根源、依據。根源沒有了,所謂的工學,所謂的高科技將無用武之地,它們將成為一種無用的東西。一個營利事業單位,若無法創造出對人類生活有意義的產品,則該營利事業單位將無法生存於市場中。
從某種角度來看,電腦就是一個平台,一個存放想法,使之動作實現的平台。想法要如何,動作要如何有意義,對於一個所謂的純軟體公司,一個軟體工程師來說,這就是一個最重大的議題。這個議題若沒有處理好,則緊接而來的技術實現終將毫無價值可言,說穿了,就是花時間耍弄技術,但搞出來的東西卻有可能都是無用的垃圾。
因此,一個軟體工程師的修為,不應該只停留在一個所謂的技術層次,要向上提升,不是只是一個單純的碼工、軟體開發工具的操作者。要當一個全面的創造者,必須從產品的探索構思、架構規劃、到最後的技術實現都能有清楚的概念。也唯有如此,才能是一個能夠帶動創新的火車頭,而不是一個需要別人帶動指揮的小工。
而這些東西,以筆者多年的從業經驗來看,它早已超越了工學的範圍。純粹工學的素養,並無法幫忙你解決這一方面的問題。
根據筆者的經驗,這一類的問題你越是思考,問題的答案就越是退後,越退越深、越退越遠。當您在不斷向前追趕的時候,漸漸地,你會發現到,那些純理工、純技術的東西,已經在你背後,距離你越來越遠了,你已經超越、離開它們了。而這時環顧四周,已經是一個完全不同的景象。
這時在你腦海之中已經不是什麼程式語言、語法、編譯器、程式呼叫相關的問題,取而代之的是需求、系統平台、資源、知識管理之類的議題。如何將這四者之間的關係調配好,然後才會有對應的解決方案、行動方案,進而滿足需求。
這才是你後續處理問題的思想座標。一個完全不同的思想層次。當您進入了這個層次,您才會感覺到問題思考的目標不再退後了,這時候您就會知道,問題的答案應該就在這裡。是的,這就是問題的答案
● 一套行為系統的架構觀念與哲學。
● 一套資源利用與方案創造的思維系統。
● 一套智能與知識的哲學。
這些問題的答案統統都已經超越工學,到達了哲學的層次。原來在計算機科學的領域裡,根源問題的答案,困惑的救贖,就在哲學裡。這也就是本書要談的東西。計算機科學的哲學,就是對於軟體工程師所面臨的種種問題,尋求一個基本觀念上的解決之道。從計算機系統的基礎概念開始,建立一套可以完全破解軟體迷霧的思想體系。
有時候事務難的不在事物本身,關鍵不在於事物本身的形象是什麼,而在於您對它的看法。一套思維的哲學,合乎邏輯的推理。一組解釋的觀點,推論的模型。有觀點才能有想法,有觀點才能有品味,有觀點才能分析。它們才是剖析難解問題的利器,整套完善工作術,讓您輕鬆處理龐雜事物的救贖之道。
※扭轉科技人對哲學的印象
很多人,尤其是理工背景的人員,對於哲學總是停留,在一種天馬行空的印象裡。哲學之中往往不具有精細的數學公式,沒有具體的物質,沒有立竿見影的操作步驟。相對於人生大道理,理工人員比較能接受的,就是柴米油鹽醬醋茶等,看得到、摸得到、能把握的東西。太虛無東西,看不到也摸不到,不切實際,說穿了,就是沒有用。看到哲學之類的東西,反正就是閉上眼睛劃個叉,不予連繫。
但各位應該也聽過一句話:「哲學為科學之母」。在遠古的歐洲,哲學與科學並沒有明顯的區別,一個傑出哲學家往往也是優秀的科學家,有許多科學家與哲學家是二位一體的,例如蘇格拉底、亞里士多德等。這說明哲學與科學,其實具有同樣的心理性質,兩者之間沒有矛盾,都是基於客觀理性的深層思考因此,理工人員其實不但不需要排斥,哲學方面的思維。相反的,還應該去擁抱它,具有理性的哲理思維,對於工作上面的思考,問題的解決,相信會有相當大的幫助。哲學是不是天馬行空,不切實際,其實問題不在於哲學本身,而在於它與你遭遇的問題有沒有關連。
哲學的認知是衡量事物的觀點,是衡量事物的一把尺,心中具有衡量事物的一把尺,就可以馬上抓到重心,清楚的分析眼前的事物,缺了那一把尺,就無從著手觀察思考發生了什麼事。
自古以來,人們對於存在的事物,都會逐步發展出一套哲學理論來觀察解析該事物。目前存在已久的事物,人類已經具有許多完備的哲學觀念來分解,然而對於計算機科學這件事,似乎還沒有一套完整的哲學體系。
本書所提的哲學都是有關於計算機科學的哲學,不是什麼虛無的人生道理。你應該相信的是,一個從事相關技術的工作者,每天面對最實際的技術問題,在解決問題的過程中,所領悟到的深層道理。它將會是非常的實際的。就算是抽象,就算是高階,但是與實際的狀況間完全沒有斷層、沒有脫節。它們之間的關係將會被交待的很清楚、很完整。這是筆者著作時最重要的要求及期待。之後你會發現,這些經過深層思考、時間淬鍊之後的哲理,對你面對問題時的思考,幫助有多麼的大。
IT科技的初學者往往把重心放在程式語言的學習之上,在這個階段,你會認為程式語言的技能最重要,然而對於已在產業中從事一段時間,可以獨當一面的資深工程師或者是專案經理來說,程式語言早就不是問題,它只是一個起碼的要求,在這個階段的人往往會認為程式語言不重要,領域知識才是重點。
筆者從事軟體工作多年,每天處理的工作雖然偶有某程式結構語言語法不熟,需要參考資料的時候,但大部份的時候,都是在處理領域知識相關的議題,領域知識的確才是工作的重心。
筆者最後的領悟是,知識處理的問題無法用任何一個已知的專門學科來解決,它需要更原始更深層的心靈探索,也就是到達基本的理哲思索,也就是哲學的層次才能解答相關的問題。
當知識處理相關的問題能夠被哲理完善的解答之後,你會認同相對比較起來,領域知識已不是重點,能夠完善清晰解答知識處理的哲理才是重點。一山還比一山高,如果能夠爬到哲學的高度來看問題,則所有領域知識、程式語言的問題其實都是很容易解決的低層次問題,所有的議題都可以看得很快速很清楚,問題都可以很容易的解決,不會再有任何的困惑與煩惱。
※禮失求諸野
離開文明,才能體會得到文明的原始根源,當問題發生時,才有思考的方向,才能得到文明問題的答案。許多的事物,其實其原始的出發點往往都是簡單的,都是後來的人,因為種種進一步的需求,將它進化變化,將它複雜化,讓複雜覆蓋了事物的原始面貌,使得事物的本質變得不容易被看到,或者是看不清楚,因而讓人們失去了對該事物本質的認識,進而失去了對事物思考及解決問題的能力。
同樣的道理,當我們在IT 的領域中感到迷惘,找不出答案的時候,解答反而不在所謂的文明之內,離開高科技,才找得到高科技問題的答案。不管事什麼樣的機器,什麼樣的技術,機器是人創造的,要知道機器的邏輯,一定要先找到人的邏輯,一定先要有人的邏輯,然後才有機器的邏輯,機器自己不會產生邏輯,人的邏輯,才是機器邏輯的根源。
在現代文明社會中,充滿了光鮮亮麗的新事物,吸引了許多喜好追逐時尚新穎的人們,充滿熱情的追尋。但是在這個過程中,有一個常常可以看到的毛病是,人們往往只注意到這些光鮮亮麗的表面事物,而忽略了那些看來平淡不起眼,具有深厚底蘊的原本事物,即傳統智慧。而當你在這些光鮮亮麗的表面事物中遍尋鑽營,卻找不到問題出口的時候,答案卻早就在這些平淡不起眼,最不屑一顧的傳統智慧中。
※誰需要閱讀本書
專業性的技術資料,通常會吸引兩種人來閱讀,一種就是專業人士,包含相關從業人員及專門科系的學生。另外一種就是業外,非從業人員或者非專門科系的學生,但是個人對此有興趣。當然,後者是有可能後來也變成專業人士。
本書對於專業人士,有一些重要觀念可藉此建立釐清,筆者以為這個部分是非常必要的。這些觀念若是沒有釐清,從事系統探索及開發的工作將會是沒有頭緒、相當辛苦無效率的;對於業外人士,則是一個非常好的進階性,整體觀念的貫穿平台,在假以時日若真的需要進入專業的領域,這是一個絕佳的敲門磚,你上手的效率及精確度,一定會比別人高出非常多。
然而專業性的技術資料還有分難啃的以及好啃的,那種難啃的技術資料,可能需要有相關的專業背景的人才啃的動,對於業外人士就可能不是那麼和藹可親了。本書的寫作方針特別是從一般人都能看得到、能理解的觀念開始建立起,從生活化的事物中找觀念的例證,絕對是非常平易近人的,中學以上程度就可以看懂,沒有難啃的問題,業外人士也可輕鬆上手。
隨著電腦資訊產品不斷地滲透到日常生活中的每一個角落,相信有需要閱讀本書的族群將會越來越大,資訊科技相關的知識,將來會成為全民通識教育的一部分,而且內容將不只是走馬看花而已,層次會越來越深入,要求達到觀念的全面貫穿。到時候,本書將不再只是專業人員及興趣人士的需要,而是所有人的需要。
※本書可以為你帶來什麼
在一般的概念中,計算機相關的技術及資訊的數量級都是很龐大的。例如:×86的CPU有超過千萬個邏輯閘、作業系統的核心的源代碼超過數千萬行。如此的規模,幾乎不可能由個人或者少數幾個人來掌握,它一定是由一個或數個團體分工合作,每個人只作一小部分,由小部分的成果逐步堆砌而成的。因此就有了分工的角色,諸如硬體工程師、軟體工程師等的分野。硬體工程師只要管硬體,軟體工程師只要管軟體等。
如此這般地越來越細的分工下去,從業人員的知識範圍其實也就越來越窄小。此一作法的好處是:個人再也不用去操煩太多的東西,專注力可以集中在一個小範圍裡,而這個小範圍就可獲得必較好的工作品質,這是目前普遍的作法。
但是個人對於範圍之外的東西,就開始越來越陌生了,甚至毫無所悉,到最後對於計算機相關知識的認識,只有小小的一部份,沒有整體的貫通了解,也就是對計算機相關的知識,有一大部分,很大的一部分根本就不了解。
於是乎,就像是在一棟大樓裡,只是在某一層樓的一間小房間內工作,只熟悉這個小房間內的一切,小房間之外的大樓部份,就完全是個黑箱,完全沒有概念,不知道裡面有什麼,如何運作,能耐到那,完全不知道。也就是說,對於這棟大樓已經失去了觀察、了解、判斷、想像的能力。
當你對所處的對象失去了,觀察、了解、判斷、想像的能力,則一切的作為可能都會受到跼限,處境是處處充滿了未知及不確定性,不會有真正的安全感。
分不出好壞,無法判斷訊息真假,方案的可行性,更不用說是確切的資源安排、系統設計等,跟創造新事物有關的事。
唯有將對象有關的一切知識貫通了之後,才能解除此一困境。有了辨別與觀察的能力才會有判斷力與品味,有了想像的能力才會有創造的能力。貫通這一切的觀念之後,判斷力與品味就會慢慢長出來,想像力與創造力就會被釋放出來。
然而,對於一個想要打破砂鍋問到底、了解一切的人來說,如果他的對象是資訊科技,那你可能會說,這傢伙的麻煩大了,這麼多的材料怎麼嗑的完,就像是打開了惡魔的封印,一定是弄的滿臉豆花,身陷混亂的叢林中無法自拔,結果若不是放棄,就是發瘋。
「形而上者謂之道,形而下者謂之器,大道無形,故舊形而上,器用之物為有形,是為形而下。」
這邊的哲學是,任何構造複雜,數量龐大的東西,其原始的發源觀念其實都是很簡單的,只要能抓到這個發源觀念的根,就能輕易的掌握這龐大的果,這些根在那,這就是本書要闡述的內容。有了這些根,就可以讓你具有
● 貫穿 IT 軟硬體的解析觀點。
● 建立原本應有的對 IT 軟硬體觀察批判及品味的能力。
● 不再困惑,釋放出想像力以及創造力。
這就是本書要帶給你的東西。
※本書著作的方向
本書著重在基本觀念的闡述,即具通用性、通透性、涵蓋性的定律及概念,而儘量不去涉入特定的領域技術設計的細節中。密密麻麻的電氣線路,或者是叢林般的程式碼,在缺乏基本概念的狀況下,思緒其實非常容易失焦,進而失去整體的大方向。
世面上有各式各樣的系統,有各種不同的設計,不斷的推陳出新,在特定產品終究會被更新取代的情況下,追逐、秉持特定的細節其實是不智的,除非您現在的工作就是正在處理這個特定產品的細節,否則這方面的專門探討終究會成為一種白費力氣的過往,省下這些時間跟精力來追逐更美好的事物吧。
本書並不是一本在探討特定技術細節的書。如果您的目的在此,其實有很多其它更專門、更仔細的參考資料,而你要作的是,從中找到選擇最貼近你的需求的那一份。
如果你只是在發展特定系統的過程中,在某個細節上碰到了問題,那麼就上網去搜尋一下吧。如果不是什麼太邊邊角角的問題,在資訊如此發達的情況下,通常都可以找到立即的解決方案。
本書的目的在教您面對處理這些細節時的整體思維方向及處理方法,而不是在交代特定細節。方向決定了你的行為選擇,有正確的方向才會有正確、效率的行為,有了正確的方向,才會有正確的細節,沒有方向,有可能連前面述敘兩種工作的正確出發點都沒有。
本書最終的目的是要提供一支釣竿,而不是一條魚,在大方向大觀念都清楚的情況下,系統開發設計,基本上已經不會有會不會能不能的問題,只剩下要花多少資源、時間來實現的議題。
※本書的內容編排
本書的內容主要分為A、B、C、D、E五篇:
A篇-「基本觀念」為IT 技術的概論及行為系統的說明。
B篇-「電腦運作體系的解析」介紹電腦系統軟硬體構建的思想觀念。
C篇-「非硬體專業者的程式開發體系」介紹需求導向的程式開發體系。
D篇-「軟體工程」。介紹軟體開發過程中會產生的種種議題。
E篇-「知識工程」。探索智能與知識的原理。