软件开发的未来:计算机的未来 P2

图片来源: 量子运行

软件开发的未来:计算机的未来 P2

    1969 年,尼尔·阿姆斯特朗和巴兹·奥尔德林成为第一个踏上月球的人类,成为国际英雄。 但是,虽然这些宇航员是镜头中的英雄,但仍有成千上万的无名英雄没有他们的参与,第一次载人登月并非不可能。 其中一些英雄是编写航班代码的软件开发人员。 为什么?

    嗯,当时存在的计算机比现在简单得多。 事实上,普通人破旧的智能手机比阿波罗 11 号宇宙飞船(以及 1960 年代美国国家航空航天局)上的任何东西都要强大几个数量级。 此外,当时的计算机是由专业的软件开发人员编写的,他们用最基本的机器语言编写软件:AGC 汇编代码,或者简单地说,1 和 0。

    作为背景,这些无名英雄之一,阿波罗太空计划的软件工程部主任, 玛格丽特·汉密尔顿,她的团队不得不编写大量代码(如下图所示),而使用当今的编程语言本可以只用一小部分精力就可以编写出来。

    (上图是玛格丽特·汉密尔顿站在一叠包含阿波罗 11 号软件的纸旁边。)

    与现在软件开发人员为大约 80-90% 的可能场景编写代码不同,对于阿波罗任务,他们的代码必须考虑到所有情况。 为了正确看待这一点,玛格丽特自己说:

    “由于清单手册中的错误,会合雷达开关放置在错误位置。这导致它向计算机发送错误信号。结果是计算机被要求执行所有正常着陆功能同时收到额外负载的虚假数据,占用了其 15% 的时间。计算机(或者更确切地说是其中的软件)足够聪明,可以识别出它被要求执行的任务比它应该执行的要多。然后它发送发出警报,这对宇航员意味着,我现在超负荷了比我应该做的更多的任务,我将只保留更重要的任务;即着陆所需的任务......实际上, 计算机被编程为不仅仅是识别错误条件。一整套恢复程序被整合到软件中。在这种情况下,软件的作用是消除优先级较低的任务并重新建立更重要的任务......如果电脑没有认识到这个问题并采取了恢复行动,我怀疑阿波罗 11 号是否会成功登月。”

    — 麻省剑桥市阿波罗飞行计算机编程麻省理工学院德雷珀实验室主任玛格丽特·汉密尔顿,“Computer Got Loaded”,致信 数据化,3月1,1971

    正如前面所暗示的,软件开发自阿波罗早期以来已经发展。 新的高级编程语言将繁琐的 1 和 0 编码过程替换为使用单词和符号进行编码。 生成随机数等过去需要数天编码的功能现在已被编写单个命令行所取代。

    换句话说,软件编码每过十年就变得越来越自动化、直观和人性化。 这些品质只会持续到未来,以对我们的日常生活产生深远影响的方式指导软件开发的发展。 这就是本章的内容 计算机的未来 系列将探索。

    面向大众的软件开发

    用文字和符号(人类语言)代替对 1 和 0(机器语言)进行编码的过程称为添加抽象层的过程。 这些抽象以新的编程语言的形式出现,这些语言可以为它们设计的领域自动化复杂或常见的功能。 但在 2000 年代初期,出现了新公司(如 Caspio、QuickBase 和 Mendi),它们开始提供所谓的无代码或低代码平台。

    这些是用户友好的在线仪表板,使非技术专业人员能够通过将可视代码块(符号/图形)拼接在一起来创建适合其业务需求的自定义应用程序。 换句话说,您无需砍伐一棵树并将其制成更衣柜,而是使用宜家的预制零件建造它。

    虽然使用此服务仍然需要一定程度的计算机知识,但您不再需要计算机科学学位就可以使用它。 结果,这种抽象形式使企业界数以百万计的新“软件开发人员”崛起,并使许多孩子能够在更早的时候学习如何编码。

    重新定义成为软件开发人员的意义

    曾经有一段时间,风景或人的脸只能被捕捉到画布上。 画家必须作为学徒学习和练习多年,学习绘画工艺——如何混合颜色、最好的工具、执行特定视觉效果的正确技术。 交易的成本和需要多年的经验才能很好地完成交易,这也意味着画家少之又少。

    然后发明了照相机。 只需点击一个按钮,风景和肖像就可以在几秒钟内被捕捉到,否则这需要几天到几周的时间才能完成。 随着相机的改进,变得更便宜,并且变得越来越丰富,它们现在甚至包含在最基本的智能手机中,捕捉我们周围的世界成为现在每个人都参与的普遍而随意的活动。

    随着抽象的进步和新的软件语言自动化越来越多的日常软件开发工作,在 10 到 20 年后成为一名软件开发人员意味着什么? 为了回答这个问题,让我们来看看未来的软件开发人员可能会如何构建未来的应用程序:

    *首先,所有标准化、重复的编码工作都将消失。 取而代之的是一个包含预定义组件行为、UI 和数据流操作(宜家部件)的庞大库。

    *像今天一样,雇主或企业家将为软件开发人员定义特定的目标和可交付成果,以通过专门的软件应用程序或平台执行。

    *然后,这些开发人员将制定他们的执行策略,并通过访问他们的组件库并使用视觉界面将它们链接在一起——通过增强现实 (AR) 或虚拟现实 (VR) 访问的视觉界面,开始为他们的软件的早期草稿制作原型。

    *专门的人工智能 (AI) 系统旨在了解其开发人员的初始草案所暗示的目标和可交付成果,然后将改进起草的软件设计并自动化所有质量保证测试。

    *根据结果,人工智能将向开发人员提出大量问题(可能通过类似 Alexa 的口头交流方式),以寻求更好地理解和定义项目的目标和可交付成果,并讨论软件在各种情况下应如何运作和环境。

    *根据开发者的反馈,人工智能将逐渐了解他或她的意图并生成代码以反映项目目标。

    *这种来回的人机协作将迭代一个又一个版本的软件,直到一个完整的、可销售的版本准备好供内部实施或出售给公众。

    *事实上,这种合作将在软件投入实际使用后继续进行。 当报告了简单的错误时,人工智能将自动修复它们,以反映在软件开发过程中概述的原始期望目标。 同时,更严重的错误将需要人机协作来解决问题。

    总体而言,未来的软件开发人员将较少关注“如何”,而更多地关注“什么”和“为什么”。 他们将不再是工匠,而是更多的建筑师。 编程将是一项智力活动,需要人们以人工智能可以理解的方式有条不紊地传达意图和结果,然后自动编码完成的数字应用程序或平台。

    人工智能驱动的软件开发

    鉴于以上部分,很明显我们认为人工智能将在软件开发领域发挥越来越重要的作用,但它的采用并不仅仅是为了让软件开发人员更高效,这一趋势背后也有商业力量。

    软件开发公司之间的竞争逐年加剧。 一些公司通过收购竞争对手来竞争。 其他人则在软件差异化方面展开竞争。 后一种策略的挑战在于它不容易防御。 一家公司向其客户提供的任何软件功能或改进,其竞争对手都可以相对轻松地复制。

    出于这个原因,公司每隔一到三年发布一次新软件的日子已经一去不复返了。 如今,专注于差异化的公司有越来越多的定期发布新软件、软件修复和软件功能的经济动机。 公司创新越快,他们就越能提高客户忠诚度并增加转向竞争对手的成本。 这种向定期交付增量软件更新的转变是一种称为“持续交付”的趋势。

    不幸的是,持续交付并不容易。 当今只有四分之一的软件公司可以执行这一趋势所要求的发布时间表。 这就是为什么人们对使用人工智能来加速事情如此感兴趣的原因。

    如前所述,人工智能最终将在软件起草和开发中发挥越来越多的协作作用。 但在短期内,公司正在使用它来越来越多地自动化软件的质量保证(测试)流程。 其他公司正在尝试使用人工智能来自动化软件文档——跟踪新功能和组件的发布以及它们是如何生产到代码级别的过程。

    总体而言,人工智能将越来越多地在软件开发中发挥核心作用。 那些早期掌握它的使用的软件公司最终将比他们的竞争对手享受指数级增长。 但要实现这些 AI 收益,行业还需要看到硬件方面的进步——下一节将详细阐述这一点。

    软件作为服务

    各种创意专业人士在创作数字艺术或设计作品时都使用 Adob​​e 软件。 近三年来,您以 CD 的形式购买了 Adob​​e 的软件并拥有它的永久使用权,并根据需要购买未来的升级版本。 但在 2010 年代中期,Adobe 改变了策略。

    Adobe 客户现在不必购买带有令人讨厌的复杂所有权密钥的软件 CD,而是必须按月付费才能在他们的计算设备上下载 Adob​​e 软件,该软件只能与 Adob​​e 服务器的常规到恒定 Internet 连接一起工作.

    随着这一变化,客户不再拥有 Adob​​e 软件; 他们根据需要租用它。 作为回报,客户不再需要不断购买升级版的 Adob​​e 软件; 只要他们订阅了 Adob​​e 服务,他们总是会在发布后立即将最新更新上传到他们的设备(通常一年几次)。

    这只是我们近年来看到的最大软件趋势之一的一个例子:软件如何转变为服务而不是独立产品。 正如我们在微软发布的 Windows 10 更新中看到的那样,不仅是更小的专用软件,还有整个操作系统。 换句话说,软件即服务(SaaS)。

    自学软件 (SLS)

    在行业向 SaaS 转变的基础上,软件领域出现了一种将 SaaS 和 AI 相结合的新趋势。 来自亚马逊、谷歌、微软和 IBM 的领先公司已经开始向他们的客户提供他们的人工智能基础设施作为服务。

    换句话说,人工智能和机器学习不再只有软件巨头才能访问,现在任何公司和开发人员都可以访问在线人工智能资源来构建自学习软件(SLS)。

    我们将在人工智能的未来系列中详细讨论人工智能的潜力,但在本章的上下文中,我们会说当前和未来的软件开发人员将创建 SLS 来创建预测需要执行的任务的新系统,并只需为您自动完成它们。

    这意味着未来的 AI 助手将在办公室学习您的工作方式并开始为您完成基本任务,例如按照您的喜好格式化文档、以您的语气起草电子邮件、管理您的工作日历等等。

    在家里,这可能意味着让 SLS 系统管理您未来的智能家居,包括在您到达之前为您的家预热或跟踪您需要购买的杂货等任务。

    到 2020 年代和 2030 年代,这些 SLS 系统将在企业、政府、军队和消费者市场中发挥至关重要的作用,逐步帮助每个人提高生产力并减少各种浪费。 我们将在本系列后面更详细地介绍 SLS 技术。

    然而,这一切都有一个问题。

    SaaS 和 SLS 模型发挥作用的唯一方法是互联网(或其背后的基础设施)继续增长和改进,以及运行这些 SaaS/SLS 系统运行的“云”的计算和存储硬件。 值得庆幸的是,我们正在追踪的趋势看起来很有希望。

    要了解互联网将如何发展和发展,请阅读我们的 互联网的未来 系列。 要了解有关计算机硬件将如何发展的更多信息,请使用下面的链接继续阅读!

    计算机系列的未来

    重新定义人性的新兴用户界面:计算机的未来 P1

    数字存储革命:计算机的未来 P3

    逐渐消失的摩尔定律引发对微芯片的根本反思:计算机的未来 P4

    云计算变得去中心化:计算机的未来 P5

    为什么各国竞相建造最大的超级计算机? 计算机的未来 P6

    量子计算机将如何改变世界:计算机的未来 P7    

    此预测的下一次预定更新

    2023-02-08