數據抽象語言
抽象是人類在認識複雜現象的過程中使用的最有力的思維方法。抽象過程是計算機套用於現實世界的基礎。數據抽象語言基於模組分解的方法,使用在Simula67中依頓於“類型”概念的數據結構。因此,抽象化/模組化是它的基本屬性之一。面向抽象數據類型是現代計算機語言的重要發展趨勢之一。諸如,CLU、Euclid、Mesa、Ada和並發 Pascal等語言都屬於數據抽象語言。
和甚高級語言相反,數據抽象語言可看作是達到更高級、更抽象程式的一種“自底向上”的方法。目標是提供一個結構,即類型定義,便於讓程式設計師能夠使用自展本身達到更高一級。
相關概念
數據操縱語言
資料庫管理系統提供給用戶用以存儲、檢索、修改、刪除數據的語言。它通常由一組操縱數據的語句組成,大致可分為下列四類:
(1)檢索語句:這些語句執行查找數據元素,將結果到主存儲器。
(2)修改語句:更新或刑除數據。
(3)存儲語句:增加資料庫中的記錄。
(4)控制語句:發出要訪問的特定子模式的信號並完成對數據的存取。
數據操縱語言可分兩類:
(1)可以獨立使用的語言稱為自容式數據語言,通常亦稱為查詢語言,例如SQL、QUEL等。
(2)對數庫中的數據進行操縱的語句是嵌入於其它高級語言(例如COBOL、PL/1)之中的,則稱為宿主式數據語言。被嵌入的高級語言就稱為該數據操縱語言的宿主語言。
抽象
抽象是對於一個實體的表示,它只包括在特定的環境內這個實體的重要屬性。抽象允許人們將實體的實例收集成為一些組,在這些組中它們的共同屬性就不需要考慮,這些共同屬性已經被抽象出來。在這些組裡面,只需考慮區別單個元素的屬性。這大大簡化了組中的元素。當有必要看到更多的細節時,必須考慮這些實體的較低抽象水平的表示。抽象是對抗程式設計複雜性的一種武器,其目的是要簡化程式設計的過程。這是一種有效的武器,因為它允許編程人員將注意力集中於重要屬性,而忽略次要的屬性。
當代程式設計語言中基本的兩類抽象為過程抽象和數據抽象。
過程抽象
過程抽象的概念是程式設計語言的設計中最老的概念之一。甚至 Plankalkul也曾經支持了過程抽象。所有子程式都是過程抽象,因為它們提供了一種方式,讓一個程式說明要完成的某些過程,而不要提供如何來完成的細節(至少是在調用程式中)。例如,當一個程式需要將某種類型的數值數據對象數組排序時,它通常使用一個子程式來進行這種排序過程。在程式中需要進行排序的位置,一條像下面這樣的語句
sort_int (list, list_len)
被放置於程式內。這個調用是實際排序過程的一種抽象,其算法則不在此被說明。這種調用獨立於被調用程式中的算法實現。
在子程式 sort_int的情形,其重要屬性是:將要被排序的數組名字、它的元素的類型、數組的長度以及對於 sort_int的調用將導致數組被排序的這個事實。sort_int所實現的算法是一個對用戶並不重要的屬性。
過程抽象對於程式設計過程十分關鍵。這種將子程式中的算法的許多細節抽象出來的能力,使得人們有可能來構造、閱讀和理解大程式。記住:現在被認為的大程式,必須至少具有好幾十萬行代碼。
所有的子程式,包括並發了程式和異常處理程式都是過程抽象。
數據抽象必然跟隨著過程抽象的發展而發展,因為每一種數據抽象中的一個不可分割的中心部分都是操作,而操作被定義成為過程抽象。