苹果计算器语言
在浏览杰夫·拉斯金(Jef Raskin)1979年早期的苹果文档时,我偶然发现了一份有趣的文件:他提出的“计算器”语言。特别有趣的是,它是在编程语言的上下文中提出的。其规格并没有真正描述一个通用编程语言——标题确实准确地反映了它是一种计算器语言。但在上下文中,似乎暗示杰夫有将其发展成更大事物的愿望。某种可能曾是麦金塔(Macintosh)的编程语言(而实际采用的则是Pascal)。此外,还有一份详尽的附录,呈现了杰夫对当时编程语言的看法——ALGOL、APL、BASIC、Cobol、Fortran、Lisp、Pascal、PL/1、SNOBOL——我想这就是杰夫所认为的在某种意义上的“竞争”,或者至少是他的前辈;他显然有创建自己新语言的愿望。按照老派方式,他认为所有现存语言都不够好。😆 杰夫特别不喜欢BASIC(当时个人计算机的通用语言——至少忽略汇编语言)并对此直言不讳:BASIC是一种非常弱的语言,正在通过许多临时的方法加以弥补。任何一位编程语言的学生都能轻易找出其中的漏洞。尽管如此,它仍将继续被使用多年,这反映了其环境的影响,而非其内部设计。BASIC应得的流行证明,在选择编程语言时,最小化程序员的努力和时间往往比语言的特性更为重要,以传统计算机科学的精神来看。杰夫·拉斯金《苹果计算器语言入门》 关于其持久性,他没有说错。我想知道他后来对Visual Basic、RealBasic及其所有衍生品的看法(他活到2005年)。❤️ 我的第一款商业软件就是用RealBasic编写的。我仍然怀念它。作为一种语言,IDE和标准库集,RealBasic简单而优雅。如果稍微慢了一点(哦,若是现在用现代编译器或JIT会做些什么!)。在Fortran、PL/1和Pascal方面——后者在麦金塔上得到了广泛应用,直到Mac OS X——他似乎……有些苦涩?对他们的成功有些怨恨?他这样说道:作为声明性语言,它们在模拟人类思维方面本质上是乏力的。我很清楚声明的优势,并为Pascal在控制结构上相较于Fortran的改善感到高兴。但这些都是细节上挑剔的改进。编程语言应当做的是消除这些琐碎,最小化在解决问题时你必须考虑的细节。Pascal的数据结构、声明和控制结构使这些细节更明确,从而更干净。这确实是一种改进,但不幸的是,它倾向于纪律与僵化。Pascal经常被指出是一种现代设计良好的语言。它确实相当高效。其高效性源于许多旨在为编译器开发者和系统程序员减轻负担的设计选择。用户往往被忽视。杰夫·拉斯金《苹果计算器语言入门》 他对Lisp的看法也不高,后者在很大程度上启发了Smalltalk,进而影响了Objective-C。LISP……是编程宇宙中的一个有趣角落,相对来说能有效利用程序员的时间。它过度使用递归,并且对于常见的日常活动缺乏可接近性。杰夫·拉斯金《苹果计算器语言入门》 但在APL方面,他真的说了许多好话——他为其歌颂专门开了一个部分(如他所见)。在这里引用过于冗长,但我建议你去读一下。虽然APL确实在某种程度上影响了C/C++,并有争议地影响了Python,但总体来说,APL被证明是编程语言进化树上的一条死胡同。现在回头看,其语法看起来像是一种讽刺和荒谬——某种人为了在混淆C代码竞赛中作弊而发明的东西。而——感谢你耐心等待我阐述我的观点——这正是他的“苹果计算器语言”如此令人惊讶的地方。左至右的评估简单性,他的“群集”的惊人优雅……这其中有一丝让我意外清新的东西。阅读他的规范时稍显枯燥,因此我——嗯,Claude Opus 5——为我的(也希望是你的)娱乐构建了一个可用的实现!苹果计算器语言你可以用句子与之对话的计算器。它严格从左到右读取,它不知道乘法应该优先进行,它把一把数字视为一件事情,杰夫称之为“群集”。这就是这个语言的运行。阅读杰夫的原始入门文档请前往斯坦福大学 → M1007系列3·10盒·第1文件夹
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡