張勇
摘要:唯物辯證法認(rèn)為時時有矛盾,事事有矛盾。計算機(jī)技術(shù)的發(fā)展過程中也常常存在許多矛盾和問題。本文列舉了一些運用辯證法思想有效解決這些問題的實例,說明了辯證思維存在于整個計算機(jī)科學(xué)與技術(shù)的發(fā)展歷程并在其發(fā)展過程中發(fā)揮了極為重要的作用。為此,我們認(rèn)為辯證法是人們認(rèn)識和改造世界的有力武器。
關(guān)鍵詞:計算機(jī)技術(shù);矛盾;辯證法
中圖分類號:TP3-4 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)11-0206-03
矛盾在所有事物中都存在,計算機(jī)科技領(lǐng)域也不例外。矛盾存在于整個計算機(jī)技術(shù)的發(fā)展歷程。這其中,許多矛盾都是通過辯證思維的方法,得到了化解。因而,使得計算機(jī)和相關(guān)IT技術(shù)得以發(fā)展壯大,并最終對當(dāng)今整個人類社會的發(fā)展產(chǎn)生了深遠(yuǎn)的影響。
對立統(tǒng)一規(guī)律又叫矛盾律是唯物辯證法的實質(zhì)和核心,它揭示了事物發(fā)展的動力和源泉。計算機(jī)技術(shù)今天的成就,正是唯物辯證法真理性的又一證明。以下分別從計算機(jī)技術(shù)所涉及到的幾個方面加以說明。
1 時間和空間的辯證統(tǒng)一
時間和空間是事物存在的兩種不同形式,時間和空間是既對立又統(tǒng)一的。萬事萬物都在時空中運動。計算機(jī)程序的運行要花費時間,程序本身和它處理的數(shù)據(jù)要占用存儲空間。計算機(jī)技術(shù)往往根據(jù)實際需要,以犧牲時間為代價來贏得空間,或者與之相反,以犧牲空間為代價來換取時間。
1.1 提高計算機(jī)程序執(zhí)行的效率(程序的優(yōu)化設(shè)計與調(diào)整)
計算機(jī)用最少的時間完成給定的任務(wù),同時在完成該任務(wù)時耗費最小的存儲空間。這正是軟件設(shè)計人員在做程序優(yōu)化時所追求的目標(biāo)。
計算機(jī)軟件開發(fā)者為了提高程序執(zhí)行的效率,在設(shè)計程序和優(yōu)化程序的過程中所要追求的兩個目標(biāo)是:(1)程序在運行時,盡可能少占用計算機(jī)資源,比如內(nèi)存空間。(2)提高程序執(zhí)行的速度,即在保證完成同一功能的前提下,盡力減少程序完成該功能所消耗的時間。但這兩個方面常常是不能兼顧的,即不能在節(jié)約空間的同時節(jié)約時間。例如,為了完成某一任務(wù)需要將一個10M的數(shù)據(jù)裝入內(nèi)存中進(jìn)行處理。這里有兩個方案:一個是使用一個10M大小的內(nèi)存空間,將10M的數(shù)據(jù)一次性全部裝入內(nèi)存中進(jìn)行處理;另一個是采用節(jié)約內(nèi)存空間的辦法,僅使用1M的內(nèi)存空間,將數(shù)據(jù)分10次裝入,每次裝入1M數(shù)據(jù)進(jìn)行處理,則裝入全部數(shù)據(jù)進(jìn)行處理大約需要第一個方案10倍的時間。第一種方案的特點是占用的空間大,但消耗的時間短,即以空間贏得時間。第二種方案的特點則剛好相反,其占用的空間小,但消耗的時間長,即以時間換取空間。
在實際應(yīng)用中,軟件開發(fā)者會根據(jù)不同的需要對程序進(jìn)行優(yōu)化調(diào)整。在計算機(jī)發(fā)展的早期,計算機(jī)的硬件資源是有限并且昂貴的(比如在80年代,一臺配置1M內(nèi)存的PC可能價值近萬元,所有的程序都必須在這1M空間內(nèi)運行完成),這時,如何有效地節(jié)約計算機(jī)資源(比如節(jié)約內(nèi)存占用空間)就成了軟件設(shè)計人員進(jìn)行程序設(shè)計和優(yōu)化工作的重中之重。在這種種情況下,軟件設(shè)計人員往往采用以時間贏得空間的辦法,以節(jié)約計算機(jī)的內(nèi)存資源。計算機(jī)發(fā)展到今天,計算機(jī)硬件的性能得到了很大的提高(家用PC的CPU時鐘頻率已從90年代初的幾十兆赫茲發(fā)展到現(xiàn)在的幾千兆赫茲,速度提高了近百倍;配置的內(nèi)存也從MB級發(fā)展到現(xiàn)在GB級,擴(kuò)大了上千倍。),而且其成本又得到很大程度的降低。這時,為了追求高性能,軟件設(shè)計人員往往采用以空間換取時間的辦法,從而提高程序的整體執(zhí)行效率。
1.2 虛擬內(nèi)存技術(shù)與虛擬磁盤技術(shù)
我們知道,磁盤和內(nèi)存都是計算機(jī)中的存儲設(shè)備。相比而言,內(nèi)存的存取速度要比磁盤快很多。
以前人們常常使用軟磁盤存儲DOS操作系統(tǒng),以便從軟磁盤引導(dǎo)啟動電腦。從軟磁盤引導(dǎo)啟動電腦,速度特別慢而且軟磁盤容易出錯。于是,為了加快DOS操作系統(tǒng)的引導(dǎo),產(chǎn)生了一種叫做虛擬磁盤的技術(shù)。這種技術(shù)的實質(zhì)是從計算機(jī)的內(nèi)存中劃分出一小塊內(nèi)存當(dāng)成磁盤來使用,即作為虛擬磁盤,用于存取文件和數(shù)據(jù)。由于虛擬磁盤實際上是使用RAM內(nèi)存快速存取數(shù)據(jù),因而可大幅度加快文件的存取速度。在實際應(yīng)用中,絕大多數(shù)CDROM啟動光盤就是這樣做的。它將DOS操作系統(tǒng)釋放到虛擬盤中,然后電腦就從虛擬盤中啟動操作系統(tǒng),從而實現(xiàn)DOS操作系統(tǒng)的快速啟動。顯然,虛擬磁盤技術(shù)是以犧牲內(nèi)存空間為代價而獲取數(shù)據(jù)的快速存取的。
所有的計算機(jī)軟件都必須裝入內(nèi)存中才能運行,而計算機(jī)的內(nèi)存資源總是有限的,而且一般比硬盤空間小很多。為了解決內(nèi)存空間不足的問題,出現(xiàn)了一種叫做虛擬內(nèi)存的技術(shù)。虛擬內(nèi)存技術(shù)與虛擬磁盤技術(shù)相反,它是從磁盤(比如硬盤)空間中劃分出一部分作為內(nèi)存(即虛擬內(nèi)存)來使用。微軟的Windows操作系統(tǒng)就使用了這項技術(shù)。它在硬盤上創(chuàng)建了一個磁盤交換文件,當(dāng)內(nèi)存空間不足時,它就將這個文件占用的磁盤空間當(dāng)作內(nèi)存來使用,從而解決了內(nèi)存不足的問題。由于虛擬內(nèi)存實質(zhì)上是磁盤空間,因而它比真實RAM內(nèi)存的訪問速度慢很多。顯然,在這里,虛擬內(nèi)存技術(shù)以犧牲時間為代價而換取更多的程序運行空間。
1.3 程序的編譯執(zhí)行和解釋執(zhí)行
高級語言程序需要轉(zhuǎn)換為二進(jìn)制機(jī)器代碼才能在CPU上運行。在計算機(jī)軟件技術(shù)中,高級語言程序的這種轉(zhuǎn)換和執(zhí)行存在著兩種不同的方式,即解釋執(zhí)行和編譯執(zhí)行。所謂解釋執(zhí)行即是對高級語言程序,邊翻譯邊執(zhí)行,翻譯一條、執(zhí)行一條,并不需要保留所翻譯出來的全部機(jī)器指令碼。作為另一種方式,編譯執(zhí)行則先將高級語言程序全部轉(zhuǎn)換成可直接執(zhí)行的機(jī)器指令代碼,然后將這些機(jī)器指令代碼全部裝入內(nèi)存中再運行。程序在解釋執(zhí)行時,占用的內(nèi)存空間較少,但執(zhí)行時消耗的時間較多;程序在編譯執(zhí)行時,需要消耗較多的內(nèi)存空間,但程序執(zhí)行的速度較快。顯然,在這兩種程序的執(zhí)行方式中,解釋執(zhí)行是以時間換取了空間,而編譯執(zhí)行則是用空間贏得了時間。
這兩種不同的程序執(zhí)行方式,是人們在實踐中根據(jù)問題的實際需要辯證處理所產(chǎn)生的結(jié)果。endprint
2 快與慢的辯證統(tǒng)一
緩存技術(shù)普遍存在于計算機(jī)中。電腦中有很多參與數(shù)據(jù)處理和傳輸?shù)脑O(shè)備,它們的速度相差很大。當(dāng)一個任務(wù)經(jīng)由高速設(shè)備快速處理完成后傳輸給低速設(shè)備時,高速設(shè)備會因為長時間等待低速設(shè)備的處理而一直處于閑置狀態(tài),從而浪費了系統(tǒng)的資源并降低了系統(tǒng)的整體處理速度。緩存技術(shù)就是為了解決這一矛盾而產(chǎn)生的。它協(xié)調(diào)了計算機(jī)中速度差異較大的設(shè)備,提高了計算機(jī)系統(tǒng)的整體性能。
緩存技術(shù)的原理是在低速設(shè)備與高速設(shè)備之間引進(jìn)一個速度較快的緩沖存儲器(Cache)。當(dāng)高速設(shè)備處理完一個任務(wù)后,它將結(jié)果數(shù)據(jù)直接快速地輸入到這個緩沖存儲器中。這樣,當(dāng)?shù)退僭O(shè)備從緩沖存儲器中獲取數(shù)據(jù)進(jìn)行處理時,高速設(shè)備就可以去處理下一個任務(wù)而不必等待,從而提高了系統(tǒng)資源的利用率并提高系統(tǒng)的整體處理速度。
在計算機(jī)的實際應(yīng)用中,大量地存在著這種緩存技術(shù)。內(nèi)存的存取速度比CPU慢很多。高速緩存處在CPU和總線之間,它不占用內(nèi)存地址空間,而是在內(nèi)存和CPU之間轉(zhuǎn)存指令和數(shù)據(jù),使CPU發(fā)揮最高效率。在硬盤和打印機(jī)中也普遍配置一定容量的緩沖存儲器,用于暫時存放從內(nèi)存中快速傳來的數(shù)據(jù)。訪問網(wǎng)頁的瀏覽器也使用了這項技術(shù)。瀏覽器軟件(如微軟公司的Internet Explorer)在內(nèi)存中配置了緩存,同時還在硬盤中配置了緩存。在內(nèi)存中配置的緩存一般不大,而硬盤上配置的緩存則可存放較多的數(shù)據(jù)。網(wǎng)絡(luò)的下載速度一般比較慢,因而我們可以先將用戶已經(jīng)瀏覽過的頁面暫存在硬盤緩存中。如果用戶后來再要訪問這些頁面并且該頁面在網(wǎng)站上還沒有更新,那么瀏覽器就不必通過網(wǎng)絡(luò)重復(fù)下載這些資源,而是直接讀取硬盤緩存中先前暫存的資源數(shù)據(jù),從而大大地提高了訪問的效率。
3 異和同的辯證統(tǒng)一
每個事物有它自己的個性,事物之間又有它們的共性??陀^世界的各個事物在底層細(xì)節(jié)上往往是相異的,但它們可以在更高的層次上統(tǒng)一起來,從而實現(xiàn)求同存異。
3.1 用TCP/IP實現(xiàn)的網(wǎng)絡(luò)互聯(lián)
TCP/IP實現(xiàn)網(wǎng)絡(luò)互聯(lián)的成功,是它對網(wǎng)絡(luò)底層求同存異的結(jié)果。
TCP/IP是一種網(wǎng)絡(luò)互聯(lián)協(xié)議規(guī)范。除了TCP/IP以外,還有IPX/SPX等許多其它協(xié)議實現(xiàn)。毋庸質(zhì)疑,TCP/IP是當(dāng)今使用最廣泛、也是最成功的網(wǎng)絡(luò)協(xié)議,它已經(jīng)成為網(wǎng)絡(luò)互聯(lián)的標(biāo)準(zhǔn)協(xié)議。TCP/IP的最大貢獻(xiàn)就是它實現(xiàn)了不同網(wǎng)絡(luò)間的互聯(lián)。
在這里,我并不想要詳細(xì)討論TCP/IP的相關(guān)理論和實現(xiàn),我只是想和讀者探討TCP/IP如何實現(xiàn)異構(gòu)網(wǎng)絡(luò)間的互聯(lián)。
要了解TCP/IP規(guī)范最好從ISO的OSI七層參考模型開始。OSI參考模型將計算機(jī)網(wǎng)絡(luò)從下至上定義為七個層次(參見圖 1)。在現(xiàn)實的網(wǎng)絡(luò)世界中,存在著許多由不同廠家生產(chǎn)的物理通信設(shè)備(如各種不同型號的網(wǎng)卡、交換機(jī)、Modem、ADSL終端等)以及各種不同的通信介質(zhì)(如光纖、雙絞線、同軸電纜、無線通信等),實際上就形成了OSI七層模型中最下面兩層(物理層和鏈路層)的異構(gòu)。
然而,要實現(xiàn)網(wǎng)絡(luò)互聯(lián),所有的網(wǎng)絡(luò)都必須遵守統(tǒng)一的標(biāo)準(zhǔn)和規(guī)范。一種可能的辦法就是基于這些異構(gòu)的網(wǎng)絡(luò)在更高的層次上建立標(biāo)準(zhǔn)和規(guī)范,從而統(tǒng)一起來。
TCP/IP的模型是一個四層結(jié)構(gòu)(參見圖 1)。但我們可以認(rèn)為,TCP/IP模型將網(wǎng)絡(luò)結(jié)構(gòu)等效地分成了三個層次:底層(即網(wǎng)絡(luò)接口層)、中間層(包括網(wǎng)絡(luò)層和傳輸層)和高層(即應(yīng)用層)。在現(xiàn)實環(huán)境中,由局域網(wǎng)實現(xiàn)的網(wǎng)絡(luò)底層往往是異構(gòu)的(比如光纖網(wǎng)絡(luò)和同軸電纜網(wǎng)絡(luò)、以太網(wǎng)和令牌網(wǎng)),因而實現(xiàn)網(wǎng)絡(luò)互聯(lián)的關(guān)鍵就是在這些異構(gòu)的底層之上構(gòu)建一個統(tǒng)一的中間層。而TCP/IP協(xié)議規(guī)范正是這么做的,它撇開了異構(gòu)的底層(底層-網(wǎng)絡(luò)接口層由局域網(wǎng)去實現(xiàn)),重點定義和實現(xiàn)了中間層,從而使得所有的網(wǎng)絡(luò)從中間層以上都遵循一個統(tǒng)一的規(guī)范,最終實現(xiàn)了網(wǎng)絡(luò)的互聯(lián)。
3.2 Java的跨平臺
Java的跨平臺特性,是它對計算機(jī)系統(tǒng)底層平臺求同存異的結(jié)果。
Java是美國Sun公司(后被Oracle公司收購)推出的一種程序設(shè)計語言。它廣泛地使用在應(yīng)用程序開發(fā)和當(dāng)今的互聯(lián)網(wǎng)上。它具有“Write Once,Run Anywhere”即寫一次,可在任何機(jī)器上執(zhí)行的跨平臺特性??梢哉f,正是這種能夠在不同平臺(不同的硬件或操作系統(tǒng))上運行的跨平臺特性,使得Java應(yīng)用獲得了巨大的成功。
高級語言編寫的程序都需要編譯為目標(biāo)程序(計算機(jī)的機(jī)器指令)才能在計算機(jī)硬件支持下的操作系統(tǒng)環(huán)境中執(zhí)行。然而不幸的是,現(xiàn)實中的各個計算機(jī)往往采用了不同的硬件系統(tǒng)并且安裝了不同的操作系統(tǒng),實際上就造成了指令系統(tǒng)和操作系統(tǒng)軟件環(huán)境的不同。這樣,類似于C語言等許多高級語言程序就不能跨平臺運行,即它們所編譯產(chǎn)生的目標(biāo)程序不能在這些不同的計算機(jī)系統(tǒng)中通用,而只能在編譯它的這類特定計算機(jī)系統(tǒng)中運行。為了能夠在其它的計算機(jī)系統(tǒng)上正確地運行,必須修改C語言的源程序并且重新在這個特定的計算機(jī)系統(tǒng)上編譯,從而得到一個新的目標(biāo)程序。
Java則不同,Java源程序幾乎不做任何修改就可以在常見的各種操作系統(tǒng)和硬件平臺上運行,真正實現(xiàn)了跨平臺運行。Java源程序被編譯后并不直接產(chǎn)生可執(zhí)行的機(jī)器碼,而是產(chǎn)生一種叫作“字節(jié)碼”的中間代碼。字節(jié)碼的執(zhí)行,需要在系統(tǒng)平臺上安裝一個Java虛擬機(jī),Java虛擬機(jī)充當(dāng)了一個解釋器的作用,它將字節(jié)碼再解釋為各個計算機(jī)系統(tǒng)能夠真正理解和執(zhí)行的機(jī)器代碼。Java的設(shè)計者充分意識到了各個計算機(jī)系統(tǒng)中程序運行的底層支持環(huán)境(硬件系統(tǒng)和操作系統(tǒng)) 的不同。Java源程序編譯后產(chǎn)生的中間代碼并不直接針對各個不同的特定計算機(jī)系統(tǒng)而是由Java虛擬機(jī)來統(tǒng)一解釋和執(zhí)行的,因而它與具體的系統(tǒng)平臺無關(guān)。
底層細(xì)節(jié)的不同可以在更高的層次上統(tǒng)一起來。Java源程序通過Java虛擬機(jī)在高層得到了一個統(tǒng)一的運行環(huán)境而與底層的軟、硬件環(huán)境無關(guān),從而具有了跨平臺運行的特性。endprint
4 軟件和硬件的辯證統(tǒng)一
在計算機(jī)的發(fā)展歷史中曾出現(xiàn)過兩種幾乎截然相反的技術(shù),即硬件軟化技術(shù)與軟件硬化技術(shù)。
計算機(jī)的許多功能既可以由硬件來實現(xiàn),也可以由軟件程序的執(zhí)行來完成。所謂硬件軟化指的是將本來由計算機(jī)硬件來實現(xiàn)的功能,通過執(zhí)行計算機(jī)軟件程序來實現(xiàn);軟件硬化則與之相反,它把本來由計算機(jī)軟件程序完成的工作替換為由硬件來完成。一般來說,對同一種功能,用硬件來完成其優(yōu)點是速度快、占用內(nèi)存和CPU資源少,缺點是購買硬件的費用較高且硬件不容易配置和升級;反之,如果用軟件來實現(xiàn),其優(yōu)點是費用低且容易配置和升級,缺點是運行速度慢、占用內(nèi)存和CPU資源多。我們國家在計算機(jī)用于文字處理的早期,廣泛使用一種叫做漢卡的硬件設(shè)備來輔助完成對漢字的文字處理。由于當(dāng)時的計算機(jī)運行速度較慢、內(nèi)存容量很?。o法裝載大型的漢字字庫及一些輔助軟件),一些公司把漢字字庫及文字處理的一些輔助程序燒錄進(jìn)漢卡中,作為計算機(jī)的硬件配置,從而實現(xiàn)正常的漢字文字處理工作。在這種情況下,要更換字庫就必須更換漢卡,成本較高。使用漢卡是軟件硬化的一個典型的例子。硬件軟化的一個例子是使用播放器軟件代替專用于播放媒體數(shù)據(jù)電影的解壓卡。在計算機(jī)實現(xiàn)多媒體應(yīng)用的初期,常常使用專用的硬件解壓卡播放光碟中的電影,否則由于計算機(jī)CPU的運算速度較慢(比如486 DX 100以下的CPU),會造成圖像和聲音不連續(xù)的問題。隨著計算機(jī)CPU運算速度的提高,那些本來由解壓卡完成的對媒體數(shù)據(jù)的解壓縮工作就可以由通過在CPU上運行的程序來完成。這時,如要改進(jìn)功能只需對軟件進(jìn)行升級即可,方便且成本低廉。
在計算機(jī)技術(shù)中,“軟件”和“硬件”是對立統(tǒng)一的。我們可以根據(jù)實際需要,選擇采用“軟”或“硬”的實現(xiàn)方法。
5 結(jié)語
從以上事例我們可以看出,在計算機(jī)技術(shù)中處處充滿了辯證思維。計算機(jī)技術(shù)中所涉及的各種矛盾都可以通過辯證思維,因時因地、科學(xué)地化解。計算機(jī)和網(wǎng)絡(luò)的出現(xiàn),正深刻地改變著我們的生活方式,也極大地改變了人類的思維方式。辯證思維,是人類的一個強大工具和武器,使我們能更好地、科學(xué)地處理各種矛盾,并最終促進(jìn)技術(shù)的進(jìn)步和人類社會的發(fā)展。
參考文獻(xiàn)
[1]曾國屏.科學(xué)技術(shù)進(jìn)步與自然辯證法的發(fā)展,清華大學(xué)學(xué)報(哲學(xué)社會科學(xué)版),2004,19(1):79.
[2]賀清碧,論計算機(jī)、網(wǎng)絡(luò)與人類創(chuàng)造現(xiàn)代文明的辯證關(guān)系,重慶交通學(xué)院學(xué)報(社科版),2002,2(4),45.
Abstract:Materialist dialectics thinks that contradiction is at all times and in everything. In the development of the computer technology, contradiction can be found everywhere. By giving the examples of how the dialectics works in solving those problems effectively, this article is to illustrate that dialectics not only exists in the entire process of the computer development but also plays an vital part in it. Therefore, we regard dialectics as a powerful weapon for people to recognize and reform the world.
Key Words:computer technology;contradiction;dialecticsendprint