軟體即數學的意思是?

木子木發表於2012-10-29

軟體即數學的意思是?——第一部分 軟體即符號的操作------作者:PolR

你可能曾經聽計算機專業人士說過,軟體就是數學。在Groklaw上,你肯定不止一次讀到過這句話。但是這句話正確麼?這句話是什麼含義?我想告訴你,首先,為什麼它是正確的,然後我還會回答一些典型的評論。然而我的目的提出一種開發測試的方法,當專利涉及軟體是否有專利資格。聯邦巡迴法院授予全體法官審查CLS國際銀行訴愛麗絲公司案。下面是法院需要回答的問題:

a.法院採用哪種測試來確定一個計算機執行發明是否具有專利資格這一“抽象概念”;當計算機要求給予一項它不具備資格的專利呢?

b.評估專利資格在美國法典101章計算機執行專利,專利以方法、系統或者儲存介質宣告是否有關;有時,此類宣告是否等同於101章的目的。

我建議基於符號的操作的測試會很有效。我將解釋一下為什麼這是劃定界限的好方法。

數學是一門語言。軟體就是數學,因為根據計算機理論的原則,執行軟體通常是根據數學演算法的數學計算。也就是,執行計算機程式就是計算機使用數學語言執行語句。

有些人認為“軟體是數學”意味著軟體是用數學描述,他們認為一切都可以用數學描述。也就是說,他們認為一切都是數學。如果我們把這種邏輯歸為結論,那麼一切都不是專利。因為數學不是專利題材。他們說這是一個荒謬的違反法律的結果。

這並不是我們所說的軟體就是數學。如果我們像這樣的話,我們可以用數學來描述軟體。有時候,我們這樣做。這並不是我們成軟體即是數學的原因。我們是說,執行軟體是把數學語言作為表達方式。表達方式是數學的。表達方式是用數學描述的。這兩個詞語的區別是我最想要展示的。這一點與區分三種數學實體有關:公式,演算法和計算。

下面用enter image description here解釋。

概覽

著名的方程式enter image description here是一個數學公式。用數學語言的數學符號書寫,是數學語言的表達方式。類似於英語語法中的(宣告)語。它是一個數學公式。

這個公式含義自然規律,其實是一個物理規律。物體的質量與能量有關。物體的能力和質量用數學語言描述。 物體、質量、能量不是數學。由於公式的含義需要用數學描述它們。

已知質量時計算能力。這裡:

1.乘以光速c的平方
2.使用1中的c的平方乘以質量m
3.第2步的結果就是能量E

以上過程在數學中稱為演算法。但是公式並不是演算法。上面的過程就是演算法。數學能力強的人會把這個公式看作簡單的演算法。這就是為什麼當我們想表達一個演算法的時候,用公式表達出來就可以了。

演算法是一個邏輯推理的過程。假設我們已知質量,如何得到能力?根據公式的關係我們可以推匯出能力。演算法就是我們推論的方式。當我們使用演算法來解決問題的時候,實際上我們使用了使用某種形式的邏輯。演算法也是數學語言的一部分。

執行演算法也叫計算。當用筆和紙執行演算法的時候,不得不寫數學符號。大多是數字和諸如小數點的算符。這些都是數學語言的表示式。在例子中,表示式代表了,光速、光速的平方、質量、能力。執行演算法就是數學,因為它使用了這些表示式。

但是,如果使用機器呢?我們可能使用諸如計算器或計算機的數字裝置來進行計算。然後這些符號不再是鉛筆在紙上表示的了,而是數位電路中的位元。這仍然是數學語言的表達方式,但是現在是機器和非人的事務在製作表示式。根據數學原理底層儲存程式架構執行所有的計算機程式,這是數學演算法的執行,因此這個執行是一個數學計算。這就是“軟體就是數學”的真正含義。

以上就是核心思想的概述。現在讓我們精心研究一下。

數學是一門語言

我確信,有些人會想要知道“數學是一門語言”是什麼意思。對他們來講,數學就是數字、集合圖形、抽象集合理論的數學學科。這個觀點是正確的,但是數學遠遠超越了這個觀點。嚴峻的數學工作需要在紙上書寫符號或者在計算機上輸入二進位制數。在語言方面是不可避免的。另一方面,這些符號除了它們的數學含義是毫無意義的。就像硬幣有兩面一樣。沒有另一面,這一面是不能存在的。在這個意義上,數學是一門語言,儘管數學也是一門數學學科。

還有一個基礎問題。數學有一個分支,數學邏輯。這是數學家定義學科的基礎。數學公式是什麼?定理是什麼?數學證明有效的標準是什麼?這些都是數學邏輯回答的基本問題。數學還有一個分支,計算理論。它其實是數學邏輯的分支。數學家定義演算法,根據演算法定義計算。如果閱讀一下教科書上的這些定義,你會發現它們全是數學語言的元素。定義明確得引用符號,語法的排序和語義的排序。所有的數學最終依賴於這些基礎。在這個意義上,數學確實是一門語言。

符號是一種抽象的概念

用符號,通常是字母、數字和標點符號編寫語言。數學語言新增了各種數學符號。

符號和它們的物理表示是有區別的。以字母為例。我們說符號是墨水在紙上的標記,那我們就錯了。如果我們用鉛筆標記呢?或者計算機螢幕上的畫素。如果走在城市的街道上,你可以看到建築上的霓虹燈和石頭上的 雕刻。符號是抽象的概念。當看到它的物理表示時,我們認識它。但是符號並不是它的物理表示。

位元是是符號。可以用多種方式表示字母。在電晶體間是電壓。在主存中是電容器裡儲存的電荷。在硬碟裡是磁性。在一些光學磁碟裡,它們儲存在表面。還有其他很多表示位元的形式。像字母一樣,位元是抽象的概念。

符號不需要表示人類看到的意義

有些人希望符號表示人類能看到的事物。這種觀點太過嚴格了。符號不需要人類的眼睛看到,來表示它們的含義。儘管位元通常是不可見的,程式設計師可以使用除錯工具間接地觀察到。程式設計師可以閱讀並理解它們的含義。

有一個極端的例子,遠古美索不達米亞文明的楔形文字。成千上萬的泥版被埋藏在了中東沙漠中幾個世紀 ,當時的人們都不曾察覺。古老的語言被遺忘了。但是,考古學家找到了它們並破譯了它們。在沒有人們知道這種語言,意識到它們被埋在沙漠中的年代裡,它們的含義發生了什麼樣的變化?它們的含義並沒有消失,它們在耐心地等待考古學家。

類似的事情發生在Groklaw評論中。寫評論,然後點選“提交”按鈕,一系列電子冒險開始了。在聯網上傳送位元流,在到達Groklaw某個資料中心的資料庫前,必須經過無數的交流線和裝置。然後評論被儲存在儲存器的資料庫裡。當讀者點選連結來顯示評論時,發生了更多的電子冒險,通過網際網路評論從資料庫轉移到使用者的螢幕上。評論被儲存到資料庫時不可見,在網際網路上傳輸時不可見。但是,當它們到達終點時,評論仍然有意義。

計算不是處理電子元件,而是處理符號

讓我告訴來你一些數位電子的基礎知識和數學的基本原則。我希望這可以澄清硬體和符號之間的區別。

位元來自一張雙字母的表,0,1。數學的相關邏輯分支,布林代數。位元值支援真值判斷,0代表假,1代表真。布林代數也支援三種運算,和、或、否。這些操作符與普通操作邏輯有相同的名稱。

接下來描述一些布林操作符的運算。

“和(and)”操作符有兩個引數。當兩個引數都為真時,為真。否則為假。演算法如下:

1.輸入兩個符號
2.如果兩個符號都為1,結果為1.
3.否則結果為0.

“或(or)”操作符也有兩個引數。當兩個引數或者任意一個為真時,為真。否則為假。演算法如下:

1.輸入兩個符號
2.如果兩個符號都為0,結果為0.
3.否則結果為1.

“否(not)”操作符改變唯一引數的真值。演算法如下:

1.輸入1個符號
2.如果符號為1,結果為0.
3.否則結果為1.

布林代數允許許多由這三個基本操作符組合的操作符。在布林邏輯中,一切事情都可以通過這三個基本操作符例項把簡單的演算法組合為複雜演算法來完成。

用心觀察這些演算法,會發現它們都是單獨操作符號的操作,不提及含義就可以執行。無非是識別這些符號是1或0並採取相應行動。沒有必要去判斷它們是否對應於真實值。這就是典型的數學演算法。數學家已經定義過他們的準則,數學演算法相對於其他型別的過程是什麼。觀察其中的一些標準。

布林操作符可以通過數位電子技術實現。如果電子訊號被視為符號,活動電路就是映象演算法。

例如,讓我們假定一個工程師決定一個電壓0v表示位元0和電壓0.5v表示位元1,而且不使用其他電壓。那麼他構建的電路稱為邏輯閘,對應布林操作符。

“和”門的實現邏輯“和”操作:

1.這個電路需要兩個傳入電線,產生兩個輸入電壓。一個傳出電線輸出電壓。
2.如果輸入電壓都為0.5V,輸出電壓為0.5V。
3.否則,輸出電壓為0V.

“或”門的實現邏輯“否”操作:

1.這個電路需要兩個傳入電線,產生兩個輸入電壓。一個傳出電線輸出電壓。
2.如果輸入電壓都為0V,輸出電壓為0V。
3.否則,輸出電壓為0.5V.

“否”門的實現邏輯“否”操作:

1.這個電路需要一個傳入電線,產生電壓。一個傳出電線輸出電壓。
2.如果輸入電壓為0.5V,輸出電壓為0V。
3.否則,輸出電壓為0.5V.

花時間檢查電壓操作確實是映象演算法。當電壓由工程師解釋為位元時,行動的電路是執行操作的布林邏輯。電路的行為就是執行布林邏輯操作。可以通過裝配在一個更復雜的電路的多個邏輯閘實現更復雜的演算法。這就是數位電子技術的一個原則。電路操作通過操縱電壓表示符號。

如果工程師逆轉公約,會怎樣?如果0V表示1會怎樣?當然這就意味著0.5V表示0而不是1。電路還是映象演算法麼?答案是“是的”,除了“和”門現在在計算或操作,“或”操作在計算和操作,“否”門仍在計算否操作。也就是說,“和”“或”互換了角色。

這說明了什麼?這說明位元不是電壓。不能說演算法就是電路產生電壓的過程。相同的電路將實現兩個不同演算法根據電壓的符號解釋。

正如我之前所說的,位元是符號,是抽象的概念。工程師可以選擇任意電壓。0v和0.5v是一種常見的行業標準,但也存在其他標準。0v和0.35v是另一種常見的標準。位元也可以不用電壓表示。在主存用電容器儲存的電荷表示。

有人認為計算是電子過程,電晶體活動。這些人的認知是錯誤的。計算是關於位處理的,關於符號的,不是關於電子、電壓的。

Bits必須組織成語法

不能隨意拼湊一堆符號,並期望它們意味什麼。符號必須根據語法分組。如enter image description here是一個數學公式。

同樣bits在計算機中必須根據語法進行組織。它們常被分組來代表數字。有幾種方法可以做到這一點。

一種可能性是“無符號整數”。根據公約bits代表自然數字0、1、2、3…最大數為所允許的可用數量的bits。如果是8位無符號數,則數字範圍為0到255。另一種可能性是“2s-complement9 format”(有符號數),允許負數。8位“有符號數範圍為-128到127。

注意這兩種語法的數字代表不同的範圍。這就意味著,有時候,同樣的一列位元數可能意味著兩個不同數,取決於所選擇的語法。例如11111111,無符號整數為255,有符號數為-1。這告訴我們必須知道所使用的語法的差異。

關鍵就是選擇的語法,如果你不知道選擇的那種語法,bite列將不可讀。

這也是資料不是電子表示的另一個原因。

我們假設工程師在一行排了8個電壓,並告訴你這寫電壓對應的一個0或1。讓你來讀這個數。你會讀麼?你不會,除非工程師告訴你他所選擇的語法。僅僅知道電壓和位元表示是遠遠不夠的。

這種模糊性可能也適用於電路。例如,加二進位制數字的加算器。加數涉及到無符號數和有符號數。例如,10000000+01111111結果為11111111,可以表示為無符號數128+127=255,也可以表示有符號數 -128+127=-1。僅知道位元和電路是不行的還要知道使用的公約。

電路是一樣的,位元列也是相同的。但意義不同,因為語法不同。既可以用無符號整數又可以用有符號數,因為電路是一樣的。計算不是電路的電子活動。它是一個涉及符號和語法的抽象的概念。

有許多資料型別的語法。浮點數計算需要分數。有其他編碼規則如ASCII或Unicode。有些標準非常複雜,如視訊和音訊檔案。許多規則都是國際標準。專案開發者定義為特定的為內部使用的。

資料是有意義的

符號是有意義的。如布林代數,0表示假1表示真。位元列表示數字。有時數字編碼的字母和文字是意義的。文字是有意義的。有時位元儲存在檔案或資料庫中。這個資料也是有意義的。

數學符號可能同時兩種型別的意義。有抽象的數學意義,像真值和數字。也可能會有一些非數學解釋的抽象數學意義。例如,一個數字可能是雜貨店的蘋果數,也可能是火箭的飛行速度。

像符號和語法,符號的含義不是物理元件的電路做計算。當你用電腦來經營一家雜貨店時,bits代表庫存的。檸檬和其他食品的資訊。bits描述的食物,但它們不是食品。檸檬也不是機器的電子元件。

資料和計算都是內容

總之,目前為止我們看到到,符號語言由一系列的句法和語義關係定義,如下:

1.一些物理底層,往往是物理計算機的元素,表示符號。
2.如何組織符號的語法約定。
3.當符號具有適當的語法,就有了數學方面的意義,如布林或數值。
4.可能用單獨或組合數學值來代表其他實體比如字母或視訊和資料庫記錄中的檔案和資料庫的複雜的結構。
5.數學語言還可能獲得一些非數學解釋。

所有這些關係是由不同的公約定義的。有定義什麼電壓表示bit的公約。有約定數字格式的公約。有約定如何用數字來表示字母、數字和其它的字元的公約。有約定檔案格式和資料結構的公約。還有更多的公約。這僅僅是冰山一角。

這些約定來自不同來源。一些公約是設計計算機元件的計算機工程師所定義的。其他的是行業標準。更多的來源於文化,像英語單詞的含義。其他的約定當程式設計師定義程式的資料時,由程式設計師定義。公約的源是無形的,既不是物理元素的電路也物理現象。它們是知識的元素,必須是可讀寫的資料。

演算法適合麼?演算法獨立於硬體和意義。 處於中間,是關於符號和語法的。

演算法,在數學家眼中,是操作符號的方法。計算是根據演算法執行操作。符號是不是物理的。計算和演算法不是硬體流程,因為它們操縱的是符號而不是電壓。

演算法必須是可執行的。必須是邏輯閘可執行的程式。含義無法解釋也是可能的。邏輯閘卻不可以。演算法不依賴於要執行的含義。

如果演算法既不是一個硬體過程也不是一個操作意義,它們是什麼呢?演算法是符號和語法的操作。

計算機硬體如何進行計算

計算機硬體如何進行計算?我們已經看到過關於布林門的部分解釋。當用電壓來表示bit時,門實現了布林操作符。如果把一個演算法給一個稱職的工程師,他會做一個門的安排來執行相應的計算。當工程師在積體電路上設計門時,他做了一個專用電路。但通用計算機可以執行任何軟體,做一個通用計算機需要更多的東西。

數學家已經發現了一個特殊類別的演算法,通用演算法。一些通用演算法是已知的。每一種演算法可以計算每個函式,只要提供相應的程式作為輸入,它們是可計算的。實際上,任何通用演算法可以效仿其他演算法。這就是為什麼我們稱之為通用演算法。每個單獨的演算法都要為他們的目的服務。

計算機有許多部分。其中有兩個作為最重要的執行指令很突出。第一就是主存。這個元件正如它的名字所暗示的那樣,是一個儲存地方,可以讀寫bits。指令必須儲存在電腦主記憶體才能被執行。另一個重要的計算機元件是處理器即CPU。這個元件也是其名字所暗示的,從記憶體中讀取指令並執行相應的操作。

指令週期的工作方式如下:

1.CPU從主存中讀取指令
2.CPU解碼bit指令
3.CPU執行對應bit指令的操作
4.如果需要,CPU將結果寫入主存
5.CPU找到下條指令的主存位置
6.CPU回到步驟1,進行下一次迭代週期

演算法在某種意義上是數學家提出的。我們說軟體就是數學,因為所有計算機程式的執行是執行一個通用的數學演算法。在這個一樣上,軟體就數學。

指令週期不是計算機的描述,是計算機執行的。我們認為軟體就是數學,因為計算機確實是一個根據數學演算法的數學計算。

計算的數學模型對應於計算機的RASP儲存程式(隨機存取儲存程式)。這就是數學科學和電腦科學如何用數學語言的演算法實現指令週期。

一些人認為隨機元素的存在帶來一種數學的範圍之外演算法。這是不正確的。數學,包括概率理論,概率理論是處理隨機事件的。在數學中,隨機數學過程稱為隨機過程。物理學家經常使用概率理論陳述一些量子力學的定律。在電腦科學中,如果隨機數的源是可讀的輸入數,一個正常的確定性演算法可以轉化為一個隨機演算法。概率演算法的程式不同點在於輸入。

更多的數學引用:

1.An Explanation of Computation Theory for Lawyers
2.1 + 1 (pat. pending) -- ”Mathematics, Software and Free Speech
3.A Simpler Explanation of Why Software is Mathematics

關於演算法和抽象概念的評論

數學演算法是操縱符號的程式的子範疇。指令週期也是操縱符號的程式。

----------------------------就這樣吧,好長的文章啊--------------------

原文地址:http://www.groklaw.net/article.php?story=20121013192858600

求助:utterances怎麼翻譯?

相關文章