编程的第四个十年:更大的盒子,更少的话题

个人编程史第四章的第一部分

编程的第四个十年:更大的盒子,更少的话题

比面包盒大

在八十年代,一种新型电脑开始变得普遍,workstation.¹工作站是个人电脑的强大专业版本的售价高达新车 消费者个人计算机的成本仅与二手车相同。 有用于工程任务的SGI,例如数字动画,用于报纸版面的Apollos,运行计算中心和计算机辅助设计(CAD)的Sun公司,以及成为全球第一台Web服务器的NeXT工作站。 这是一个有趣的事实:从程序员的角度来看,iPhone是NeXT的直接后代。

为这些新计算机编写的许多程序都是用新语言编写的。 自COBOL以来,与硬件或OS相比,语言对生产力的影响将是第一次。 在这十年中出现的多种语言中(至少有65种),为这些工作站开发了三种新语言,这些语言对所有计算机的编程产生了持久影响。

Smalltalk,因为它深刻地影响了它之后的几乎所有语言。

C ++ (在本文的第二部分),因为尽管它没有像其他两个一样改变编程技巧,但它是如此普遍,因此必须提及。

最后, Objective-C (在本文的第二部分)是因为它讲述了用语言打包的类库如何显着提高生产率和灵活性,以至于它们可以在数十年内为数百代设备供电。

编程的第四个十年:更大的盒子,更少的话题

Smalltalk软件包中包含好东西

Smalltalk实际上是在1972年首次编写的,但在Xerox Palo Alto研究中心(PARC)内保存了八年。 1980年,发布了一个新版本,并分发给了四个公司,供同行评审和实施:惠普,数字设备公司,泰克和苹果公司。 我估计,Smalltalk在重要性和对计算机及编程效率的影响方面均排名C。

它具有影响力的许多方式之一是它带有开发环境。 集成开发环境(IDE)现在很普遍,但是在Smalltalk之前,大多数程序员都是使用文本编辑器编写代码的(近年来,这种情况有所回升)。 Smalltalk的带着,不仅组织在一个中的代码的专用工具,但也帮助你看到哪些代码位被连接到其他位,它允许代码的检查,因为它跑了 在此之前,程序员必须嵌入调试消息(在程序运行时发送给自己),以便他们可以看到程序在崩溃前执行了多远。 他们必须使用硬件功能来一次单步执行一条指令,并拍摄称为核心转储的内存快照。

Smalltalk是第一个包含开发环境的语言,该开发环境支持程序运行时的实时检查,这意味着开发人员可以立即看到他们编写的任何代码的所有含义。 是否想知道索引是从零开始还是从一开始? 只需尝试一下-“询问编译器”。 它比查找它快。 Smalltalk是有史以来最具交互性的编程语言。

没有Smalltalk所倡导的一些IDE概念,许多现代语言(例如Java)将完全无法使用。

Smalltalk还是第一种通用的面向对象编程(OOP)语言。 当前,几乎所有使用的语言都使用对象。 Smalltalk向我们展示了如何。

对象被视为一种控制代码重用的方法。 从最早的编程时代开始,编码人员便会重用喜欢的代码,以实现大多数程序所通用的例程和功能。 像以往一样,这种代码重用是高度特质的,从一个程序员到另一个程序员在各个方面都有所不同。 同样,对一个副本进行的错误修复和增强功能不适用于复制了代码的所有其他程序。

对象的工作方式是有一个“类库”。 这些类是对象的模板或蓝图,程序的主要代码将使用它们“实例化”或构建对象。 由于程序的代码与类库是分开的,因此可以通过错误修复来更新类。 因此,可以重新编译使用该库的任何程序,并且将自动合并错误修复程序,而无需重写任何程序代码。 至少在理论上。

如今,几乎所有流行的语言都比在笔记本中剪切和粘贴剪贴簿代码使用了明显的改进。

对象是一个抽象层,当基础复杂性隐藏在模型后面时,您称之为对象。 电视频道就是一个很好的例子。 频道是射频的抽象。 当您将电视调谐到“频道2”时,您实际上正在做的是调整电视的电路,使其接收54至60兆赫兹之间的无线电频率,而忽略所有其他无线电信号。

FORTRAN和其他语言是汇编代码的抽象,而汇编代码是机器代码的抽象。 面向对象的语言增加了第三级抽象。

现代软件使用许多抽象层次。 当您与网页进行交互时,您至少要处理十几个抽象层。 您单击的“按钮”实际上是操作系统捕获的屏幕区域,并传递到Web浏览器,然后将其与内存中的像素图进行比较,该像素图是由“文档对象模型”生成的通过解释HTML(以及CSS和JavaScript),调用HTTP函数,依次调用TCP / IP协议,TCP / IP协议向通常由一个或多个抽象的“框架”构建的“应用程序编程接口”传递消息并做出响应。它们所使用的语言的一种,它们本身就是汇编语言的抽象,汇编语言是机器代码的抽象。

这是高度简化的。 现实情况是,有参与实际上更多层。

然而,在八十年代,程序员仍然在“接近金属”的水平上工作。 只有操作系统抽象和语言抽象。 优秀的程序员意识到了下面的内容。 好的程序员,即使他们没有用汇编代码编写,也知道如何阅读,并且知道他们的代码如何转换为汇编语言-至少在对性能至关重要的领域。

苹果计算机受到施乐PARC所做工作的强烈影响。 苹果与Xerox达成了交易,让他们以$ 1M(一年后价值$ 22M,今天价值$ 6.7B)购买100,000股股票,以换取1979年在PARC进行的两天的技术演示。Xerox做到了。

与施乐管理层不同,苹果管理层的意图是将这些想法交到客户手中。 当然,Xerox的一些最有才华的人才最终开始为Apple工作,而想法也随之而来。

尽管Apple可以使用Smalltalk,但它使用Pascal作为其官方开发语言,因此最终将Pascal语言扩展为包括对象。 这是对象帕斯卡。 然后,它创建了一个名为MacApp的对象库或框架,旨在为开发人员带来重大的生产力提升。 它错过了商标,因为它具有太多的继承层次并且太复杂了。 除了简化开发,它还使它在许多方面变得更加复杂。 这就是为什么您可能从未听说过的原因。

<-该系列的上一篇文章

该系列的下一篇文章->

[1]如果火车站在火车停靠的地方,那么什么是工作站?
(典型的程序员幽默)

本文是我即将出版的《混沌工厂》一书的节选,该书解释了为什么大多数公司和政府无法编写“有效”的软件,以及如何对其进行修复。

From: https://hackernoon.com/the-fourth-decade-of-programming-bigger-boxes-smaller-talk-ba3d2410898e