APL語言

APL語言

APL是A Programming Language或Array Processing Language的縮寫。肯尼斯·艾佛森1962年設計這個語言時他正在哈佛大學工作。為此他1979年獲得圖靈獎。在過去數十年的使用歷史中,APL從它的原始版本開始不斷改變和發展,今天的版本與1963年發表時的版本已經非常不一樣了。但它始終是一種解釋執行的計算機語言。現代的APL版本都支持其初試版本不支持的結構和模式編程。APL至今依然使用一種非標準化的字母表,這一點一直是他人對它的批評點。

簡介

在許多套用場合下(數學、科學、工程技術、電腦設計、機器人、數據顯示、保險技術、傳統的數據處理等等)APL是一種非常有力的、表達豐富的和簡明的程式語言。它一般被用在一個與用戶接口的環境中。它最初的設計目的是將數學公式寫成一種電腦可以理解的方式。學它一般很容易,但要分析APL寫成的程式往往需要一段時間。與傳統的結構式程式語言不同的是,APL的程式一般由一系列使用在序列上的單元的或雙元的函式或運算符號組成。由於APL擁有許多非標準的運算符號,這些符號之間沒有優先性(比如一般數學中的乘號、除號較加號、減號有優先權,APL中沒有這樣的優先權)。最初的APL語言沒有任何控制結構如重複(do-while)或者條件選擇(if-then-else),但一些序列運算符號可以用來模擬編程結構,比如iota(用來獲得一個從1至N的序列)可以用來模擬重複(for)。

APL的工作環境被稱為工作場。在這個工作場內用戶可以定義程式和數據。數據也可以在工作場在程式外存在。用戶可以在程式外改變數據,比如:

N <- 4 5 6 7

將一個系列的數據4、5、6、7授予N。

N + 4

輸出8、9、10、11。

+/N

輸出N內所有數的和,既22。

用戶可以將工作場連同其中的所有數據和程式儲存起來。在任何情況下,這些程式不是編譯執行和,而是解釋執行的。

APL最著名的就是它使用一組非ASCII符號。這些符號比一般常見的代數和計算符號要多。用兩行這樣的奇形怪狀的符號就可以將所有航空控制的問題解決了。事實上,在一些APL版本中,用一行程式就可以將任何可計算的函式表達出來。在用一行你可以將這個函式的結構表達出來。由於它的精密的結構和非標準的符號,也有人將APL稱為“只寫語言”。除數學家外,其他人要讀APL寫的程式都感到非常困難。有些數學家覺得其它語言比APL難懂。由於APL使用不尋常的符號,許多編程員在寫APL程式時使用專門的APL鍵盤。今天也有不同的只使用ASCII字母寫APL的方法。

艾佛森後來還設計了一個APL的後續,稱為J語言,這個語言只使用ASCII符號。至今為止只有一種J語言。一些其它語言也提供類似APL的功能。A+是一種開源的程式語言,其許多指令與APL相同。

下面這個例子排列一個存在X里的詞的序列,排列標準是每個詞的長度:

X[X+.¬' ';]

字母表

APL語言字母表 APL語言字母表

從一開始就有人批評APL使用一套特別的、非標準的字母表。學過APL的人一般很喜歡這些特別的符號,這說明當時艾佛森選擇這些符號時是有一定的用意的。Unicode包含這些字母,Unicode被引入後,要尋找特別的字型的問題開始有所減緩。雖然如此依然有人批評當初APL設計時所選擇的特殊的符號。這些專門為APL設計的鍵盤無論如何不會非常普及。

APL語言的Hello World程式

'Hello World'

相關詞條

相關搜尋

熱門詞條

聯絡我們