孟靜++唐志敏
摘要:在“定義”的定義和“操作系統(tǒng)”的定義的基礎(chǔ)上,針對“文件”這個計算機學(xué)科基本名詞,詳細分析了其概念內(nèi)涵,指出了國內(nèi)外常見教材和詞典工具書中相關(guān)定義存在的問題,并給出了能揭示概念本質(zhì)特性的新定義。
關(guān)鍵詞:名詞,定義,文件,操作系統(tǒng)
中圖分類號:N04;TP3文獻標識碼:A文章編號:1673-8578(2015)06-0037-04
引言
在參考文獻[1-2]中,筆者提出了關(guān)于“定義”的定義:“A的定義應(yīng)是能足以用來判斷任何一個東西(事物)是A或不是A的判斷工具和依據(jù)?!被蛘哒f,“A的定義一定要能揭示A的唯一性——能把A與非A(這世上所有其他事物)區(qū)分開來的唯一性?!彼裕ㄟ_標的)定義一定要明確、清晰、嚴格到能夠作為上述判斷工具或區(qū)分工具的程度,否則就只能算是解釋或描述(或者說定義未達標)。
據(jù)此“定義”的定義,筆者在參考文獻[1,3]中提出了“計算機操作系統(tǒng)”的定義:“操作系統(tǒng)是計算機中最重要和最底層的系統(tǒng)軟件,是這樣的一組系統(tǒng)程序的集成:這些系統(tǒng)程序在整個計算機系統(tǒng)和所有用戶程序的運行過程中(包括用戶程序的裝入、啟動、運行、結(jié)束和退出的完整過程中),負責(zé)完成所有硬件相關(guān)、應(yīng)用無關(guān)的基本使用工作,為使計算機系統(tǒng)能高效、安全、可靠、方便地運轉(zhuǎn),而從最底層統(tǒng)一提供所有通用的幫助和統(tǒng)一的管理?!?/p>
下面將以上述兩個定義為基礎(chǔ)來探討和分析關(guān)于計算機“文件”的定義。
一計算機“文件”與日?!拔募钡暮x是否相同
很多計算機名詞都是在計算機領(lǐng)域才開始出現(xiàn)和使用的,例如“內(nèi)存”和“外存”等。但“文件”屬于另一類名詞,它在計算機最早出現(xiàn)之前就已經(jīng)在日常生活和工作的很多領(lǐng)域(如政治、軍事、經(jīng)濟、法律等領(lǐng)域)廣泛使用多年了,如機密文件、密碼文件、遺囑文件、合同文件等。那么,計算機領(lǐng)域使用的“文件”這個名詞(稱為“計算機文件”),與日常生活和工作領(lǐng)域使用的“文件”名詞(稱為“日常文件”),其含義是否完全相同?
曾有計算機專業(yè)人員認為二者的含義完全相同,甚至據(jù)此提出不應(yīng)在計算機領(lǐng)域中再將“文件”列為計算機專業(yè)術(shù)語,更不必在計算機領(lǐng)域?qū)Α拔募弊龀鰧iT的解釋和定義。
但有更多的計算機專業(yè)人士和筆者觀點相同,認為二者的含義并不完全相同,甚至有很大的不同。例如,可以將 100份薄薄的紅頭政策文件合放在一個計算機文件中,或者將一份厚厚的政策白皮書文件分放在5個計算機文件中(每章一個計算機文件);再例如,日常生活和工作中通常不會將一本小說書或一張唱片稱為一份文件,但此書或唱片存入計算機中則作為計算機文件存在。
《辭海》中對文件一詞的解釋:“1.機關(guān)、部隊、團體、企業(yè)事業(yè)單位對外發(fā)出的和內(nèi)部使用的一種書面材料,例如法規(guī)文件、行政文件等;2.計算機的一個專用名詞(1)指由若干相關(guān)的記錄構(gòu)成的集合(2)指磁盤、磁帶、紙帶或卡片存儲的內(nèi)容?!盵4]
正如下文所述,在計算機領(lǐng)域中,計算機文件是有其特定含義和定義的。
二計算機領(lǐng)域常見的“文件”定義
在計算機領(lǐng)域,和“操作系統(tǒng)”一樣,文件這個基本名詞,也是一個所有人都很熟悉但都不能準確描述的那一類名詞。以下是國內(nèi)外計算機領(lǐng)域常見辭典和教材上給出的“文件”定義:
“文件是同類記錄的集合”;
“文件是有組織的數(shù)據(jù)的集合”等,例如: Organized collection of related data or material in a computer(計算機中相關(guān)數(shù)據(jù)的有組織的集合);
“字符序列”,例如文件是一個具有符號的一組相關(guān)聯(lián)元素的有序序列;
“按名存取”,例如計算機百科全書中的“文件”詞條:文件使“用戶不再需要了解文件存放的物理位置和物理結(jié)構(gòu),可實現(xiàn)‘按名存取,由文件系統(tǒng)根據(jù)用戶給出的文件名自動地完成數(shù)據(jù)傳輸操作,旨在使用方便、安全可靠、便于共享”。
筆者認為,這些定義至少對計算機專業(yè)工作者來說或者在計算機專業(yè)課程(如操作系統(tǒng)原理課程等)中并不適用,因為它們含糊得讓人無從判斷與區(qū)分(不能用以判斷A是或不是文件,不能用以區(qū)分文件與非文件,不能揭示文件的唯一性):例如對于“同類記錄的集合”定義,比如一個文件f1中有100條記錄,那么其中前40條記錄形成的子集叫不叫文件?再如100個學(xué)生的信息(每個學(xué)生的信息是一條記錄)分放在兩個文件f1和f2中,每個文件放50個記錄,那么這100條記錄形成的集合叫不叫文件?這兩個例子都是“同類記錄的集合”。最關(guān)鍵的是,文件作為操作系統(tǒng)提供的一個重要界面機制,上述“同類記錄的集合”的定義并沒有揭示出這個界面機制的本質(zhì)。
再例如“按名存取”特性,它確實是文件的一個重要特性,但它不能作為文件的定義,因為有其他數(shù)據(jù)存取單位也是按名存取的,例如目錄也是按名存取的,“按名存取”特性不能把文件與目錄等其他按名存取的機制區(qū)分開來,按名存取并非文件獨家特有的特性,所以“按名存取”不能揭示文件的唯一性。
三關(guān)于計算機“文件”的定義
在筆者提出對“文件”所給出的定義之前,先來看一下文件的一些有關(guān)的特性:
首先,我們在使用Windows或Linux等操作系統(tǒng)時都知道,可以把一組學(xué)生的情況放在一個文件中,一組教師的情況放在另一個文件中,也可以把這兩種數(shù)據(jù)合放在一個文件中,還可以把學(xué)生情況分放在兩個文件中(比如共1萬個學(xué)生,前5000個放在一個文件中,后5000個學(xué)生放在另一個文件中)。其他很多類型的信息,如軟件、信件等也是一樣。例如一個軟件可能由多個文件組成(即分放在多個文件中),也可能由一個文件組成;一封信可以形成一個文件,也可以由兩個文件組成,或反過來兩封信也可以放在一個文件中,等等。照此看來,文件的內(nèi)容劃分是非常靈活的,完全由用戶根據(jù)應(yīng)用要求來確定。打個比方,文件就像個“容器”——存放數(shù)據(jù)的“容器”,這“容器”放什么、放多少,是由用戶根據(jù)需要來靈活決定的。但是,計算機系統(tǒng)中外存上的數(shù)據(jù)“容器”,并不止文件一種,還有目錄、分區(qū)、外存介質(zhì)、記錄等,而且這些數(shù)據(jù)“容器”或數(shù)據(jù)集合的內(nèi)容也是可以由用戶根據(jù)需要靈活決定的,那么文件與外存的上述其他數(shù)據(jù)“容器”(集合)間有區(qū)別嗎?有著什么樣的區(qū)別?是只有量上、規(guī)模上的區(qū)別,還是有著什么根本的區(qū)別?endprint
讓我們進一步再來看文件的另一特性:雖然文件內(nèi)容可以由用戶根據(jù)需要靈活決定,但是,一旦放在了一個文件里,在下次修改之前,文件中的內(nèi)容的連續(xù)順序關(guān)系就固定了。比如把一封信放在一個文件中之后,到用戶再修改該信的內(nèi)容之前,這封信里的內(nèi)容,也就是字句之間的前后順序關(guān)系也固定了,甚至哪個地方空幾個空格或空行,也都固定了。由此看來,雖然文件的內(nèi)容可以由用戶靈活存放,但在用戶對文件內(nèi)容的兩次存放或修改之間,文件中的內(nèi)容是固定的,具有固定的連續(xù)順序關(guān)系。進一步再來看一個例子:如果把1萬個學(xué)生的情況放在一個文件中,每個學(xué)生的情況都占10字節(jié),那么用戶在編程順序讀取該文件內(nèi)容時,每讀取下一個學(xué)生的情況,都可以通過將文件內(nèi)當前讀寫指針順序后移10字節(jié)(有些系統(tǒng)是自動后移的),再讀就得到了下一個學(xué)生的情況。這就意味著用戶認為這1萬個學(xué)生情況在外存上是連續(xù)存放的。而實際上,這1萬組數(shù)據(jù)在外存上的物理存放位置卻不一定連續(xù)的。
那么外存其他數(shù)據(jù)“容器”有這種固定的連續(xù)順序關(guān)系嗎?讓我們再通過一個例子來看一下:如果把1萬個學(xué)生的情況分放在兩個文件中,每個文件5000個,那么在取下一學(xué)生的情況時,前5000條仍舊移動指針,但在從第5000個到第5001個時,用戶卻知道這時不能靠移動指針,而是重新打開另一個文件取出第一個,接下來又開始指針移動。這說明用戶雖然認為這兩個文件各自內(nèi)部都是連續(xù)的,但不認為兩個文件間存在連續(xù)關(guān)系,雖然從第5000個到第5001個在純邏輯上是連續(xù)的。這里要注意,也許有時可以勉強認為放在一個目錄里的不同文件間具有順序關(guān)系(根據(jù)dir或ls這樣的命令顯示的順序關(guān)系),但不會在操作上體現(xiàn)出來這兩個文件間具有連續(xù)關(guān)系,因此用戶也不會這么認為。
因此,筆者早在1997年和2000年就提出“文件”的定義應(yīng)是:文件是外存上的一種數(shù)據(jù)存放單元或單位,是由操作系統(tǒng)提供的、在用戶觀點中其內(nèi)容是連續(xù)順序存放的最大邏輯數(shù)據(jù)空間[3,9]。
或者也可以這樣表達:文件是外存上的由操作系統(tǒng)提供的具有以下特性的一種數(shù)據(jù)容器、數(shù)據(jù)空間、數(shù)據(jù)集合、數(shù)據(jù)存放單元或單位:(1)在用戶眼中(亦即在邏輯上),文件的內(nèi)容是連續(xù)順序的;(2)但實際上在外存物理空間中不一定是連續(xù)存放的;(3)比文件更大的容器都不具有上述(1)的連續(xù)特性。
對于上述新定義,筆者給出以下強調(diào)和解釋:
1.對于定義中的“連續(xù)順序特性”,眾所周知只是用戶觀點中的特性,實際上文件在外存即物理存放時并不一定是,而且經(jīng)常不是連續(xù)順序的(外存物理空間利用率的原因)。因此,文件的連續(xù)順序特性,就起到了掩蓋底層物理硬件細節(jié)的作用,從而使其上層的軟件和用戶操作是硬件無關(guān)的。這就說明了,文件作為操作系統(tǒng)的一個重要界面機制,恰在“硬件相關(guān)、應(yīng)用無關(guān)”與“硬件無關(guān)、應(yīng)用相關(guān)”的分界線上。這種固定的連續(xù)順序關(guān)系,恰是文件(及其子集“容器”——例如記錄)的特有本質(zhì)。比文件更大的、更上層的容器,例如目錄等,都不具有這種連續(xù)順序特性。
2.定義中的“最大”二字,就將文件與記錄區(qū)分開來:記錄雖然具有“連續(xù)順序特性”,但不是“最大的”;文件是用戶認為在外存上連續(xù)順序存放數(shù)據(jù)的最大單位。
3.定義中的“空間”二字,在這里用的是“空間”而不是“集合”。這是因為,嚴格來說,文件不能說成是一種數(shù)據(jù)集合,因為通常提到集合的時候,集合中的內(nèi)容是無序的,而上面的事實卻說明文件中的內(nèi)容是有嚴格的連續(xù)順序關(guān)系(在兩次修改之間),所以應(yīng)該說文件是一種數(shù)據(jù)空間——一種具有連續(xù)順序特性的數(shù)據(jù)空間。
4.定義中的“由操作系統(tǒng)提供的”,把文件與操作系統(tǒng)之外的上層應(yīng)用軟件提供的連續(xù)順序空間區(qū)別開來。操作系統(tǒng)之外的上層應(yīng)用軟件提供進一步的文件結(jié)構(gòu)(有結(jié)構(gòu)的文件,二維或多維結(jié)構(gòu)文件等,都建立在一維順序連續(xù)空間結(jié)構(gòu)基礎(chǔ)上)、文件類型、文件間關(guān)系、數(shù)據(jù)庫等,這些都是硬件無關(guān)、應(yīng)用相關(guān)的。
5.此定義能否用于非計算機專業(yè)的用戶和讀者,尚需斟酌。以下解釋似乎更適用于非計算機專業(yè):“文件是計算機系統(tǒng)中用于在外存上存放數(shù)據(jù)的一種數(shù)據(jù)容器或集合、一種數(shù)據(jù)空間、一種數(shù)據(jù)存放單元或單位。人們通常把邏輯意義上相對完整或獨立的一組數(shù)據(jù)放在一個文件中,或把格式相同或格式可統(tǒng)一管理的一組數(shù)據(jù)放在一個文件中。例如,一篇文章是一個文件,一張照片是一個文件,等?!?/p>
四結(jié)語
上述為在參考文獻[1-3]關(guān)于“定義”的定義和“操作系統(tǒng)”定義的基礎(chǔ)上,探討和分析了關(guān)于文件的定義。
此外,在筆者多年編寫的操作系統(tǒng)原理教材各版(參考文獻[3,9-14]為其中一部分)和操作系統(tǒng)教學(xué)探討論文中(參考文獻[1-2,15]),對內(nèi)存、虛存、文件子系統(tǒng)、鏈接、緩沖等大量名詞,都在定義達標方面做了大量努力,并在教材各章末尾通過作者提出的“內(nèi)存四空間模型”等各章總結(jié)模型,對這些定義做了系統(tǒng)化的比較、聯(lián)系、分析、總結(jié)。因篇幅所限,在此不一一細述。
筆者學(xué)疏識淺,水平有限,上述定義必定有待改進之處,本文旨在拋磚引玉,若有意見、建議或異議,歡迎共同探討。
參考文獻
[1] 孟靜,唐志敏. 關(guān)于計算機操作系統(tǒng)的定義[J]. 中國科技術(shù)語,2014,16(4):35-39.
[2] 孟靜. OS教學(xué)之我思我做[J].煙臺大學(xué)學(xué)報,2007(20):12-18.
[3] 孟靜. 計算機操作系統(tǒng)教程[M]. 北京:中國人民大學(xué)出版社,1997.
[4] 辭海[M].上海:上海辭書出版社,1989.
[5] Andrew S. Modern Operating Systems [M].3rd ed. New York: Prentice Hall, 2008.
[6] William S. Operating Systems: Internals and Design Principles [ M ]. 7th ed. New York: Prentice Hall, 2012.
[7] 牛津高階英漢雙解詞典[M]. 4版. 北京:商務(wù)印書館,1997.
[8] 計算機科學(xué)技術(shù)百科全書[M].2版. 北京:清華大學(xué)出版社,2005.
[9] 孟靜. 操作系統(tǒng)原理教程[M]. 北京:清華大學(xué)出版社,2000.
[10] 孟靜. 操作系統(tǒng)教程——原理和實例分析[M].2版. 北京:高等教育出版社,2006.
[11] 孟靜. 作業(yè)系統(tǒng)導(dǎo)論[ M]. 臺北: 博碩文化出版公司,2007.
[12] 孟靜,唐志敏. 操作系統(tǒng)教程[M]. 北京:人民郵電出版社,2009.
[13] 孟靜. 操作系統(tǒng)實驗教程[M].北京:高等教育出版社,2002.
[14] 孟靜. 操作系統(tǒng)教程——原理和實例分析[M].北京:高等教育出版社,2001.
[15] Meng J. A Reformed Scheme of Teaching Memory Management in Operating System Courses [EB/OL].[2015-09-25] http://www.micsymposium.org/mics_2001/meng.pdf .endprint