被哈佛扫地出门,他发明了让无数程序员痛不欲生的编程语言,获得了计算机界最高奖.........

肯尼斯·艾弗森在哈佛大学当了5年助教,没有获得终身教职。

f4cd90cb953feb457437dd9a0bf4b596.jpeg

院长不提拔他的一个重要原因就是:这5年,除了一本小书之外,什么都没出版!

那本小书后来帮助他获得了计算机界最高奖:图灵奖。

1a1c9291dbd7e4c58ab191466dc3d9e9.png

这本小书的名字叫做《A Programming Language》

a5bb9e84d6a6508cbd765202f1c51034.png

(注:这个故事是另外一个图灵奖获得者布鲁克斯讲的,我搜了一下,《A Programming Language》这本小书其实在哈佛大学的时候并没有出版,艾弗森当时只是发明了一套符号系统,主要用于教学)

A Programming Language 缩写是APL, 它真的是一个编程语言!

这个名字实在是搞笑,不由得让人想起周星驰的电影《鹿鼎记》中的“有间客栈”。

8916e6b7123b57393c40e5239c69d3a3.png

c68ce180511664c8fd621de73b34dd26.png

一个编程语言,为什么有这么大的影响力,竟然能获得图灵奖?

有人认为APL是世界上最丑陋的编程语言,因为用它写出的代码实在是太难懂了。

下面是个康威生命游戏的代码,一行就能实现极为复杂的功能。

84e65af4a3654b13772e4d4547c956c8.png

看看这奇奇怪怪的符号,甚至得配一个专用的键盘,要不然你根本就敲不出来。

ffa168a3daa187920b58197785aa6c92.png

还有人认为它是有史以来最重要的编程语言,它本质上是函数式的,迫使程序员进行并行思考,它支持任意形状和大小的矩阵,提供了任何你能想象得到的运算符进行选择,拆分,连接,投影,重塑等各种运算,几天内就可以用APL写一个SQL解释器,没有任何语言能和它媲美。

其实,艾弗森并不是为了编写计算机程序而设计APL的,他是为了更好地表达数学思想和算法,这使得APL具有一种非常独特的符号体系,如希腊字母、箭头、圆圈等。

比如数组a = [1,2,3,4] 在APL 中是这么表示的:

A ← 1 2 3 4

两个数组相加:

A ← 1 2 3 4
B ← 5 6 7 8
A + B ⍝ 输出 6 8 10 12

创建一个从1到5的数组:

n ← ⍳ 5  ⍝ n的值是[1,2,3,4,5]

把数组n的每个元素做平方:

n * 2     ⍝ 结果是[1,4,9,16,25],APL中星号表达的是平方,不是乘法

对数组n中每个元素相加,求和:

+/ n      ⍝ 结果是 1+2+3+4+5 = 15 ,“/”是规约运算,它使得左侧的
运算符(+)应用到右侧所有元素

对数组n求平均值

(+/ n) ÷ ⍴n     ⍝ ⍴ 是求一个数组的个数

再来一个复杂一点儿的:生成6个随机数,范围在1到999之间,并按照升序显示

x [ ⍋ x ← 6 ? 40 ]

APL对矩阵运算和高维数组操作非常简洁和直观,假设我们有两个矩阵A和B

9d3d9688ac7e2ac460b6b7de77ab62ad.png

我们要计算两个矩阵的乘积C = A  × B 

A ← 2 2 ⍴ 1 2 3 4
B ← 2 2 ⍴ 5 6 7 8
C ← A +.× B

解释一下:

(1) 2 2 1 2 3 4 将一维数组 1 2 3 4 重新排列为一个 2x2 的矩阵 A。⍴ 是reshape的意思。

(2) 2 2 5 6 7 8 将一维数组 5 6 7 8 重新排列为一个 2x2 的矩阵 B。

(3)  +.× 是APL的内置运算符,用于矩阵乘法。

76a0a9cd1dcb7cbf667963a827bdb935.png

一旦你记住了这些符号,代码就变得非常简洁。

APL的核心就是数组,它甚至可以叫做“Array Programming Language”。

我们回过头来说艾弗森,他“黯然”离开哈佛大学以后,加入了IBM的研究院,薪水也翻了一番。

在IBM,弗雷德·布鲁克斯(System/360架构师,图灵奖获得者,《人月神话》作者)建议他:坚持做你真正想做的事情,管理层非常需要新想法,只要不是非常疯狂的想法,都会得到支持。”

于是艾弗森就继续发展自己在哈佛大学创建的符号系统,这一发展不得了,竟然变成了一门计算机编程语言。

1964年,IBM推出著名的大型机System/360,APL也在System/360上实现了。

ac42ae188bf013945c13ccd4d377c026.png

当时的编程语言,基本上都是批处理的,就是说把代码输入计算机,“等半天”后查看运行结果。

d99db8ab5d53a6d7ea5a046f9f521208.png

但是APL是一套完整的交互式编程环境,程序员可以输入 APL 语句并立即得到响应。

程序可以在数十人同时使用的计算机上定义、调试、运行和保存。

对于许多曾经饱受使用打孔卡进行批处理编程之苦的程序员来说,APL绝对是一大福音。

IBM肯定不会放过这样的商业机会,开发了很多软件和库,吸引用户使用APL,比如

Starmap :一组绘制恒星和行星位置的函数

IBGS:交互式商业模拟游戏

Graphpak:交互式图形包

MINIPERT:项目管理的关键路径方法 (CPM) 系统

APL 财务规划系统

APL 计量经济学规划语言

......

一旦掌握APL,编写程序的速度就非常快,这让它在建模和原型方面有重要价值。

1973年,Continental Can公司需要给旗下的21家制造厂提供一个库存管理程序,他们的FORTRAN程序员干了一年也没搞定,后来STSC公司的一个销售出马,用APL Plus一周内就把一个可用的工作模型给弄好了。

可以说,在20世纪60年代末到80年代初的大型机上,APL编程语言占有重要的一席之地。

1980年,在IBM工作了20年的艾弗森离开IBM,回到加拿大,加入IP Sharp Associates公司,从事APL语言的咨询和服务工作。

1990年,为了解决APL中的特殊字符问题,艾弗森和华裔科学家Roger Hui一起发明了J语言,J语言完全使用基本ASCII字符集。

9aa236f01fa488b6d1ce5b1fe8df6fbd.png

80年代以后,随着个人计算机的兴起,Basic、Pascal、C语言等新贵开始统治市场,APL慢慢地退居到了科学计算、统计、保险精算和金融等领域,APL的符号性质和数组功能使其受到领域专家和数据科学家的欢迎,他们不具备程序员的技能。

那么,都2024年了,APL值得我们去了解吗? 

首届图灵奖获得者Alan J. Perlis说过:一门语言如果不能影响你编程的思维方式,是不值得了解的。

而APL就是一门能影响你编程思维的语言,强烈建议去Try APL这个网站去玩一下:https://tryapl.org/

全文完,觉得不错的话点个赞或者在看吧!

近期爆文

千万别去外企!

这两个大龄程序员,打算搞垮一个世界软件巨头!

这两个程序员要花100万,彻底重写世界上最复杂的软件

世界上最大的盗版网站,遇到麻烦了!

美国的顶尖程序员,深夜都在狂玩儿这个游戏!

这个女生写的软件,解决了无数程序员最头疼的问题!

你们程序员为什么不靠自己的项目谋生?而必须为其他人打工?

摆了个摊,日销930元,80后女产品经理不再焦虑了

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的影城管理系统,源码+数据库+论文答辩+毕业论文+视频演示 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。 关键词:小徐影城管理系统;Spring Boot框架,MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值