APL (程式語言)

程式語言一種

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
編程範式函數式編程
設計者Kenneth Eugene Iverson[1]
(同 Adin Falkoff][2]
編程員計法1:Larry BreedPhilip Abrams[3]
計法2:Dick LathwellRoger MoorePhilip AbramsLarry Breed[2]
第一次出現計法1:1965年, 59年之前 (1965)(事實上)
計法2:1966年11月27號, 57年之前 (1966-11-27)[註 1]
衍生變體
A+[5]J[1]
啟發語言
張量代數、算子概念[1]
影響語言
ALGOL 68MatlabMathematica[5]

矩陣向量都係 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. IBM 官方計1966年,但係確定係幾月幾號就有一定難度,11月27號並唔係第一次開機嘅日子,而係 IBM 內部嘅 APL 直譯器嘅一號工作空間(workspace 1)嘅存檔日期[4]
  2. 譯名見:科技教育組 (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號搵到.