编程的进退两难

发布: (2025年11月30日 GMT+8 05:06)
7 分钟阅读
原文: Dev.to

Source: Dev.to

Catch-22

  • 只有熟练的程序员才能引导 AI 创建优秀的软件。
  • 要成为熟练的程序员需要很长时间的学习,首先是长期的入门级简单编码。
  • AI 正在抢走入门级程序员的工作。

成为程序员

在计算机早期,成为程序员的路径很直接:你只要去做。培训课程几乎不存在,学习主要来自教材和数据手册。那些有动力坚持下来的人就成了专业程序员。

后来,信息变得更加丰富。随着电子邮件和万维网的出现,人们可以随时提问、阅读文章,而不必等书籍寄到手中。几乎所有主题都出现了课程。

然而,软件也变得更加复杂。大量工具和库变成了必备,招聘信息里充斥着缩写,许多应聘者感到自己的努力徒劳无功,因为目标始终遥不可及。


使用大语言模型(LLM)编程

AI 让程序员的生活似乎再次变得简单。再也不需要记住库里每个函数——只要向 AI 提问即可。但当我们习惯了这种新工作流后,AI 系统开始抢我们的工作,现在我们常听到“所有编程很快都将由 AI 引擎完成”。

如果真的让 AI 编写软件,输出往往只是一份原型,通常不适合作为成品交付。要确保产品质量,你必须:

  1. 编写一个万无一失的提示,准确描述你的需求。
  2. 从头到尾紧密监控整个过程。
  3. 强制执行良好的工作实践,边写边测试所有内容。

只有称职的程序员才能做到这一点。因此形成了 Catch‑22:

  • 要得到好产品,需要专家正确驱动 AI。
  • 因为 AI 正在接管枯燥的编程工作,少有人愿意花时间成为专家。

如果你不自己写代码,就永远学不会发现 AI 错误,也不了解编程语言的能力和最佳使用方式。


关键所在

局面仍在发展中,但随着顶级程序员供给枯竭,这一问题会迅速变得严重。AI 生成的产品往往停留在原型阶段,未完成且不符合用途。


我们有哪些选择?

问题的核心在于我们如何与计算机交流。基本上有两种途径:

1. 传统高级语言

使用 C++、Java、Python 或其他主流语言编写代码。随着 AI 接管低层代码,掌握这些语言的人数将会下降。

2. 自然语言(例如英语)

AI 使得通过自然语言进行编程成为可能,但人类语言本身就具有歧义。AI 可能会按照它“认为”你想表达的意思去解释,而不是去质疑歧义,从而导致细微或严重的错误。

软件可以分为 工具(操作系统、库)和 产品(使用这些工具构建的应用)。开发者常常对两者使用相同的语言,尽管它们需要完全不同的表达方式。用英语描述的计算机算法显得笨拙;在英语中完美通顺的业务规则,转换成 Python 或 Java 时却变得难以理解。

即使自动化程度很高,熟练的工具制作者仍然是必需的。人脑能够产生机器无法匹敌的洞见。当前的瓶颈是缺少一类能够清晰表达需求、在未经过长期学习传统语言和工具的专业使用者的情况下就能指导 AI 的编码者。

有些人擅长表达清晰的逻辑——比如律师,他们使用一种高度受约束、毫不含糊的英语。也许我们需要一种同样受约束的语言来指导 AI。


示例

假设我们想创建一个带窗口用户界面的新桌面应用。我们决定使用 Python + PySide 进行图形开发。该应用应模仿传统网页布局:中心数据区、左右侧栏、标题栏和页脚。它包含一个菜单栏,菜单里只有“关于”和“退出”两个条目。

期望布局(示意)

App layout 1
App layout 2

AI 提示(万无一失、毫不含糊的形式)

Using PySide6, create a main window with the following attributes:
- Location: 100,100
- Size: 640,480
- Title: My New App

The window contains 3 rows:
1. First row: panel taking 20% of the window height, containing a label with the text “Header”.
2. Second row: occupies the remaining height and contains three elements:
   a. Left panel: takes 20% of the window width, with a label “Left”.
   b. Center panel: takes the remaining width, with a label “Center”.
   c. Right panel: takes 15% of the window width, with a label “Right”.
3. Third row: panel taking 15% of the window height, containing a label with the text “Footer”.

Menu bar:
- Single “File” menu with two items:
  * “About” – when clicked, shows a simple dialog.
  * “Exit” – when clicked, terminates the app.

这个提示故意写得很冗长,以避免歧义。没有编译器来解析自然语言规格时,措辞的严谨——只有经验才能提供——至关重要。否则错误可能悄然出现,且在需要更改时可能要大幅重写代码。

Back to Blog

相关文章

阅读更多 »

第1276天:职业攀升

星期六 在前往车站之前,我在当前的副项目上写了一些代码。取得了相当不错的进展,然后该出发了。Made i...

无状态 AI 应用背后的架构

项目一开始就做了一个看似冒险的决定:不使用后端数据库。当时并不需要持久化用户数据——获取用户的响应就是……

失去信心

请提供您希望翻译的文章摘录或摘要文本,我才能为您进行简体中文翻译。