電腦科學哲學(史丹佛大學哲學百科全書)
主要是關於電腦科學到底是數學還是工程還是科學的爭論,摘要部分重點如下:
電腦科學的語言分為兩種:程式規範設計語言如Java和廣義語言如UML,它們的基本本體及其闡述要求的方式各不相同。
基於謂詞邏輯和集合論
它主要用於單個程式模組或簡單裝置的套件規範。UML具有非常豐富的本體和各種表達機制。例如,它的類語言允許軟體模式的規範。通常,架構描述語言用於精確指定軟體系統的體系結構。
這些語言使用包括諸如元件,聯結器,介面 和配置之類的概念的本體。特別是,用Rapide,Darwin或Wright編寫的架構描述是使用基礎數學語義定義的形式中的精確表達。
但這些語言的表達的邏輯功能是什麼?從表面上看,它們只是用正式語言表達的。然而,當基礎本體論明確時,這些語言中的每一種都表明它是一種形式本體論,可以自然地作為一種型別理論。根據這種解釋,這些表達是規定性定義。因此,每個都在其系統的形式本體中定義了一個新的抽象物件。
電腦科學的認識論地位
當電腦科學成為一個不同於數學的獨立學科時,在20世紀60年代和70年代之間就出現了定義電腦科學認識論地位的問題。自20世紀70年代以來,很明顯電腦科學必須被部分地視為一門數學學科,部分地被視為科學學科,部分地被視為工程學科,因為它利用了數學,經驗和工程方法。儘管如此,關於電腦科學是否必須主要 被視為數學學科,工程學分支或科學學科的爭論仍在進行。
1.電腦科學作為數學學科
電腦科學的每一種認識論特徵都是基於本體論,方法論和認識論的承諾,即關於計算工件性質的假設,軟體開發過程中涉及的方法,以及由此涉及的推理型別,是演繹的,歸納的,或它們的組合。
電腦科學的數學本質的持有者假設程式是數學實體,人們可以追求理論電腦科學的形式化方法所提供的純粹演繹推理。程式的指令可以被認為是數學句子,以及如何根據公理系統給出程式語言的形式語義。如果程式規範以正式語言提出,並且程式程式碼用同一種形式語言表示,則形式語義提供了一種證明方法。
計算數學分析的最初動機來自數學邏輯。它的起源可以在希爾伯特關於謂詞演算的可判定性的問題中找到,:是否有一個演算法或一個程式用於判斷邏輯的任意句子是否可證明(Entscheidungsproblem)?為了解決這個問題,需要在邏輯和數學中建立有效或機械方法的非正式概念的嚴格模型。這首先是一項數學努力:必須建立一種非正式概念的數學表示法。
2.電腦科學作為工程學科
在20世紀70年代,日益複雜的程式,軟體系統在日常環境中的應用日益增多,以及隨之而來的市場需求激增,導致電腦科學家(學者和從業者)的利益偏離了程式正確性,傾向於管理這些系統複雜性和評估其可靠性的方法。
事實證明,提供正確性的數學證明大多是不可行的。電腦科學研究發展為能夠提供正確性統計評估的測試技術。
電腦科學評估計算系統的可靠性的方式與土木工程對橋樑或航空航天工程對飛機的影響相同,特別是,雖然經驗科學研究“存在”的東西,但電腦科學關注的是“可以存在”的東西,即如何製作工件或腳手架之類,因此它應該被認為是“數學工程”。
3.電腦科學作為一門科學學科
軟體測試和可靠性測量技術因無法確保沒有程式碼錯誤,在許多情況下,特別是在評估所謂的安全關鍵系統(如飛機,火箭,核電站等控制器)時,使用形式方法和經驗測試來評估計算的正確性和可靠性。電腦科學可以被理解為一門科學學科,因為它利用演繹和歸納機率推理來檢驗計算工件。驗證和測試方法通常共同參與推進實施計算系統行為的假設,並提供證據(透過演算法或經驗)支援這些假設。
電腦科學與經驗科學相提並論的論點:
電腦科學是一門經驗學科。我們稱之為實驗科學,但是像天文學,經濟學和地質學一樣,它的一些獨特形式的觀察和經驗並不符合實驗方法的狹隘刻板印象。儘管如此,他們還是實驗。每個新建的機器都是一個實驗。實際上,構建機器對自然提出了一個問題; 我們透過觀察執行中的機器並透過所有可用的分析和測量手段對其進行分析來聆聽答案。(Newell&Simon 1976:114)
自從Newell和Simon的圖靈獎演講以來,很明顯電腦科學可以被理解為一種經驗科學而且是一種特殊的科學,這與計算實驗的本質有關。
事實上,目前關於電腦科學認識論地位的大量爭論涉及到定義什麼樣的科學問題,特別是電腦科學實驗的性質。
相關文章
- 書評:軟體設計哲學
- 哲學筆記筆記
- 《生活的哲學》
- 電腦科學自學指南
- 電腦科學的學科分類
- 丁磊的“阿甘哲學”
- 哲學筆記——老子筆記
- 陶哲軒:好的數學
- 程式設計師的哲學程式設計師
- DND體系的哲學思考
- 任天堂的產品哲學
- 格智學院:電腦科學與技術
- 電腦科學精彩帖子收集
- 我的 Windows 檔案管理哲學Windows
- 漫談哲學與程式設計程式設計
- 「 思考 」 React Hooks 的設計哲學ReactHook
- 王德峰哲學筆記——儒家筆記
- 哲學筆記——叔本華>續筆記
- 馬克思主義哲學史
- 程式導向程式設計哲學程式設計
- 哲學家就餐問題詳解
- 陳亞軍哲學筆記——詹姆斯筆記
- 精讀《前端資料流哲學》前端
- 為什麼軟體工程師應該學習哲學?軟體工程工程師
- 電腦科學名人名言
- 從軟體哲學角度談 Amazon SageMaker
- 好的軟體哲學家有哪些? - Hillel
- 演算法研究中的哲學原理演算法
- 哲學筆記——叔本華《續三》筆記
- 哲學筆記——叔本華《續四》筆記
- 哲學筆記——叔本華《續五》筆記
- 哲學筆記——叔本華《續二》筆記
- [譯]從LinkedIn,Apache Kafka到Unix哲學ApacheKafka
- 哲學筆記——叔本華《續七》筆記
- 哲學筆記——叔本華《續六》筆記
- Unix哲學(Unix程式設計藝術)程式設計
- 來聊聊Node.js 的哲學思想Node.js
- 《中國哲學簡史》-道家&新道家