2023-03-13 能够自主编程的 AI 出现以后,还需要程序员吗?


同类问题,照相机出现以后,还需要画家吗?答案:不言而喻。

未来需要程序员吗

世界上第一台真正的照相机是1839年8月19日法国画家路易·达盖尔发明的,已经出现了接近 200 年了,比清朝灭亡的时间还要长,但是现在依然有无数的人学习绘画,以绘画为生,甚至教导其他人绘画。所以我认为能够自主编程的 AI 出现以后,学习编程依然是有价值的,还会有无数的人学习编程,以编程为生,甚至教导其他人编程。

如果你不信,去 Twitter,Instagram,Youtube 上搜索一下“绘画”就明白了。

未来的编程流派

我喜欢编程,编程有一种创造某种事物的成就感;我讨厌编写 CRUD 码,编写 CRUD 绝对是计算机时代的流水线工作,枯燥且乏味;我希望 AI 可以帮我完成所有的 CRUD 代码。没错我不仅仅不担心 AI 会代替我的工作,我恰恰希望这样的 AI 快点到来。

能够自主编程的 AI 出现以后,编程不再是高效又准确地根据设计稿和原型实现现实世界的需求。程序员的创造力将会得到进一步释放,程序员可能会发现更多有趣的方向,有更多时间编写表达内心的代码,进而出现更多的编程流派。

下面是 ChatGPT 告诉我的关于相机问世以后,绘画派别的发展。

相机的问世对许多绘画派别都产生了影响,但以下是一些在相机问世后得到进一步发展的绘画派别:

  1. 印象派:印象派艺术家受到相机影像的启发,试图捕捉光线和色彩的瞬间效果,这与相机的快门速度和光学透镜有很大关系。印象派的绘画技巧包括使用小笔触和鲜艳的颜色来表现光线和色彩的变化。
  2. 立体主义:立体主义艺术家试图将现实世界的三维形态转化为二维平面上的几何形状和线条。这种绘画风格受到相机照片的影响,因为相机可以将三维物体转化为二维图像,立体主义艺术家试图通过绘画来模仿这种效果。
  3. 超现实主义:超现实主义艺术家试图超越现实世界的限制,创造一种完全超越人类经验的想象空间。相机的问世为超现实主义艺术家提供了一种新的方式来捕捉和处理图像,他们使用相机照片和其他图像来创造出奇幻的场景和形象。

总之,相机的问世对许多绘画派别产生了影响,促使艺术家们探索新的创作方式和风格。

ChatGPT

我类比一下,未来的编程流派:

  1. 印象派:印象派程序员试图捕捉电子和数据的变化和流动,注重计算过程而不是结果。
  2. 立体主义:立体主义程序员试图编写多维代码,突破空间和时间的束缚,代码不再是自上而下编写,不再需要提前引入,甚至运行也可以更多中可能性。就像《降临》中外星人使用的图形语言。
  3. 超现实主义:超现实主义程序员试图超越现实世界的限制,创造一种完全超越人类经验的软件程序。未来是否会有一款软件程序,我们可以通过它窥探如《星际穿越》中多维宇宙。

未来的编程一定比现在更加有趣,有更多可能性,更能彰显人类的独特和创造力。

下面是 ChatGPT 的类似比:

如果AI能够自主编程,这将对编程工作产生深远的影响。类比于绘画领域中相机的出现,自主编程的AI将能够自动化许多编程任务并提高编程效率。以下是可能发生的一些变化:

  1. 更快速的开发周期:AI将能够自动化许多编程任务,例如编写代码和测试,从而缩短开发周期。这将使得开发人员能够更快地交付产品和服务,从而提高生产效率。
  2. 更高质量的代码:AI可以通过学习和自我改进来编写更高质量的代码。这将减少错误和漏洞,并提高软件的稳定性和可靠性。
  3. 更高效的协作:AI将能够自动化许多繁琐的编程任务,从而使开发人员能够更专注于设计和创新,而不是花费时间在重复性的任务上。这将促进更高效的协作和更快速的开发进程。

更高级的技术:自主编程的AI将能够学习和应用更高级的编程技术和算法,从而推动编程领域的进一步发展和创新。

总之,如果AI能够自主编程,这将使得编程工作变得更高效、更准确、更创新,并且可能会引领编程领域的新一轮革命。

ChatGPT

😂 AI 还有很长的路要走啊,难道人类会局限在“提高效率”这么窄的领域吗?或许 AI 暂时无法理解人类所说过“幸福”所谓何物。

未来的编程语言

如果编程工作不再是高效却准确的实现世界的需求,我们会使用什么编程语言开发软件呢?

参考《黑客与画家》中 100 年后的编程语言,我们不再需要考虑编程语言是否满足高性能或者容易控制内存;不再需要考虑编程语言是否流行或者是否拥有优秀的生态;我们需要考虑的是编程语言是否容易表达我们的思考。

我不认为英语、中文亦或是任何一种自然语言可以替代编程语言,自然语言常常过度冗余且容易产生歧义;当然数学、物理、化学一样的公式也不适合做编程语言,它们有过度简洁、抽象,且难以学习和掌握。未来的语言依然可能和现在的编程语言一样,在冗余和过度抽象之间达到平衡,并且容易表达程序员的思考。

简单的需求,自然语言太繁琐。

// Good
get(TJ, firstName) // Thaddeus

// Bad
Tell me TJ's first name, plz. // TJ's first name is "Thaddeus"

复杂的需求,现有的编程语言太繁琐。

// Good
我想要一个图像识别功能,当我的相机拍摄一个小动物,我希望知道小动物的品种,以及其他信息。

// Bad
import "xxxLib"
import "yyyLib"
import "zzzLib"

func main() {
  use xxxLib do something;
  use yyyLib do something;
  use zzzLib do something;

  return some useful information;
}

我们需要自由切换自然语言和编程语言。

// Better

我想要一个图像识别功能叫 whatAnimal,当我的相机拍摄一个小动物,我希望知道小动物的品种,以及其他信息。

meronkun = whatAnimal("meronkun.png") // data of meronkun

refs: