計(jì)算機(jī)基礎(chǔ)課中,我們都學(xué)過類型轉(zhuǎn)換,在沒有顯式聲明要進(jìn)行類型轉(zhuǎn)換的語句時(shí),計(jì)算機(jī)會(huì)幫我們強(qiáng)制類型轉(zhuǎn)換。類型匹配是重要的。
數(shù)學(xué)中,要定義一個(gè)映射f,標(biāo)準(zhǔn)的格式是
其中第一行是映射的類型,第二行是映射的實(shí)現(xiàn)。
與之遙相呼應(yīng)的是C語言中的函數(shù):
double f(int a)
{? ?a=100;
return (double)a/8; }
不難見到,在以上的情形下,映射/函數(shù)的類型是由其輸入和輸出的數(shù)據(jù)類型決定的。但這并不絕對(duì)。
——————————————————————————————————————————————————
數(shù)學(xué)與計(jì)算機(jī)中,兩個(gè)“函數(shù)”概念不同點(diǎn)在于,數(shù)學(xué)中的函數(shù),是從自變量索引到函數(shù)值的一個(gè)工具,一個(gè)數(shù)學(xué)變量a,被f了一下之后毫發(fā)無損,a還可以被g作用,因?yàn)閒和g都只是向a問路的,a告訴f:去找f(a)吧!你要找的f(a)值是8;a又告訴g:去找g(a)吧!你要的g(a)它的值等于9。而無論被f了還是被g了,a本身都還是那個(gè)a。而計(jì)算機(jī)科學(xué)中,出于計(jì)算機(jī)在物理層面實(shí)現(xiàn)的限制,內(nèi)存世界就有了部分物理世界的實(shí)在性,函數(shù)是施加于內(nèi)存世界的一系列動(dòng)作,它可以真正改變這個(gè)世界中變量的狀態(tài),如上段C語言語句,f完之后a就變了,變成100。
根本差異在于,數(shù)學(xué)中,所有數(shù)學(xué)變量是可以同時(shí)存在的,R可以被同時(shí)copy無窮份放在那里,放在虛空中的理念世界中,我們可以認(rèn)為a在函數(shù)下改變或不改變都無所謂,因?yàn)榧词顾淖?,我們也能再copy出一份f作用前的a出來。數(shù)學(xué)世界是無需物理實(shí)現(xiàn)的,因而數(shù)學(xué)對(duì)象的存在形式是多重態(tài)的。我們甚至可以說,數(shù)學(xué)世界里只有關(guān)系,沒有動(dòng)作。因?yàn)榉舱務(wù)搫?dòng)作,必然涉及著狀態(tài)到狀態(tài)的改變,而數(shù)學(xué)對(duì)象作為理念存在,可以被無窮份復(fù)制,改變后的東西和改變前的東西可以同時(shí)存在。這就使得它不必引入動(dòng)作。而計(jì)算機(jī)則不然,計(jì)算機(jī)首先被物理地設(shè)計(jì)出來,內(nèi)存的有限性使得同時(shí)存在的變量只能有有限個(gè),每個(gè)變量又只能取一個(gè)值,這種物理世界導(dǎo)致的有限性,使得計(jì)算機(jī)變量不像數(shù)學(xué)變量那樣同時(shí)以無窮份copy的形式存在,而是以一種遵循實(shí)在性、類似費(fèi)米子(同一時(shí)空點(diǎn)不能出現(xiàn)兩個(gè)相同的)的姿勢(shì)存在著。
我知道肯定有學(xué)過計(jì)算機(jī)系統(tǒng)或編譯原理的人要噴我了,說變量未曾真正存在過,只是棧或什么東西上的數(shù)據(jù)寫入/擦除,說我思而不學(xué)則殆。我想說你別急,你懂很多實(shí)現(xiàn)層面的東西,但我所說的事情并不依賴于具體實(shí)現(xiàn),我想說的是,如果從今天開始所有計(jì)算機(jī)全部被天降神雷擊碎,那么我們?nèi)匀豢梢栽O(shè)想一個(gè) 內(nèi)存有限、變量只能取單值 的理想計(jì)算機(jī)內(nèi)存世界,恰似你們沒有人親手做一個(gè)圖靈機(jī),卻可以思考它在某些任務(wù)上是否停機(jī)一樣——我們并不需要物理實(shí)現(xiàn)也可以思考某些東西。進(jìn)一步地,以下這段代碼,即便世界上不存在計(jì)算機(jī)這個(gè)物理對(duì)象,我們?nèi)匀皇强梢运伎计浜x的。我們只需把物理地實(shí)現(xiàn)內(nèi)存世界的方法全部拋棄、直接用內(nèi)存世界的抽象屬性規(guī)定出一個(gè)世界,即可開始討論這段代碼的含義。
double f(int a)
{? ?a=100;
return (double)a/8; }
內(nèi)存世界歸根結(jié)底是物理世界的模擬,最為重要的是模擬了物質(zhì)存在形式的費(fèi)米性,因而計(jì)算機(jī)的函數(shù)實(shí)際上是一系列動(dòng)作;數(shù)學(xué)世界不是物理世界的模擬,其對(duì)象的存在形式是同時(shí)存在無窮多份,因而數(shù)學(xué)的函數(shù)可以說是一種索引關(guān)系,或者你非要說是動(dòng)作也可以——只不過動(dòng)作前后的數(shù)學(xué)世界完全相同。(我指的是把所有可能存在的數(shù)學(xué)對(duì)象及其無窮份copy都收集在一起的最大的數(shù)學(xué)世界)
——————————————————————————————————————————————
例子1,范疇作為帶類型的群
例子2,龐加萊對(duì)偶隱藏強(qiáng)制類型轉(zhuǎn)換