使用无服务器回到70年代

2020-12-20 08:38:43

我现在已经与“云”进行了足够长的合作,以至于要比从传统的租用同地托管公司的服务器租用服务器并在那儿运行软件的方法好得多,还有很长的路要走。 。最新的潮流是无服务器,这让我感觉很像我们在1970年到达。

很久很久以前,我装作学习商务管理,同时教自己用C语言编写代码。这所大学有两个世界:我们拥有一个配备“个人计算机”的实验室,但还拥有微型计算机的终端,必须在计算机上进行作业取决于教授的偏好。但是,这两个系统至少都是“在线”系统,是交互式的,具有即时反馈。我的一个朋友不是那么幸运:他分配了他的土木工程课程中的一门课程,该课程必须在帕斯卡完成,并且必须从大学的大型机上打印出来。

他打电话给我寻求帮助,因为他之前从未写过任何代码。因此,我跳到他手里拿着一块Turbo Pascal软盘的位置,并假设我们会简化工作。即使我以前从未在Pascal上进行编码,我们还是做到了:即使在那时,IDE还是很棒的,并且连续不断的反复试验使我们获得了想要的结果(它们是一些简单的工程计算,甚至在大多数情况下也做得很多)计算器的原始语言,但这是课程分配。至少我们可以很容易地验证程序是否正确)。

我们跳上车,驶过大学的计算机中心,那是一座70年代野蛮的混凝土掩体。我们坐在终端后面,输入代码,然后用助教添加到作业中的所需IBM Job Control Language将其包围,然后单击“ Enter”(不是“ Return”,实际上是“ Enter”-Enter the Job)。几分钟后,打印机开始打印并吐出几页纸。在所有大写的乱七八糟之间,有:编译器错误。回到正题-Turbo Pascal和IBM Mainframe Pascal显然存在一些差异。几个小时之后,大量的浪费纸张,我们得到了我朋友想要的:运行良好的结果。这些数字与我们的注释相符,我们可以退至最近的酒吧,品尝优质的啤酒。

从那次经历开始,我就一直强调反馈的价值,尤其是快速反馈的价值。即使在这个最小的示例中,我们花费的时间都比最初编写代码花费的时间更多。缓慢的反馈循环会降低性能,如果您不相信我,请找到并在线玩“啤酒发行游戏”。您会感到惊讶。

互动的顶峰曾经是,现在仍然是Smalltalk。我用这种语言工作了两年,让您的系统在不到一秒钟的时间内就可以编译并运行大多数测试。令人难以置信的是,在完全交互式的编程系统上,您的性能提高了多少,但是需要第一手经验才能充分欣赏它。这是一个奇怪的系统,一个奇怪的语言,一个艰难的销售;因此,Smalltalk仍然处于非常不受欢迎的边缘状态。

在Smalltalk的几年后,我遇到了很多大型Java系统。他们起初是可怕的毛病,但是当“依赖注入”的想法立足时,事情开始变得更好。除了返回作业控制语言外,这次以XML伪装,并带有更友好的名称,例如“ Spring”。在内部,代码是相当干净和模块化的,但是告诉计算机如何运行却花了几乎相同的键入时间,这次不是使用编程语言,而是使用结构化标记语言。该语言缺乏适用于编写良好代码的所有功能,因此诸如“不要重复自己”之类的原则变得浮躁,随后出现了复制/粘贴编程。新的业务逻辑?新的控制器,二十行Java样板文件,十行Java业务逻辑,五十行XML将其连接到系统的其余部分。

Warning: Can only detect less than 5000 characters

它被称为“配置即代码”,确实是一个好主意(但几乎不是一个新主意)。 但是XML不是代码,JSON,YAML和HCL也不是。 所有这些标记语言都缺乏一种基本的素质,这导致我目前在所有地方看到的所有复制/粘贴编程,无论团队是部署在Nomad上还是使用Terraform或CloudFormation来搅动大型复杂集群来运行营销站点。 这种复杂性水平是不可持续的,我担心的是,它将以我们行业喜欢解决自己创造的问题的方式来解决:如果可能的话,则增加更多复杂性。 不是通过回顾我们的历史并弄清楚是什么引起了个人计算机革命。 真可惜。