人工智能时代如何对待编程

有人想学程序设计,我想跟他说这个时代编程没用,软件已经快被淘汰了。但是忽然想到一点理由。

大语言模型在编程领域的能力迅速提高,所写出的程序质量也迅速提高。从某种意义上来看,中大型项目中大语言模型的编程能力已经超越了人类。在我们这个时代,人们必定会质疑是否应该继续学习编程技术。

如果编程对于我们来说是一种工作的需要,那么我认为几乎没有必要学习,除非我们有需要制作非常大型的项目,其规模大到大语言模型无法处理。

对于工作者来说,在最短的时间内写出合格的代码是工作的目标。那么在这种情况下,学习编程是一种浪费资源、精力与时间的行为。

然而在我看来,编程是具有另外一种力量的。编程蕴含着有用的思想。当然这个说法不够准确,更准确的说法是:程序设计蕴含着有用的思想。下面的4个例子也许能支持我的观点。

1

我们知道在程序设计中,程序员总是倾向于一些逻辑封装成一个模块。这种做法能够极大的提高程序设计的灵活性,代码复用性。我认为这就是一种思想的体现。我们可以通过一个例子来体会这种思想。

比如一个程序包含着大量的数学运算,然后程序设计者观察到,其中存在着大量的步骤需要将一个数平方 ,然后再传递给下一个模块。同时程序设计者观察到,这些平方 操作在未来可能会变成立方操作,甚至是4次方等等。

那么他有可能会将这个平方操作封装成一个函数。然后再把这个函数嵌入到原来使用平方操作的地方。这样做当然会引入几个好处。

  • 当以后需要修改平方操作为其他操作时,只需要将函数修改即可。
  • 如果未来需要将平方操作改为其他更复杂的数学运算,那么只需要保证输入与输出不改变,则函数体可以任意调整。提高了程序的灵活性。

这里面隐含了什么思想呢?

  • 对相似本质的敏感。程序员必须要能够敏锐地注意到平方操作在程序中频繁出现,非常独立,不受影响。
  • 远见。程序员。必须要预见到未来这个平方操作可能会被其他操作所取代。

在我看来这两种思想非常重要。对相似本质事物的敏感能让我们从纷繁的现象中注意到事物的本质。

在编程中养成的远见则有利于我们在工作的过程中,不仅注意到某个操作的当下的使用方式和用途,还会注意到其未来可能发生的变化,于是习惯于做好准备。

2

另外一个例子是,程序员在调试程序的过程中,如果发生了错误,那么他们通常会使用一种断点测试法。他们会让程序在某一个点停下来,然后从内存中抽取一些变量进行观察,检查这些变量的值是否符合预期。

  • 如果一个程序包含大量的过程,那么程序员通常会将这些过程分成两半,先检查其中一半的。
  • 如果这一半的输出符合预期,那么说明错误很可能隐藏在另一半。对于另一半,则又将其分为两半,再执行相同的检查。

这也隐含一种有力量的思想。我把它称之为分治思想。

拥有这种思想的人,在面对复杂的困难时,可能更倾向于将复杂的事物分成小的部分,然后逐个解决。

他们能够缩小问题的规模,并在解决了问题之后,又能回到原来问题的视野而不被局部困难所困扰。这也是一种弹性的视野。

3

我想提出的第3种思想,隐含在下面的过程中。这特别体现在一些非常复杂的过程。我们设想有以下的场景。

在两个设备之间需要通信。然而最底层的芯片上的接口只能够支持一次发送一个比特(信息量的最小单位)。而通常需要发送的数据包含上百万个比特。

如果程序员要直接使用芯片上的接口对这些数据进行发送,那么工作量显然是巨大的。因为通常实际情况下要处理数据流量不能过大发出去的数据要检查是否正确收到等等问题。他们需要处理每一个比特。

程序员通常不会这么做。他们会使用分层的办法。

  • 首先写一个第1层程序模块,这个模块非常简单,但是能控制芯片连续发送10个比特并检查是否正确发送。
  • 然后在这个第1层模块的基础上编写另一个模块,这个第2层模块能够一次性调用上面的模块10次,发送10个组,每个组包含10个比特,并且保证这10个组是按顺序发送的。
  • 然后在第2层模块的基础上编写第3层模块,这个模块能够将要发送的数据分割成一个一个的组,然后传输给第2层的模块。同时,它能够控制发出去的组,不会造成太大的数据流量,以便防止网络塞车。

我们看到

  • 第2层模块对于第1层模块做了什么事并不关心,他只知道第1层模块可以把10个比特都发出去。第2层模块只用关心怎么样把数据按顺序传出去就行了。
  • 第3层模块对于第2层模块做了什么并不关心,他只知道第2层模块可以将10个组发出去。第3个模块需要知道如何控制数据流量不要过大就行了。

从上面的例子可以看出,这也蕴含这一种非常有力量的思想。这种思想把一个非常复杂的过程,分成1层1层的。每一层都只需要关心他们所需要关心的工作,然后不同的层连接起来,就能够完成非常复杂的工作。而不用担心每一层的工作过于复杂。

4

当然,程序设计中还有非常多的有力量的思想。

比如封装的思想。

将一些数据和这些数据对应的操作装在一起变成一个包,然后让这个包自己管理自己的数据。

这类似于社会中将不同的事务分成不同的部门。每一个部门只需要知道如何使用他们的合法权力处理他们要处理的人和事即可。

而领导者只需要站在高的位置控制这些部门,就能够完成非常复杂的协作。

当然,并不是只有程序设计才能训练这些思想。然后呢,一个熟练的程序员一定会在不断的练习中,不知不觉的强化上面的思想。不管这些思想是否真的有用,我都认为经历这些思想的洗礼,是一种美妙的过程。

这些程序设计的思想让我们以不同的眼光看待事物,让我们以不同的视角注意问题。所以我认为作为一个学生,虽然人工智能已经完成了从自然语言向代码的翻译,就像人工智能完成了从中文到英文的翻译一样,但是学习程序设计和学习英文都是一样有必要的。

因为在学习这些的过程中,我们的思想会受到影响,而这是一个美丽的过程。

相关推荐
Datacarts1 小时前
亚马逊爆款选品:数据采集与三方服务商对接
开发语言·人工智能·python·信息可视化
田井中律.1 小时前
知识图谱实战(BILSTM+CRF)【第五章】
人工智能·知识图谱
美林数据Tempodata2 小时前
高质量数据集建设与 AI 应用落地:四大范式及最佳实践
人工智能
Roselind_Yi2 小时前
多模态数据挖掘前沿:生物医学与情感分析领域论文深度解析
人工智能·python·数据挖掘·nlp·gnn·情感分析·loss
码农三叔2 小时前
(11-4-02)感知-运动耦合与行为理解:人形机器人沉浸式感知运动协同系统(2)人形机器人运动控制
人工智能·机器人·agent·人形机器人
会一点点设计2 小时前
怎么用AI生成LOGO:从概念到落地的完整指南
人工智能
幂律智能2 小时前
合同管理的控制逻辑:现状、问题与重构方向
人工智能·经验分享·重构
EF@蛐蛐堂2 小时前
【AI】手写openclaw的Skill全过程
人工智能
唐天下闻化2 小时前
2026知识付费平台选择指南:学习者与创作者如何各取所需
人工智能