软件工程中的人工智能是否达到了“奥本海默时刻”?以下是你需要了解的内容

Is artificial intelligence in software engineering at its 'Eureka moment' in the field of Computer Science? Here's what you need to know.

今天早上,当我给我的车加油时,我抱怨油价又涨了。今天,汽油价格上涨到每加仑4.55美元。

但是,然后,我开始询问一系列关于将这六磅挥发性液体运送到我手中所需的过程,特别是软件如何推动这个过程的问题。软件分析地质数据并管理钻机,确保它们不过热。软件帮助跟踪天气并引导运输燃料的巨型船只。它管理炼油系统并提供安全监控。此外,它还管理支付和加油操作,以将燃料加入我的车中。

此外:如何使用ChatGPT编写代码

特色报道

生成AI与工程的交汇点

生成AI的激增可以在工程领域发挥巨大潜力。但同时也带来了挑战,因为企业和工程师们需要弄清楚AI对他们的角色、业务策略、数据、解决方案和产品开发的影响。将生成AI引入软件领域的未来路线图是什么样的?ENBLE从各个角度进行解读。

然后,还有编写帮助定位地下燃料的软件所需的工作。这当然不是一个程序员坐下来喝可乐、吃披萨、边听Rush边编写代码的过程。像驱动深层钻机的工业软件需要专门的软件工程。

而这种软件工程可能得到了人工智能的辅助。

我发现自己既兴奋又恐惧。人工智能很可能成为软件工程的”核能”时刻,在这个时刻我们将强大的新能力引入世界,但这些能力中包含了什么?毁灭的力量。

什么是软件工程?

要真正理解软件工程中的人工智能,首先我们必须理解软件。

软件控制着计算机,计算机可以是桌面上的个人电脑,也可以是工厂设备中的微小处理器。简单来说,软件是一系列指令,告诉计算机该做什么。

编程(俗称”编码”)是将这些指令串联起来使其产生作用的实践。我维护一个小程序,让人们捐赠给非营利组织。例如,我维护一个有153,259行代码的捐赠程序。而像Windows和Linux这样的大型程序则需要数亿行代码。重要的是,指令的顺序和结构控制着程序的运行。如果正确,程序就能按照您的要求执行。如果错误,结果是不可预测的。

此外:我如何使用ChatGPT编写自定义JavaScript书签

现在,让我们来谈谈编程语言。语言是用于创建程序的单词语法。您可能听说过C、Java和Swift,但实际上有数百种编程语言。事实是,不同的语言可以用来实现相同的目标。就像将千层面的食谱用意大利语或英语写下来一样,您仍然需要将其放入烤箱中烤制适当的时间。

此外:我使用ChatGPT在12种主流编程语言中编写了相同的例程,下面是它的表现

选择编程语言有许多原因,从任务的适用性到与所需的目标环境的兼容性。由于不可能掌握所有编程语言,一些程序员更喜欢在他们熟悉的语言中工作。不要过于纠结于语言的概念,但要知道它们是用于创建代码的单词和单词结构。

此外:我使用ChatGPT在这十种冷门编程语言中编写了相同的例程

程序员将计算机指令串联起来让某物发生。但是想想我提到的数字。我的捐赠软件的代码本身就有十几万行这样的指令。这是一种非常复杂的情况。很快就会变得非常混乱,也会很容易出错。

以下是如何理解软件工程作为一门学科:

  • 软件工程使用科学方法,就像建造一座桥梁一样,来设计和测试软件。
  • 它是一种结构化的方法,类似于建筑师在建造之前的规划。
  • 就像工程师使用最佳实践来建造坚固的结构一样,软件工程师确保软件可靠且高效。

所以,如果你要让你的汽车以70英里每小时的速度在高速公路上行驶,知道你不是把你的生命交给某个靠披萨和红牛维持生计的程序员编写的未经测试的软件,而是某种工程学纪律参与创建和测试驾驶软件,那会很好。

另外:我正在使用ChatGPT来帮助我更快地修复代码,但代价是什么?

编码和软件工程之间存在重叠。我是一个接受过软件工程培训的软件工程师,也会编写代码。开发人员,无论是公司还是个人,都制作软件产品。他们的技能包括编码、软件工程和业务开发。

软件工程是编码背后的学科,使其可管理、可维护,最终可靠。

人工智能和软件有什么区别?

从技术上讲,软件是指基于位和字节而非硬件执行某些操作的任何东西。例如,Excel预算表格不被认为像Excel程序本身那样具有软件特性,除非该表格包含大量宏并作为软件应用程序出售。

传统软件涉及一系列步骤和决策。如果你通过描述步骤和决策来创建代码,那么你是在传统意义上进行编程。

但是人工智能不是这样工作的。人工智能的整个理念是,它会进行尚未预定义为步骤和决策的智力跃迁。相反,人工智能使用数据(通常是大量的数据)来帮助指导其输出。

当你要求ChatGPT撰写一篇关于IT基础设施的文章时,它成功地完成了任务,并不是因为设计师预先预期了你的问题并编写了特殊的代码来帮助撰写关于IT基础设施的文章。同样,当Midjourney帮助你制作一张从笔记本电脑中飞出一只大象的图片时,并不是因为某个程序员编写了一个飞出大象的例程,只是因为有人可能需要那张图片。

另外:我要求ChatGPT编写一个我需要的WordPress插件,它在不到5分钟内完成了任务

相反,人工智能系统使用大型语言模型(LLM)根据海量的数据构建所需的内容,几乎包括整个互联网以及AI工程师可以输入系统的其他任何信息。

所有这些使得人工智能在某种程度上超越了软件。这也意味着实际上没有人确切知道是什么原因导致ChatGPT以其所作出的回应。这些被称为”新兴能力”,这些能力是大型语言模型的特征,而不是从一开始就被编程到它们中的。

人工智能的有趣之处在于,我们开始远离典型的工程级学科。我们并不能总是预测AI将要做什么,或者它们将如何做到这一点。与生成式人工智能进行交流,即所谓的”提示工程”,几乎和传统的工程实践一样需要管理和谈判。

另外:人工智能会取代编程工作,还是将程序员变成人工智能经理?

作为一名曾经的编程教授,与像ChatGPT这样的大型语言模型进行互动更像是与学生而不是与编码环境进行互动。

人工智能如何应用于软件工程?

随着人工智能进入主流,我们正在看到软件工程师和生成式人工智能工具之间可能形成的共生关系。例如,人工智能可以提出代码优化建议、识别错误,并甚至预测系统变化的连锁反应。

今年年初,我与人工智能进行了许多”特技编码”,只是为了看看它的能力。我还使用它来帮助找到一些特别困惑的错误,帮助识别需要更改以确保与平台软件的新版本兼容的代码,编写能够帮助我妻子的业务的简短例程,以及创建能够帮助我在我的ENBLE文章中创建”另外”链接的Chrome书签小工具。我不会说人工智能已经成为我工作负荷的必需品,但它确实帮了我很多。

另外:好吧,ChatGPT刚刚帮我调试了我的代码。真的。

毫无疑问,今年风靡一时的生成式人工智能工具是由软件工程师构建的。人工智能可以成为软件工程过程的一部分,也可以成为软件工程的结果。

此外,人工智能可以帮助开发人员完成他们的工作。如果你考虑软件工程的各个方面——设计、编码、调试、维护、管理、测试、发布和迁移(仅举几例)——人工智能可以在所有这些领域提供帮助。例如,人工智能可以自动化重复的编码任务,使过程更快速、高效。此外,它可以预测代码中潜在的错误或漏洞,确保更强大和安全的软件。

然而,AI也有其局限性。我最初使用AI编写了一些简单的程序。然后,当我尝试使用更复杂的程序时,AI开始陷入死循环。但是,当我给AI提供了一堆一直出错的代码(我找不出错误在哪里)时,AI指出了错误。AI还可以帮助建立测试制度。当新的代理人没有足够的经验知道答案时,它可以帮助技术支持人员回答问题。

此外:ChatGPT如何改写和改进您现有的代码

就目前而言,AI在软件工程中的帮助还不能完全可靠。可以将其比作一个天赋过人但同样靠不住的大学生,有时能够提供深刻的见解,但却无法给出准确的答案。

接下来,我们需要讨论AI对世界的影响。这就是我们需要共同思考的概念。

请记住,以下列出的令人难以置信的AI进展和应用都是建立在软件工程的基础上的。如果没有软件工程的原则和实践,这些由AI驱动的工具和服务将无法实现。

以下是AI目前在现实世界中为我们做的十件事情:

  1. 个人助理(如Siri、Alexa和Google助手)帮助我们处理任务并回答问题。
  2. 医疗算法协助诊断疾病和预测患者结果。
  3. 金融分析工具有助于股票交易和识别欺诈。
  4. 内容推荐算法根据我们的偏好建议电影、音乐和文章。
  5. 客户服务聊天机器人处理客户查询和投诉。
  6. 制造业机器人协助装配线和质量控制。
  7. 语言翻译服务由AI驱动。
  8. 大型工作室游戏中广泛使用AI,使游戏互动、智能和引人入胜。
  9. 安全系统在网络安全中使用人脸识别和异常检测。
  10. 营销算法个性化广告和客户互动。

鉴于今年生成式AI的崛起(它正在改变更多事情),接下来十年AI将为我们做以下十件事情:

  1. 先进的医疗可能包括AI辅助的药物研发和个性化医学。
  2. 气候建模用于预测和减轻气候变化的影响。
  3. 具有情感智能的AI可以读取和回应人类情绪。
  4. 能够执行复杂任务并协助日常生活的先进机器人。
  5. 由AI驱动的虚拟现实体验,提供完全沉浸式的虚拟世界。
  6. 教育系统提供根据个体需求量身定制的个性化学习体验。
  7. AI在航天探索中辅助导航和操作航天器。
  8. 通过AI提供法律援助,进行法律研究和案件准备。
  9. 通过AI生成的艺术和音乐增强了艺术和创造力,或作为艺术家的协作工具。
  10. 通过AI在灾害预测和响应中改善公共安全。

然后还有自动驾驶汽车。事实上,AI和机器学习正在提高自动驾驶汽车的通信效果,并改善我们智能手机中的摄像头性能。

AI和软件一样,将嵌入到我们使用的一切中,希望在整个过程中增加价值。

人工智能和软件工程中的紧迫伦理问题是什么?

除了AI帮助软件工程的实施过程外,软件工程师还需要引导AI的发展。我们已经谈到了语言模型本身,但软件工程师需要调整AI的行为,确保最佳实践,并确保最终产品(达到公众的部分)具有道德行为的保障措施。

此外:谁拥有代码?如果ChatGPT的AI帮助编写您的应用程序,它是否仍属于您?

这很困难。现在,软件工程师有了一个可以说是超越编码和调试的“责任”。实际上,构建AI的软件工程师是AI系统的主要“守护者”和“教师”。因此,这些工程师有责任确保以道德方式开发和实施AI技术。

此外:如果您使用由AI生成的代码,您的责任风险如何?

请明确,对于大多数程序员来说,这在很大程度上超出了他们的舒适区域。大多数软件工程师接受过过程和分析以及实施和编码实践的培训。他们没有接受哲学和伦理方面的培训。而且,大多数软件工程师肯定没有接受过当不同的人群对什么是道德的、甚至什么是对与错有不同看法时,如何处理的培训。

在ENBLE,我们长期以来一直关注AI系统中的偏见问题。这不是一个简单的问题。但是AI中的偏见可能导致现实世界中的问题,例如不公平的贷款决策或招聘实践中的隐藏偏见。AI正在成为医疗保健、金融和公共安全等许多领域的重要组成部分。

如果AI被错误使用或者没有考虑到广泛的公正决策,其结果可能是灾难性的。因此,工程师们需要为基于AI的系统构建访问控制、使用监控、审计机制等功能。

但是这些问题远远超出了传统软件工程工作流程的范畴。部署AI系统的团队需要将心理学、社会科学、伦理学、社区管理等领域的专家纳入其中。

如果现代大型语言模型是在互联网上以及图书馆和数据库的内容上进行训练的,它们将固有地继承这些来源中的偏见。但是,与其仅仅在对负面短语做出反应时引发某人的不适感,基于AI的决策可能会对个人造成永久、实际、昂贵和痛苦的损害。

所有这些都必须在软件中进行管理,但是需要由具有比工程学院通常教授的更广阔世界观的专业人士指导。

AI现在是否正在经历“奥本海默时刻”?

一段时间以前,我上了最后一节高中化学课。袖珍计算器很流行,但我的化学老师坚持要我们都学会使用滑尺来做计算。

从那节课以后,我从未再使用过滑尺。我的老师教授了一个明显过时的技能。虽然我猜想在一些后启示录的情景中,如果没有电源,知道如何使用滑尺可能会有些好处,但我认为如果我们面临末日,我们将有比滑尺可以解决的更大问题。

作为一名工程师,我不使用滑尺。我使用强大的计算机、复杂的编码、电子表格以及我们现代数字世界提供的全部能力。我的老师对于“从事科学”的要求与我在职业生涯中实际“从事科学”的实践大不相同。

随着我们进入一个AI工具与个人计算机革命一样普遍、具有颠覆性和改变性的时代,我们的工具将会非常不同。因为我们的工具将融合AI的能力,我们需要扩展我们的技能以理解和使用它们。

许多工程学科要求从业者积极考虑安全性。桥梁建筑师需要了解如何为工人提供氧气,并在使用沉井施工桥墩时防止海水涌入。航空工程师必须了解如何让飞机在空中飞行,并在飞越云层时保持机舱内的氧气。道路建筑师需要了解如何谨慎地塑造和雕刻爆炸,以在不损坏周围地区的情况下清理地面。

因此,软件工程必须从测试和验证进展到对社会安全的真正考虑。这些是我们考虑AI和软件工程未来时应该记住的一些最终思考。

我们正站在一个新时代的边缘,这个时代与工业革命、个人计算机革命和互联网的曙光一样具有变革性、不同和赋能性,同时也有问题。我们曾经依靠的工具和方法论正在演变,随之而来的是我们的责任和道德考虑的扩展。

我们必须记住这三个转型的支柱:

  • 拥抱变革:正如随着现代计算器和计算机的出现,滑尺已经过时,传统的软件工程实践需要在AI的能力面前进行调整。这并不意味着抛弃基础知识,而是借助AI带来的新见解和工具来增强它。

  • 采用整体方法:将AI整合到我们的数字景观中需要一种整体方法来进行软件工程。这不仅仅是关于编码,而是要理解我们的创作的更广泛影响,从社会影响到伦理考虑。

  • 在各个层面上进行持续学习:AI的快速发展意味着持续学习和适应是必不可少的。软件工程师将需要与AI发展的最新动态保持同步,确保他们负责地和有效地利用其能力。同样地,AI也需要不断学习,根据其在日常生活中部署的影响,采用新的最佳实践和安全措施。

在一个产生生成性AI火爆的技术行业的年份中,奥本海默这部电影占据了我们的电影荧幕。这部传记片讲述了理论物理学家J.罗伯特·奥本海默的生活,他最著名的身份是“原子弹之父”。

实质上,奥本海默反映了科学进步的代价,创新者所承担的责任重担,以及现代世界中科学、伦理和政治之间复杂的相互关系。

导演克里斯托弗·诺兰在最近的一次采访中表示:“当我与现在人工智能领域的领先研究人员交流时… 他们实际上将其称为他们的奥本海默时刻。”

同样的陈述完美地描述了人工智能在软件工程中的连锁效应,从编码实践扩展到我们的整个社区。


您可以在社交媒体上关注我的日常项目更新。一定要订阅我的每周更新通讯,访问Substack,以及在Twitter上关注我,用户名为@DavidGewirtz,在Facebook上关注我,链接为Facebook.com/DavidGewirtz,在Instagram上关注我,链接为Instagram.com/DavidGewirtz,并在YouTube上关注我,链接为YouTube.com/DavidGewirtzTV。