計算機編程語言html
https://www.cnblogs.com/Kevin-Yang/p/11221332.html 最近博客園的文章 周天還沒時間仔細看。 等工做日時仔細看一下。
用於表達數字計算機的一組詳細指令的各類語言。 當這些指令處於稱爲機器語言的計算機制造商特定數字形式時,在用相應彙編語言表達的簡單替換過程以後,或者在從某些「更高級別」語言翻譯以後,能夠直接執行這些指令。 雖然有許多計算機語言,但相對較少被普遍使用。程序員
機器和彙編語言是「低級別的」,要求程序員明確管理計算機的全部數據存儲和操做的特殊功能。 相比之下,高級語言能夠防止程序員擔憂這些注意事項,並提供程序員更容易編寫和讀取的符號。算法
<!-- Low Level Language -->數據庫
機器語言和彙編語言(Machine and assembly languages)編程
<!-- High Level Language -->小程序
算法語言(Algorithmic languages)數組
FORTRAN
ALGOL
LISP
C瀏覽器
面向商業的語言(Business-oriented languages)安全
COBOL
SQL服務器
面向教育的語言(Education-oriented languages)
BASIC
Pascal
Logo
Hypertalk
面向對象的語言(Object-oriented languages)
C++
Ada
Java
Visual Basic
聲明性語言(Declarative languages)
腳本語言(Scripting languages)
文檔格式化語言(Document formatting languages)
TeX
PostScript
SGML
萬維網顯示語言(World Wide Web display languages)
HTML
XML
Web scripting
元素編程語言(Elements Of Programming)
Control structures
Data structures
語言類型
機器語言和彙編語言(Machine and assembly languages)
機器語言由特定計算機能夠直接執行的操做數字代碼組成。 代碼是0和1的字符串,或二進制數字(「位」),它們常常被轉換爲十六進制(基數16)以供人類查看和修改。 機器語言指令一般使用一些位來表示操做,例如加法,一些用於表示操做數,或者可能用於表示下一條指令的位置。 機器語言難以讀寫,由於它不像傳統的數學符號或人類語言,而且其代碼因計算機而異。
彙編語言旨在輕鬆轉換爲機器語言。 儘管能夠經過名稱而不是經過其機器地址來引用數據塊,可是彙編語言不提供組織複雜信息的更復雜的方法。 與機器語言同樣,彙編語言須要詳細瞭解內部計算機體系結構。 當這些細節很重要時,如在編程計算機以與輸入/輸出設備(打印機,掃描儀,存儲設備等)交互時,它是有用的。
算法語言(Algorithmic languages)
算法語言旨在表達數學或符號計算。 它們能夠用相似於數學的符號表示代數運算,並容許使用包含經常使用操做的子程序進行重用。 它們是第一種高級語言。
FORTRAN
第一個重要的算法語言是FORTRAN(公式轉換),由John Backus領導的IBM團隊於1957年設計。 它旨在用於實數的科學計算,並將它們的集合組織爲一維或多維數組。 其控制結構包括條件IF語句,重複循環(所謂的DO循環)和容許非順序執行程序代碼的GOTO語句。 FORTRAN使得用於常見數學運算的子程序變得方便,而且構建了它們的庫。
FORTRAN還旨在轉化爲高效的機器語言。 它當即成功並繼續發展。
ALGOL
ALGOL(算法語言)由美國和歐洲計算機科學家委員會在1958年至1960年期間設計,用於發佈算法以及進行計算。 與LISP(在下一節中描述)同樣,ALGOL具備遞歸子程序 - 能夠調用自身來解決問題的過ALGOL爲描述編程語言Backus-Naur Form的結構提供了一種符號,Backus-Naur Form在某些變體中成爲說明編程語言語法(語法)的標準工具。 ALGOL在歐洲普遍使用,多年來它仍然是計算機算法發佈的語言。 許多重要的語言,如Pascal和Ada(後面都有描述),都是它的後代。程,將其減小爲同類的較小問題。 ALGOL引入了塊結構,其中程序由可能包含數據和指令的塊組成,而且具備與整個程序相同的結構。 塊結構成爲用於構建小型組件的大型程序的強大工具。
LISP
LISP(列表處理)是由約翰麥卡錫在麻省理工學院(MIT)於1960年開發的,它創建在遞歸函數的數學理論之上(其函數出如今它本身的定義中)。 LISP程序是應用於數據的函數,而不是FORTRAN和ALGOL中的一系列程序步驟。 LISP使用一種很是簡單的表示法,其中操做及其操做數在括號列表中給出。例如,(+ a(* b c))表明a + b * c。雖然這看起來很尷尬,但這種符號適用於計算機。 LISP還使用列表結構來表示數據,而且因爲程序和數據使用相同的結構,所以LISP程序很容易在其餘程序上做爲數據運行。
LISP成爲人工智能(AI)編程的通用語言,部分緣由是因爲LISP和AI工做在麻省理工學院的合做,部分緣由是可以「學習」的AI程序能夠用LISP編寫爲自修改程序。 LISP經過衆多方言發展,例如Scheme和Common LISP。
C
C編程語言由AT&T公司的Dennis Ritchie和Brian Kernighan於1972年開發,用於編程計算機操做系統。它經過較小單元的組合構建數據和程序的能力與ALGOL至關。它使用緊湊的表示法,使程序員可以使用數據地址及其值進行操做。這種能力在系統編程中很重要,C與彙編語言共享能夠利用計算機內部架構的全部功能。 C及其後代C ++仍然是最經常使用的語言之一。
面向商業的語言(Business-oriented languages)
COBOL
COBOL(通用業務導向語言)自1959年成立以來一直被企業大量使用。計算機制造商和用戶委員會以及美國政府組織成立了CODASYL(數據系統和語言委員會),以開發和監督語言標準,以便確保其在不一樣系統中的可移植性。
COBOL在介紹時使用相似英語的符號小說。業務計算組織和操做大量數據,COBOL爲這些任務引入了記錄數據結構。記錄將異構數據(例如姓名,ID號,年齡和地址)聚合到一個單元中。這與科學語言造成對比,在這種語言中,同質數組是常見的。記錄是將數據「分塊」成單個對象的重要示例,它們幾乎出如今全部現代語言中。
SQL
SQL(結構化查詢語言)是一種用於指定數據庫組織(記錄集合)的語言。使用SQL組織的數據庫稱爲關係數據庫,由於SQL提供了查詢數據庫以查找屬於給定關係的信息的功能。例如,查詢多是「查找包含last_name Smith和city New York的全部記錄。」商業數據庫程序一般使用相似SQL的語言進行查詢。
面向教育的語言(Education-oriented languages)
BASIC
BASIC(初學者的通用符號指令代碼)是由John Kemeny和Thomas Kurtz於20世紀60年代中期在達特茅斯學院設計的。它旨在讓初學者,特別是非計算機科學專業的學生容易學習,而且在具備許多用戶的分時計算機上運行良好。它具備簡單的數據結構和符號,而且被解釋爲:BASIC程序逐行翻譯並在翻譯時執行,這使得查找編程錯誤變得容易。
它的小巧和簡潔也使BASIC成爲早期我的電腦的流行語言。它最近的形式採用了其餘當代語言的許多數據和控制結構,這使得它更強大但對初學者來講不太方便。
Pascal
大約1970年,瑞士的Niklaus Wirth設計了Pascal來教授結構化編程,強調了在沒有GOTO語句的狀況下有條理地使用條件和循環控制結構。 雖然Pascal在表示法中相似於ALGOL,但它提供了定義用於組織複雜信息的數據類型的能力,這是超出ALGOL以及FORTRAN和COBOL功能的功能。 用戶定義的數據類型容許程序員引入複雜數據的名稱,而後語言翻譯者能夠在運行程序以前檢查其是否正確使用。
在20世紀70年代末和80年代,Pascal是最普遍使用的編程指令語言之一。 它幾乎能夠在全部計算機上使用,而且因爲其熟悉性,清晰度和安全性,它被用於生產軟件和教育。
LOGO
標誌起源於20世紀60年代後期,做爲教育的簡化LISP方言; Seymour Papert和其餘人在麻省理工學院用它來向學齡兒童傳授數學思惟。它有一個比LISP更傳統的語法,並以「烏龜圖形」爲特點,這是一種生成計算機圖形的簡單方法。 (這個名字來自一個早期項目,用於編寫一個相似烏龜的機器人。)海龜圖形使用了以身體爲中心的指令,其中一個對象經過命令移動到屏幕上,例如「左90」和「前進」,指定相對的動做到目前的對象的位置和方向,而不是固定的框架。與遞歸例程一塊兒,這種技術使得編寫複雜和有吸引力的模式變得容易。
Hypertalk
Hypertalk是由Bill Atkinson爲Apple的Macintosh設計的「咱們其餘人的編程」。使用簡單的相似英語的語法,Hypertalk使任何人均可以快速將文本,圖形和音頻組合成「連接堆棧」,能夠經過在程序提供的標準按鈕上單擊鼠標來導航。在20世紀80年代和90年代早期,Hypertalk在教育工做者中特別受歡迎,用於課堂多媒體演示。儘管Hypertalk具備面嚮對象語言的許多功能(在下一節中描述),但Apple並無爲其餘計算機平臺開發它並讓它精神萎頓;隨着蘋果公司在20世紀90年代的市場份額降低,一種新的跨平臺顯示多媒體的方式使得Hypertalk幾乎已通過時(參見萬維網顯示語言部分)。
面向對象的語言(Object-oriented languages)
面向對象的語言有助於管理大型程序的複雜性。對象打包數據及其上的操做,以便只有操做可公開訪問,而且隱藏數據結構的內部細節。經過容許程序員單獨考慮程序的每一個部分,這種信息隱藏使大規模編程變得更容易。此外,對象能夠從更通常的對象派生,「繼承」它們的能力。這樣的對象層次結構使得能夠定義專用對象而不重複更通常的對象中的全部對象。
面向對象的編程始於Simula語言(1967),它爲ALGOL添加了隱藏信息。另外一個有影響力的面嚮對象語言是Smalltalk(1980),其中一個程序是一組經過彼此發送消息來交互的對象。
C ++
C ++語言由Bjarne Stroustrup在20世紀80年代中期在AT&T開發,經過在保留C程序效率的同時添加對象來擴展C語言。它一直是教育和工業編程最重要的語言之一。許多操做系統的大部分,例如Microsoft Corporation的Windows 98,都是用C ++編寫的。
Ada
阿達以奧古斯塔·阿達·金(Augusta Ada King)的名字命名,她是洛夫萊斯的伯爵夫人,曾是19世紀英國發明家查爾斯·巴貝奇的助手,有時被稱爲第一位計算機程序員。阿達語是20世紀80年代初爲美國國防部開發的大規模節目。它將相似Pascal的表示法與將操做和數據打包成獨立模塊的能力相結合。它的第一個形式Ada 83並非徹底面向對象的,但隨後的Ada 95提供了對象以及構造它們的層次結構的能力。雖然Ada再也不被受權用於國防部的工做,但仍然是工程大型項目的有效語言。
Java
在20世紀90年代早期,Java由Sun Microsystems,Inc。設計,做爲萬維網(WWW)的編程語言。雖然它在外觀上相似於C ++,但它徹底是面向對象的。特別是,Java省去了較低級別的功能,包括操做數據地址的能力,這種功能在分佈式系統的程序中既不可取也不實用。爲了便於移植,Java程序由特定於每一個計算機平臺的Java虛擬機翻譯,而後執行Java程序。除了經過Web「applet」向Internet添加交互功能以外,Java還被普遍用於編寫小型便攜式設備,例如移動電話。
Visual Basic
Visual Basic是由Microsoft開發的,經過添加對象和「事件驅動」編程來擴展BASIC的功能:按鈕,菜單和圖形用戶界面(GUI)的其餘元素。 Visual Basic也能夠在其餘Microsoft軟件中用於編寫小例程。
聲明性語言(Declarative languages)
聲明性語言,也稱爲非過程或很是高級別,是編程語言,其中(理想狀況下)程序指定要執行的操做而不是如何執行。在這些語言中,程序的規範與其實現之間的差別小於到目前爲止所描述的過程語言。兩種常見的聲明性語言是邏輯和函數語言。
邏輯編程語言,其中PROLOG(邏輯編程)是最熟知的,將程序稱爲一組邏輯關係(例如,祖父母是某人的父母的父母)。這些語言相似於SQL數據庫語言。程序由「推理引擎」執行,該推理引擎經過系統地搜索這些關係來回答查詢以作出將回答查詢的推斷。 PROLOG已普遍用於天然語言處理和其餘AI程序。
功能語言具備數學風格。經過將函數應用於參數來構造函數程序。功能語言,如LISP,ML和Haskell,被用做語言開發,自動數學定理證實器和一些商業項目中的研究工具。
腳本語言(Scripting languages)
腳本語言有時被稱爲小語言。它們旨在解決相對較小的編程問題,這些問題不須要數據聲明的開銷和使大型程序易於管理所需的其餘功能。腳本語言用於編寫操做系統實用程序,用於特殊用途的文件操做程序,而且由於它們易於學習,有時用於至關大的程序。
PERL(實用提取和報告語言)是在20世紀80年代後期開發的,最初用於UNIX操做系統。它旨在擁有早期腳本語言的全部功能。 PERL提供了許多方式來陳述常見操做,從而容許程序員採用任何方便的方式。在20世紀90年代,它成爲一種系統編程工具,不管是小型實用程序仍是大型原型程序。與下面討論的其餘語言一塊兒,它也變得流行於編程計算機Web「服務器」。
文檔格式化語言(Document formatting languages)
文檔格式化語言指定打印文本和圖形的組織。它們分爲幾類:文本格式符號能夠提供與文字處理程序相同的功能,頁面描述語言由打印設備解釋,最多見的是標記語言,用於描述文檔各部分的預期功能。
TeX
TeX是1977-86期間開發的,由斯坦福大學教授唐納德·克努特(Donald Knuth)用做文本格式化語言,以提升他書中數學符號的質量。文本格式化系統與WYSIWYG(「所見即所得」)字處理器不一樣,在文檔中嵌入純文本格式化命令,而後由語言處理器解釋這些命令以生成用於顯示或打印的格式化文檔。 TeX標記斜體文本,例如,{\ it it is iticicized},而後顯示爲斜體。
TeX很大程度上取代了早期的文本格式語其強大而靈活的功能使專家可以精確控制字體的選擇,表格的佈局,數學符號以及文檔中圖形的包含。它一般在「宏」包的幫助下使用,這些包定義了用於常見操做的簡單命令,例如啓動新段落; LaTeX是一種普遍使用的包。 TeX包含用於不一樣類型文檔的許多標準「樣式表」,而且這些能夠由每一個用戶進一步調整。還有一些相關的程序,如BibTeX,管理書目,並具備全部常見書目樣式的樣式表,以及具備各類字母的語言的TeX版本。
PostScript
PostScript是一種頁面描述語言,由Adobe Systems Incorporated在20世紀80年代早期在Xerox PARC(Palo Alto研究中心)的工做基礎上開發。這些語言描述的文件能夠由我的計算機解釋,以在其屏幕上或經過打印機或排版設備中的微處理器顯示文檔。
例如,PostScript命令能夠以各類字體和大小精肯定位文本,繪製數學描述的圖像,並指定顏色或陰影。 PostScript使用後綴,也稱爲反向波蘭表示法,其中操做名稱跟隨其參數。所以,「300 600 20 270弧形行程」意味着:在位置(300,600)處繪製(「行程」)270度弧,半徑爲20。儘管PostScript能夠由程序員讀取和寫入,但它一般由文本格式化程序,文字處理器或圖形顯示工具生成。
PostScript的成功歸功於其規範屬於公共領域,而且與高分辨率激光打印機很是匹配。它影響了打印字體的發展,製造商生產各類各樣的PostScript字體。
SGML
SGML(標準通用標記語言)是標記語言定義的國際標準;也就是說,它是一種元語言。標記由稱爲標記的符號組成,這些標記指定文本的功能或如何顯示。 SGML強調描述性標記,其中標記多是「<emphasis>」。這樣的標記表示文檔功能,它能夠被解釋爲計算機屏幕上的反向視頻,打字機下劃線或排版文本中的斜體。
SGML用於指定DTD(文檔類型定義)。 DTD經過指定文檔中必須出現的元素(例如,<Title>)來定義一種文檔,例如報表,併爲文檔元素的使用提供規則,例如段落可能出如今表條目中可是表格可能不會出如今段落中。解析程序能夠分析標記的文本以肯定它是否符合DTD。另外一個程序能夠讀取標記以準備索引或將文檔翻譯成PostScript以進行打印。另外一種可能會爲視覺或聽覺障礙的讀者生成大型或音頻。
萬維網顯示語言(World Wide Web display languages)
HTML
萬維網是用於在計算機監視器上顯示經過因特網檢索的文本,圖形和音頻的系統。每一個檢索單元稱爲網頁,這些頁面一般包含容許檢索相關頁面的「連接」。 HTML(超文本標記語言)是用於編碼網頁的標記語言。它由Tim Berners-Lee於20世紀80年代在瑞士CERN核物理實驗室設計,由SGML DTD定義。 HTML標記標記指定文檔元素,例如標題,段落和表格。它們標記文檔以供計算機程序(稱爲Web瀏覽器)顯示。瀏覽器解釋標籤,在佈局中顯示標題,段落和表格,以適應屏幕大小和可用的字體。
HTML文檔還包含錨點,這些錨點是指定指向其餘網頁的連接的標記。錨的形式爲<A HREF= "http://www.britannica.com">EncyclopædiaBritannica</A>,其中引用的字符串是連接指向的URL(通用資源定位符)(Web「地址) 「)及其後面的文本是Web瀏覽器中顯示的內容,下劃線表示它是指向另外一個頁面的連接。顯示爲單個頁面的內容也能夠由多個URL造成,一些URL包含文本和其餘圖形。
XML
HTML不容許定義新的文本元素;也就是說,它不可擴展。 XML(可擴展標記語言)是SGML的簡化形式,適用於在Web上發佈的文檔。與SGML同樣,XML使用DTD來定義文檔類型以及它們中使用的標記的含義。 XML採用易於解析的約定,例如文檔實體由開始和結束標記標記,例如<BEGIN> ... </ BEGIN>。 XML提供比HTML更多種類的超文本連接,例如雙向連接和相對於文檔子部分的連接。
由於做者能夠定義新標記,因此XML DTD還必須包含指示Web瀏覽器如何解釋它們的規則 - 如何顯示實體或如何生成諸如準備電子郵件之類的操做。
Web scripting
標記有HTML或XML的網頁主要是靜態文檔。 Web腳本能夠在讀者使用它時向頁面添加信息,或者讓讀者輸入能夠例如傳遞給在線業務的訂單部門的信息。 CGI(通用網關接口)提供了一種機制;它在讀者的Web瀏覽器和提供頁面的Web服務器之間傳輸請求和響應。服務器上的CGI組件包含稱爲腳本的小程序,這些程序從瀏覽器系統獲取信息或提供用於顯示的信息。一個簡單的腳本可能會詢問讀者的姓名,肯定讀者使用的系統的Internet地址,並打印問候語。腳本能夠用任何編程語言編寫,可是,由於它們一般是簡單的文本處理例程,因此像PERL這樣的腳本語言是特別合適的。
JavaScript
另外一種方法是使用爲Web腳本設計的語言由瀏覽器執行。 JavaScript就是這樣一種語言,由Netscape Communications Corp.設計,能夠與Netscape和微軟的瀏覽器一塊兒使用。 JavaScript是一種簡單的語言,與Java徹底不一樣。 JavaScript程序能夠嵌入到具備HTML標記<script language =「JavaScript」>的網頁中。選擇頁面後,瀏覽器將執行該標記後面的JavaScript指令。爲了加速動態(交互式)頁面的顯示,JavaScript一般與XML或其餘語言結合使用,以便在服務器和客戶端瀏覽器之間交換信息。特別是,XMLHttpRequest命令啓用來自服務器的異步數據請求,而不須要服務器從新發送整個Web頁面。編程的這種方法或「哲學」稱爲Ajax(異步JavaScript和XML)。
VB腳本是Visual Basic的子集。最初是爲Microsoft Office程序套件開發的,後來也用於Web腳本。它的功能相似於JavaScript,它能夠以相同的方式嵌入HTML中。
使用這種腳本語言進行Web編程的背後是組件編程的想法,其中程序是經過組合獨立的先前編寫的組件而無需任何進一步的語言處理來構造的。 JavaScript和VB Script程序被設計爲能夠附加到Web瀏覽器的組件,以控制它們顯示信息的方式。
元素編程語言(Elements Of Programming)
儘管存在符號差別,但當代計算機語言提供了許多相同的編程結構。這些包括基本控制結構和數據結構。前者提供表達算法的手段,後者提供組織信息的方法。
控制結構(Control structures)
用過程語言編寫的程序,最多見的相似於食譜,有成分列表和使用它們的逐步說明。幾乎每種程序語言中的三種基本控制結構是:
1.順序 - 混合液體成分,而後加入乾燥的成分。
2.有條件 - 若是西紅柿是新鮮的,那麼煨它們,但若是罐裝,跳過這一步。
迭代擊敗蛋清直到造成軟峯。
Sequence是默認的控制結構;說明一個接一個地執行。例如,它們能夠執行一系列算術運算,將結果分配給變量,以找到二次方程ax2 + bx + c = 0的根。條件IF-THEN或IF-THEN-ELSE控制結構容許程序遵循替代執行路徑。迭代或循環爲計算機提供了大部分功能。他們能夠根據須要重複一系列步驟,適當重複很是簡單的步驟能夠解決複雜的問題。
能夠組合這些控制結構。序列可能包含幾個循環;循環能夠包含嵌套在其中的循環,或者條件的兩個分支能夠包含具備循環和更多條件的序列。在本文中使用的「僞代碼」中,「*」表示乘法,「←」用於爲變量賦值。如下編程片斷使用IF-THEN結構來查找二次方程的一個根,使用二次方程式:
二次公式
二次公式假設a是非零而且判別式(平方根符號內的部分)不是負的(爲了得到實數根)。條件檢查這些假設:
上述片斷中使用的SQUARE_ROOT函數是子程序(也稱爲過程,子例程或函數)的示例。子程序就像是一次給出的醬汁配方,並做爲許多其餘食譜的一部分使用。子程序接受輸入(須要的數量)併產生結果(醬汁)。經常使用的子程序一般位於提供語言的集合或庫中。子程序能夠在其定義中調用其餘子程序,如如下程序所示(其中ABS是絕對值函數)。 SQUARE_ROOT是經過使用WHILE(不定)循環實現的,該循環產生實數的平方根的良好近似,除非x很是小或很是大。經過聲明其名稱,輸入數據類型和輸出來編寫子程序:
子程序能夠將問題分解爲更小,更易處理的子問題。 有時能夠經過將問題減小到原始版本較小的子問題來解決問題。 在這種狀況下,例程被稱爲遞歸子程序,由於它經過重複調用自身來解決問題。 例如,數學中的階乘函數(n!= n∙(n-1)⋯3∙2∙1,即前n個整數的乘積)能夠編程爲遞歸例程:
遞歸的優勢在於它一般是對精肯定義的簡單重述,避免了迭代解決方案的簿記細節。
在機器語言級別,循環和條件是用分支指令實現的,分支指令說「跳轉到」程序中的新點。高級語言中的「goto」語句表達相同的操做,但不多使用,由於它令人類難以遵循程序的「流程」。某些語言(如Java和Ada)不容許這樣作。
數據結構(Data structures)
控制結構組織算法,而數據結構組織信息。特別是,數據結構指定數據類型,所以能夠對它們執行哪些操做,同時消除了程序員跟蹤存儲器地址的須要。簡單的數據結構包括整數,實數,布爾值(真/假),以及字符或字符串。經過組合一個或多個數據類型來造成複合數據結構。
最重要的複合數據結構是數組,同類數據集合,以及記錄,異構集合。數組能夠表示數字向量,字符串列表或向量集合(數組數組或數學矩陣)。記錄能夠存儲員工信息名稱,職稱和薪水。記錄數組(例如員工表)是元素的集合,每一個元素都是異構的。相反,記錄可能包含一個矢量,即一個數組。
記錄組件或字段按名稱選擇;例如,E.SALARY可能表明記錄E的工資字段。數組元素由其位置或索引選擇; A [10]是數組A中位置10的元素。所以FOR循環(肯定迭代)能夠經過具備索引限制的數組(在下面的示例中爲FIRST TO LAST)運行,以便對其元素求和:
數組和記錄具備固定的大小。 能夠增加的結構是使用動態分配構建的,可根據須要提供新的存儲。 這些數據結構具備組件,每一個組件包含數據和對其餘組件的引用(以機器術語,它們的地址)。 這種自引用結構具備遞歸定義。 例如,bintree(二叉樹)要麼是空的,要麼包含帶有數據的根組件以及左右bintree「children」。這樣的bintree有效地實現了信息表。 對它們進行操做的子程序天然是遞歸的; 如下例程打印出bintree的全部元素(每一個都是某個子樹的根):
抽象數據類型(ADT)對於大規模編程很重要。他們將數據結構和操做打包在其上,隱藏內部細節。例如,ADT表爲用戶提供插入和查找操做,同時保持底層結構(不管是數組,列表仍是二叉樹)不可見。在面嚮對象語言中,類是ADT,對象是它們的實例。下面的面向對象的僞代碼示例假定存在ADT bintree和「超類」COMPARABLE,表徵存在比較操做的數據(例如整數的「<」)。它定義了一個新的ADT,TABLE,它隱藏了它的數據表示並提供了適合於表的操做。此類根據COMPARABLE類的元素類型參數進行多態定義。它的任何實例都必須指定該類型,這裏是一個帶有員工數據的類(COMPARABLE聲明意味着PERS_REC必須提供比較操做來對記錄進行排序)。實現細節被省略。