服务器之家:专注于服务器技术及软件下载分享
分类导航

服务器资讯|IT/互联网|云计算|区块链|软件资讯|操作系统|手机数码|百科知识|免费资源|头条新闻|

服务器之家 - 新闻资讯 - 云计算 - 面向人工智能时代的云开发编程

面向人工智能时代的云开发编程

2023-06-21 12:00未知服务器之家 云计算

只要人工智能作为辅助,就有空间开发一种促进人类与人工智能之间有效协作的语言。这可以通过减少认知负荷和实现快速测试来实现,从而显著缩短迭代时间。此外,人工智能简化了新语言的采用。 那么,在人工智能快速发展并

只要人工智能作为辅助,就有空间开发一种促进人类与人工智能之间有效协作的语言。这可以通过减少认知负荷和实现快速测试来实现,从而显著缩短迭代时间。此外,人工智能简化了新语言的采用。

那么,在人工智能快速发展并接管更多编码任务的今天,为什么要投入时间和精力开发一种新的编程语言(用于人类)呢?

笔者经常遇到这些问题:人工智能最终不会直接编写机器代码,使编程语言过时吗?一种新语言能否引入人工智能使用现有语言无法实现的功能?(例如,当人工智能可以为特定的云编写代码,然后为另一个云重写代码时,为什么要创建一种云可移植语言?)为可能很快被人工智能取代的开发人员创建工具值得吗?

首先,笔者必须承认,无法预测人工智能的发展速度。知名专家对人工智能何时或是否会取代人类开发人员持有不同意见。

然而,即使人工智能最终取代了人类开发人员,它也不一定直接编写机器代码。当人工智能可以依赖于经过验证的抽象层和编译器,使其能够有效地专注于所服务业务的独特方面时,为什么它会选择通过直接编写机器代码来为每个应用程序重新发明轮子?通过在现有工作的基础上再接再厉,专注于更小、更简单的任务,人工智能可以产生更快、更高质量的结果。

笔者现在想把重点放在更近期的未来。

考虑到人类的局限性和心理,尽管人工智能进展迅速,但变化可能是渐进的,这将导致一个重要的过渡期。

想想看,你会让ChatGPT以你的名义,用你不会说的语言为你的同龄人写一篇专业文章吗?你会在无法阅读的情况下发表它吗?可能不会。同样,工程经理是否会在知道一款关键任务应用程序是由人工智能编写的情况下将其发布到生产中(如果出现问题,人类很难介入)?

此外,尽管人工智能在某种程度上确实是工具之间的均衡器,但它仍然没有完全解决问题。让我们以上面的云可移植性为例:即使人工智能可以在云之间移植代码,人类仍然希望能够读取和修改它。因此,必须在人工智能使用的抽象级别上成为所有这些云的专家。如果一种新的语言允许它以更高的抽象水平写作,人类也会更容易理解和修改它。

假设人工智能使我们能够快速生成大量代码,那么瓶颈不可避免地会转移到测试和验证阶段。这不仅是由于人工智能固有的局限性,而且主要是因为我们作为人类的不完美。我们无法完美地阐明需求,这就需要体验最终产品的工作版本,与之互动,并确定它是否满足需求或是否忽略了任何边缘案例。这个迭代过程一直持续到创造达到完美。

在测试和验证消耗了大部分软件交付时间的环境中,有足够的机会使用工具来显著简化这一阶段。通过减少在开发环境中部署和评估应用程序所需的时间,这些工具可以大大提高整体效率。

因此,在可预见的未来,有一些工具可以让人类和人工智能更容易地快速编写高质量的代码、有效地协作和更快地测试。这些工具将使我们能够提高应用程序交付的质量和速度。

关键:减少认知负荷并加速迭代

无论你是人工智能还是人类开发人员,降低复杂性和更快地迭代都会更快地开发出更好的应用程序。

那么,可以做些什么来做出这些改进呢?

在更高的抽象层次上工作

利用更高级别的抽象为人类和人工智能程序员提供了以下好处:

——通过关注应用程序的业务逻辑而不是实现细节,减少了开发人员的认知负荷。这使开发人员能够专注于一个较小的问题(例如,指示汽车右转,而不是教它如何右转),处理更少级别的堆栈,编写更少的代码,并最大限度地减少错误的表面区域。

——减少人工智能的认知负荷。这一概念可能需要进一步澄清。人工智能系统是用栈的所有级别的知识进行预训练的,所以知道得少并不是一个显著的优势。专注于一个较小的问题对人类来说也没有那么有益。但如上所述,这仍然是有利的,因为它减少了问题的表面,使人工智能能够更快、更高质量地生成代码。然而,允许人工智能编写更少的代码并减少其出错的机会是非常有益的,因为人工智能远非万无一失。此外,人工智能还受到其在失去上下文之前可以生成的代码量的限制。因此,编写更少的代码使人工智能编码器能够创建更大、更复杂的应用程序部分。

——加快迭代速度,因为它需要编写更少的代码,减少了编写和维护代码所需的时间。虽然这看起来可能不直观,但这对人类和人工智能程序员来说同样重要,因为人工智能一次生成一个令牌的代码,类似于人类的编写方式。

——改善人类和人工智能编码人员之间的协作。以更高抽象级别编写的更小的代码库使人类开发人员能够更快、更容易地理解、修改和维护人工智能生成的代码,从而更快地开发出更高质量的代码。

更快的部署和测试

目前,部署和测试云应用程序可能需要几分钟时间。当乘以许多迭代周期时,有很大的改进潜力。特别是,随着人工智能帮助加速代码编写,与代码编写相比,在每个迭代周期内用于测试和验证的时间比例变得越来越重要。

一种普遍的解决方法是在本地运行测试,绕过云部署。然而,这种方法也带来了自身的挑战,因为它需要模拟测试组件周围的云环境。因此,这些测试的范围受到限制,通常需要在云中运行的补充测试来确认实际环境中的代码功能。

然而,这并不是旅程的终点。此类解决方案主要用于自动测试,而开发人员经常希望在开发过程中与应用程序进行手动交互,或寻求各种利益相关者(产品、销售、管理、潜在用户等)的反馈。在没有云部署及其相关时间惩罚的情况下实现这一点仍然是一个挑战。

因此,我们需要能够生成既可以在本地运行,也可以在云中运行并快速执行的测试。此外,我们必须实现云应用程序的快速部署,并为利益相关者验证提供方便。

通过实现这一点,我们可以显著提高迭代速度,无论代码是由人工智能、人类还是协作创建的。

那么,我们如何将这一愿景付诸实践呢?

Wing

Wing是一种用于云开发的新编程语言,使人类和人工智能开发人员都能在更高的抽象级别上编写云代码,它还附带了一个本地模拟器,让开发人员可以快速测试它。

量化改进

正如我们将在下面演示的那样,代码减少90%-95%,测试速度提高几个数量级。

以下是一个使用云功能(AWS Lambda、Azure function或GCP cloud function)将文件上传到bucket(想想AWS S3、Azure Blob Storage或GCP bucket)的小型应用程序的示例。

这是Wing中的代码:

bring cloud;

let bucket=new cloud.Bucket();

new cloud.Function(inflight()=>{

bucket.put("hello.txt","world!");

});

正如你所看到的,无论是人类还是人工智能程序员在编写Wing代码,它们都是在高抽象级别上工作的,使Wing编译器能够处理底层的云机制,如IAM策略和网络(别担心,它是可定制和可扩展的,确保你在需要时保持控制)。

与人类和人工智能编码器不同,编译器是绝对可靠的。此外,它速度更快,具有确定性,并且不会随着时间的推移而丢失上下文。因此,我们委托给编译器而不是人类或人工智能的责任越多,结果就越好。

编译器可以为任何云提供商调整应用程序,这使得人类只需要知道和维护更高级别的、与云无关的代码。生成的编译工件Terraform和JavaScript可以使用经过验证的可靠工具进行部署。

Wing代码有7行长,而当今领先的云开发堆栈之一Terraform+JavaScript代码有122行。不仅如此,它还深入云层的下层。

测试

Wing开箱即用,配有本地模拟器、可视化和调试控制台。

这些工具使开发人员能够通过近乎即时的热重新加载来处理代码,并非常容易地测试云应用程序,而无需模拟周围的云。

举一个例子,为了运行测试而部署到任何云提供商都需要将近一分钟的时间,而使用Wing Simulator只需要不到一秒钟,少两个数量级。此外,使用Wing,你可以在不模拟云的情况下编写测试,并在模拟器和云中运行相同的测试。

结论

尽管Wing在云开发方面引入了重大改进,但我们知道,迁移到一种新语言是一项艰巨的任务,在许多情况下可能很难证明这一点。我们竭尽全力使采用该语言变得尽可能容易,并具有以下功能:

——易于学习,因为它与其他语言相似。

——与现有的堆栈和工具(尤其是部署和管理)无缝配合。

——成熟的生态系统,将任何NPM模块或Terraform资源导入你的代码中。

——集成到现有的代码库中:用其他语言编写运行时代码,并用Wing引用它。

此外,我们相信,在人工智能时代,采用Winglang这样的新语言对人类来说更容易,因为人工智能有助于用不熟悉的语言和框架编写代码,并简化了现有代码向新语言的迁移。

随着我们迈向人工智能在代码开发中发挥更重要作用的未来,Winglang等语言的创建和采用将确保人类和人工智能开发人员更好的协作、更快的开发和更高质量的应用。

延伸 · 阅读

精彩推荐