更新时间:2023-12-24 15:52
APL语言(APL,A Programming Language的缩写)是一种表达能力很强的会话语言。应用范围包括数学统计、事务经营、信息检索、报表生成、财务预算等。它也可用于模拟计划管理、图形处理、正文编辑、计算机辅助教学等方面。APL的特点是,语法规则简单,运算符丰富,表达式简练,并包含多种构造和处理数据的运算符。它在数据加工和矩阵计算上特别有效,不过程序员具有较高的数学素养。
APL语言是在1960年左右由IBM的Kenneth E.Iverson设计的,起初并没有想实现这种程序设计语言,只是用它作为描述计算机体系结构的工具。APL最早是在名为《一种程序设计语言(A Programming Language)》的书中介绍的,这也是它名字的由来。在20世纪60年代中期,IBM开发出了APL语言最早的实现。
APL语言具有大量功能强大的运算符,对实现者造成了困难。最初,使用APL语言的方法是通过IBM的打印终端,这些终端有特殊的打印球,提供语言所需的特殊的字符集。APL语言具有这么多运算符的原因之一是因为它提供了大量数组的单元运算。例如,任意矩阵的转置只需一个运算符即可实现。大量的运算符提供了极强的表达能力,但也使得APL程序很难阅读,使人们认为APL是一种最适于用来“一次性”程序设计的语言:虽然用APL语言写起程序来很快,但是程序在使用过后就应该扔掉,因为程序难以维护。
APL语言已经存在了超过45年,虽然并不广泛但今天仍在使用,而且在此期间变化不大。
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(time-sharing monitor)上以翻译器方式运行。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也适用于决策处理等人工智能领域。