关于我们离真正的人工智能还有多远,我们何时才能到达那里,它是有意识的还是无意识的,以及它有多危险等问题,有很多争论。不管怎样,机器能够自我编程的时代正在加速到来,而且比我们想象的要快得多。无论是两年、五年还是十年,现在开始思考编程、程序和编程语言的未来都不算太早。
尽管最新的工具在许多方面都很出色,但值得指出的是它们仍然与自然智能有所不同。人类不需要阅读整个互联网就能学会说话。儿童一出生就能接收到立体的视频/音频和触觉、嗅觉和味觉输入。大脑是在多模态数据上进行训练的,这使得它可以以集成的方式关联语言和各种物理现象,并因此建立对现实世界的常识和语义理解。训练和推理的分离,这种分离在人类身上并不存在。我们可以将新的信息转移到长期记忆中,动态地改变网络权重和能量需求。人工智能需要大量的计算资源,即使在推理过程中也是如此(更不用说训练了),而这些计算消耗的能量在地球上的能源生成能力上是无法满足的。
我假设所有这些问题都会得到解决。
那么,编程的未来是什么样子呢?它甚至还有未来吗?
我要把讨论分为短期和长期两个部分。这些都是非常不同的问题。
短期:程序员的学徒时代即将到来
编程语言和IDE会发生什么变化?LLM有一个固有的准确性问题。因此,它们编写正确程序的能力有限。然而,它们可以提供模板或完成重复任务。此外,如果将它们包含在一个合适的封装架构中,可能会有助于解决这些限制。例如,考虑Hindley-Milner类型系统。如果AI能清楚地解释如何修复类型错误,那会怎么样?更好的是,如果它生成程序并确保其类型安全,通过反复与编译器交互,这样你就无需处理类型了?然后你可以阅读结果代码,看看你是否同意,但不必处理类型。Rust是另一种类型检查器很难使用的语言,但它提供了强大的保证。
沿着这个思路进一步发展,我们可能会考虑形式化验证。证明程序正确性是非常困难的。检查已知程序符合的正式规范可能更容易。另一个可能受益的领域是本地优先级软件。我一直主张为同步提供语言/平台支持。在这个领域,最困难的问题可能是解决合并冲突。也许我们可以让AI查看合并冲突并解决它们。这是值得探索的。或者,一种基于元数据的同步转换工具可能会写入所有的同步代码。总的来说,AI为我们提供了一种强大的新实现技术——人工智能,从而打开了新的语言设计选项。
未来的应用程序和用户界面
这是一个明显的步骤,我们将AI整合到Office、Google Docs等应用中。与之相反的是,我们看到应用程序通过插件的方式被整合到AI接口中。后者的意义更大。一般来说,我们可以看到传统的桌面/图形用户界