APL (程式語言)
編程範式 | 函數式編程 |
---|---|
設計者 | Kenneth Eugene Iverson[1] (同 Adin Falkoff][2]) |
編程員 | 計法1:Larry Breed、Philip Abrams[3] 計法2:Dick Lathwell、Roger Moore、Philip Abrams、Larry Breed[2] |
第一次出現 | 計法1:1965年 計法2:1966年11月27號[註 1] | (事實上)
衍生變體 | |
A+[5]、J[1] | |
啟發語言 | |
張量代數、算子概念[1] | |
影響語言 | |
ALGOL 68、Matlab、Mathematica[5] |
APL(全名:A Programming Language[6][7],直譯 「一種程式語言」)係一種直譯嘅[8] 函數式程式語言[9],雛形由 Ken Iverson 設計[10],1962年喺佢嘅著作 《A Programming Language》 度發表[9],但係實際行得嘅版本 Adin Falkoff 有份幫手設計[2],1965年第一次出現[11][1]。佢基本上係一種數學表示法,所以用到好多特殊符號[9](不過喺某啲系統其實可以唔用特殊符號都得[12]),呢啲特殊符號有啲後來影響返數學,變成普通嘅數學符號[13],亦曾經有人當佢做普通嘅數學表示法,用嚟解釋代數、微積分等等嘅數學概念[14]。
矩陣同向量都係 APL 嘅基本資料類型,有標準方法表示同有標準嘅函數處理[15],有被形容係陣列語言[16]。
控制流程方面,APL 用嘅係跳轉句(branch statement,即係 goto)[17],冇特別語法表示結構化編程嘅流程控制[13]。
用 APL 寫嘅程式通常都好簡短,但係亦因為咁被人話佢難明[18]。
簡史
[編輯]APL 喺1956年左右開始設計[11],本來只係一種數學嘅表示法,叫 Iverson 表示法[19],用嚟喺教書同寫書嗰陣講解同分析有關資訊處理嘅演算法嘅嘢[11][1],後來為咗整到佢真係可以喺電腦度行,做過唔細嘅改動[10],第一次大改動喺1964年,喺用佢描述 System 360 嗰陣發覺原先設計嘅表示法唔啱使,要加同改嘢,第二次大改動喺幫終端機設計字粒球嗰陣,發覺唔可以好似數學咁用2D嘅語法,要將語法線性化[19]。
1965年最初行得嘅版本係成批處理[註 2](batch processing)嘅版本,1966年先有互動介面[11]。
佢喺1989年[20]被國際標準化組織標準化,編號 ISO 8485[21];2001年[7]再訂新標準,編號 ISO 13751,被認為係現時嘅標準[21],但係新標準叫 「APL 擴展版」[暫譯](Extended APL)[7],舊標準其實仍然有效[20]。
例子
[編輯]Hello world 喺 APL 可以咁寫(正方格 ⎕ 表示終端機[22],喺呢度指螢幕;字串用半形單引號[23]):
- ⎕ ← 'Hello world'
但係因為 APL 係綜合開發環境之下用嘅直譯語言,直譯器會自動顯示輸入算式嘅數值;所以可以略去輸出螢幕嘅指示[24],就咁寫
- 'Hello world'
參考
[編輯]- ↑ 1.0 1.1 1.2 1.3 1.4 Smillie (1979)
- ↑ 2.0 2.1 2.2 McGrew (2016), p. 22
- ↑ Breed (2004)
- ↑ McGrew (2016), pp. 21–22
- ↑ 5.0 5.1 McGrew (2016), p. 47
- ↑ “What’s in a name?” (1982)
- ↑ 7.0 7.1 7.2 ISO/IEC JTC 1 (2001)
- ↑ Cameron (2002)
- ↑ 9.0 9.1 9.2 Shallit (n.d.), p. 2
- ↑ 10.0 10.1 Brocklebank (1984), p. 280
- ↑ 11.0 11.1 11.2 11.3 Falkoff & Iverson (1978), p. 51
- ↑ Digital (1978), pp. 482–483
- ↑ 13.0 13.1 Shallit (n.d.), p. 25
- ↑ “APL Press Publications” (1982), p. 4
- ↑ Digital (1978), pp. 485, 488–489
- ↑ Ogilvie (1982), p. 169
- ↑ Digital (1978), p. 486
- ↑ Folorunso (n.d.), p. 6
- ↑ 19.0 19.1 Falkoff & Biancuzzi (2009)
- ↑ 20.0 20.1 ISO/IEC TC 97 (1989)
- ↑ 21.0 21.1 Sauermann (2024), 3.1.3
- ↑ Digital (1978), pp. 492
- ↑ Digital (1978), pp. 485
- ↑ Digital (1978), pp. 493
註釋
[編輯]- ↑ IBM 官方計1966年,但係確定係幾月幾號就有一定難度,11月27號並唔係第一次開機嘅日子,而係 IBM 內部嘅 APL 直譯器嘅一號工作空間(workspace 1)嘅存檔日期[4]。
- ↑ 譯名見:科技教育組 (2023),頁 7
書目
[編輯]- 科技教育組 (2023年1月)。〈中學資訊及通訊科技科常用英漢辭彙〉 (PDF) (香港中文)。香港特別行政區政府教育局課程發展處。喺2023年10月30號搵到。
- "APL Press Publications" (PDF). APL News (美國英文).第8號. APL Press. April 1982. pp. 3–4. 喺2024年9月10號搵到.
- Breed, Larry (1 March 2004). "How we got to APL/1130". ACM SIGAPL APL Quote Quad (美國英文). 34 (2): 26–27. doi:10.1145/1088529.10885.
- Brocklebank, Daniel (1984). "APL – The language" (PDF). John Hopkins APL Technical Digest (美國英文). 5 (3): 280–283. 喺2024年9月11號搵到.
- Cameron, Robert D. (January 30, 2002). "Operational Semantics of Block-Structured Languages: Variables" (加拿大英文). 西門菲沙大學. 喺2024年9月10號搵到.
- Digital Equipment Corporation (1978). "APL". PDP-11 software handbook (美國英文). pp. 481–498.
- Falkoff, Adin D. (2009). "APL". Masterminds of Programming (美國英文). Biancuzzi, Federico採訪. O’Reilly. 喺2024年9月11號搵到.
- Falkoff, Adin D.; Iverson, Kenneth E. (August 1978). "The evolution of APL" (PDF). ACM SIGPLAN Notices (美國英文). 計算機器學會. 13 (8): 47–57. 喺2024年9月11號搵到.
- Folorunso, Olusegun (n.d.). "Organization of Programming Languages" (PDF) (英文). Federal University of Agriculture, Abeokuta. 喺2024年9月10號搵到.
- ISO/IEC TC 97 (1989). "Programming languages – APL" (撮要) (英文). 國際標準化組織. ISO/IEC 8485:1989. 喺2024年9月10號搵到.
- ISO/IEC JTC 1 (2001). "Information Technology – Programming languages, their environments and system software interfaces – Programming language Extended APL" (撮要) (英文). 國際標準化組織. ISO/IEC 13751:2001. 喺2024年9月10號搵到.
- McGrew, Jon (2016年1月2號). "Forgotten APL Influences" (PDF). APL – Journal (美國英文). 計算機器學會. 喺2024年9月11號搵到.
- Ogilvie, J. F. (1982). "Applications of computer algebra in physical chemistry" (PDF). Computers & Chemistry (英國英文). 6 (4): 169–172. 喺2024年9月10號搵到.
- Sauermann, Jürgen; 等 (2024). A Quick Tour of GNU APL (英文). 喺2024年9月11號搵到.
- Shallit, Jeffrey (n.d.). "Why I'm Still Using APL" (PDF) (加拿大英文). 滑鐵盧大學. 喺2024年9月10號搵到.
- Smillie, Keith (1979). "Kenneth E. ("Ken") Iverson" (美國英文). 計算機器學會. 喺2024年9月11號搵到.
- "What's in a name?" (PDF). APL News (美國英文).第8號. APL Press. April 1982. p. 8. 喺2024年9月10號搵到.