APL語言(APL,A Programming Language的縮寫)是哈佛大學的教師肯尼斯·艾弗遜(Keneeth Iverson)于1962年在教學中使用的數學符號的基礎上發展起來的程序設計語言。
1966年美國IBM公司研制成功了世界上第一個APL實驗系統—APL/360系統,從此APL語言進入實用化階段。1970年IBM公可又相繼開發了APL/360—OS系統和APL/360—DOS系統,1973年開發了APLSV系統,1974年又開發了VSAPL系統。這些軟件系統的開發使APL語言的應用達到了一個更新的高度,使之能在多種操作系統的支持下,在不同的機型上都可以使用。
APL是一種交互式語言,這使得用APL語言計算一個表達式或執行一個程序很方便。APL語言具有強有力的科學計算功能,因APL語言使用了大量的字符,其中很大一部分是被為映射的運算符,用APL語言簡練的一行程序可以表達用其它語言許多行語句才能完成的復雜計算。APL具有設計新穎、結構嚴謹、句法簡單、語義清晰等優點。APL應用范圍包括數學統計、事務經營、信息檢索、報表生成、財務預算等,也可用于模擬計劃管理、圖形處理、正文編輯、計算機輔助教學等方面。
概括介紹
APL語言是在1960年左右由IBM的Kenneth E.Iverson設計的,起初并沒有想實現這種程序設計語言,只是用它作為描述計算機體系結構的工具。APL最早是在名為《一種程序設計語言(A Programming Language)》的書中介紹的,這也是它名字的由來。在20世紀60年代中期,IBM開發出了APL語言最早的實現。
APL 的工作環境被稱為工作場。在這個工作場內用戶可以定義程序和數據。數據也可以在工作場在程序外存在。
APL語言已經存在了超過45年,雖然并不廣泛但今天仍在使用,而且在此期間變化不大。
在許多應用場合下(數學、科學、工程技術、電腦設計、機器人、數據顯示、保險技術、傳統的數據處理等等)APL是一種非常有力的、表達豐富的和簡明的編程語言。它一般被用在一個與用戶接口的環境中。它最初的設計目的是將數學公式寫成一種電腦可以理解的方式。學它一般很容易,但要分析 APL 寫成的程序往往需要一段時間。與傳統的結構式編程語言不同的是,APL 的程序一般由一系列使用在序列上的單元的或雙元的函數或運算符號組成。由于APL擁有許多非標準的運算符號,這些符號之間沒有優先性(比如一般數學中的乘號、除號較加號、減號有優先權,APL中沒有這樣的優先權)。最初的APL語言沒有任何控制結構如循環(do-while)或者條件選擇(if-then-else),但一些序列運算符號可以用來模擬編程結構,比如iota(用來獲得一個從1至N的序列)可以用來模擬循環(for)。
APL語言具有大量功能強大的運算符,對實現者造成了困難。最初,使用APL語言的方法是通過IBM的打印終端,這些終端有特殊的打印球,提供語言所需的特殊的字符集。APL語言具有這么多運算符的原因之一是因為它提供了大量數組的單元運算。例如,任意矩陣的轉置只需一個運算符即可實現。大量的運算符提供了極強的表達能力,但也使得APL程序很難閱讀,使人們認為APL是一種最適于用來“一次性”程序設計的語言:雖然用APL語言寫起程序來很快,但是程序在使用過后就應該扔掉,因為程序難以維護。
語言標準
1954年,哈佛大學在Aiken教授主持下開設了數據處理這樣一門新課程,Iverson作為其中一員參加了。在那里APL作為一種為記述和解析數據處理方法的表記法而誕生了,而且還將它編入哈佛大學的教科書,F.Brooks著的“Automatic Date Processing”(自動數據處理)一書中。Iverson關于APL語言的構思就是在這樣的土壤里萌發的。
這樣,由于APL的誕生是其他工作途中偶然的成果,開始出現的時間稍有些模糊,大約為1956年初吧。此后,Iverson曾供職McKinsey公司任經營顧閱等職務,繼而加入了IBM公司。在IBM公司,他的工作是使IBM系統/360命令標準化,從而結交了一個朋友Adin Falkoff,此人后來對APL語言的發展起了很大的推動作用,以這時(1962年)所著的“A Programming Language”(一種程序設計語言)一書為基礎,Iverson的表記法作為APL語言固定下來了。此時,已作出了各種各樣的單目(monadic)、雙目(dyadic)函數,為統一句法,按照語言的格式進行了各種規整,如設法使絕對值的記|X|定為|X等。但是,那時APL還未能成為可以在計算機上運行的語言,始終是用于算法和邏輯設計的紙上語言。
APL能在現實的計算機上運行,是1964年以后J.Lawrence,H.Hellerman等人在工具語言方面精誠合作的結果。APL字符的表示是在IBM 1050終端上進行的,該終端具有可交換的高爾夫球型的打字元件。為了便于打印機打字,APL記號也有把上標、下標變成一行的。
起初,APL是在IBM 7090計算機上利用卡片輸入,以分批方式運行的,1966年,L.Breed,P.Abrams使之在S/360計算機的TSM(時間sharing 監聽)上以翻譯器方式運行。1969年用APL/360規整成系統代碼,又利用工作區開發程序,其管理變得更為有效。
繼而,在數據文件和外部的對話方面,采用了共用變量和輔助處理程序的概念,變成APL SV。
再往后,APL在S/370計算機的TSO、CMS等各種OS上,經統一合并變成VS APL。
正如Iverson講演稿的感謝部分所說,實際上,從最早的合作者Falkoff開始,許多人都參與了APL的規整、擴充、裝備等方面的工作。
自70年代起。APL從誕生地IBM費城科學中心向IBM公司內的用戶推廣,后來,進一步制成軟件制品向一般的計算機用戶推廣開來。接著,Barrows、UniVac、DEC甚至日本的富士通株式會社、日立制作所等許多計算機工廠也生產出APL軟件制品。
APL這樣的程序設計語言,已是歷史長久的語言了,但最近,它又迎來了第二個發展高峰。一方面是語言本身的又一次大飛躍,產生了APL2,大幅度地擴充和強化了APL的功能,引入稱為廣義數組的嵌套數組(在數組中能套數組)和混合數組(數值和字符串可混用)等。在科學技術計算中,進行復數運算時已可以用不完全相同的式子來區別實部和虛部。
另一方面是APL的計算機環境的變化。半導體CPU的高性能化和存儲器的高集成度化,使APL可以往微機上運行。以IBM 5100為開端,出現了備種個人用APL,在IBM 5550上增加了日語APL。在微型信息處理機8086、68000上,作為操作系統(OS)的CP/M、MS—DOS、unix等上運行的各種APL也已問世。
主要特點
①APL不像Basic、Fortran等程序設計語言那樣,使用很多英語關鍵字(如read、write、for、next…),它使用數字和各種符號作為文字進行程序設計。這些文字是以功能為基礎想象出來的計算機世界的象形文字,擺脫了英語的束縛,便于程序設計語言的普及。
②APL是像使用計算器一樣簡便的語言。這是因為APL不是編譯型語言,而是解釋型語言。程序一旦輸入,就立即執行,而且不必對使用變量及其類型等進行說明。它排除了計算機機械的制約,單刀直入地解決用戶的問題。
③APL是把數據集中處理的語言,這是APL的最大特征。通常,其他語言在處理大量數據時。要使用循環語句對數據一個一個加以處理。APL則是把數據作為數組形式集中處理。這是APL語言簡潔的關鍵所在。
④APL通用性很強,從簡單使用到高級數據處理都能做。在日常事物中,可用于排序、制表,從檢索到構筑數據庫;在國民經濟統計部門,APL最適合做統計計算;在科研部門,它適用于實驗數據整理、合計以及微分方程和積分方程的計算;APL也適用于決策處理等人工智能領域。
參考資料 >
看了 72 位圖靈獎得主成就,才發現我對計算機一無所知.微信公眾平臺—計算機教育.2024-01-26