Viewing 1 reply thread
  • Author
    Posts
    • #3650
      无漪
      Keymaster

      • #5030
        Peter Peng
        Participant

          之前写的一篇文章,贴上来了


          最近看到很多网红、大 V 都在劝各位当爸妈的不要让自己的小孩再学习编程了,理由也很直接,就是现在 AI 发展的如火如荼,将来的编程工作大概率会被 AI 取代,学习编程没有任何的意义。站在风口浪尖的 NVIDIA CEO 也说,我们的工作就是让大家不用再去学习编程,不用再去学习诸如 C++,Java 一类的编程语言。

          我想说上面这些人要不就是有自己的利益取向,要不就是不懂编程。我们不能根据 AI 发展的好坏来决定你自己或者你的小孩是否要学习编程,为什么?我们慢慢讲。

          首先,我们先要搞清楚什么是编程,编程并不是简单地对计算机输入指令。一段程序的实现,一个软件的上线背后其实包括着各种各样的人为行动。就拿做一个软件项目为例,这个软件项目从发起到完成大概会有下面这些步骤:

          1. 我们首先是需要弄清楚需求,也就是了解这个项目是要做什么
          2. 我们会根据需求来做一些规划,包括但不仅限于选择合适的技术、规划项目完成的时间、做一些风险评估(比如没能按时完成该怎么办)以及所需要的资源
          3. 然后我们会根据上面的情况来进行软件设计,这里有包括整体架构的设计、代码框架的设计、系统设计、算法和数据结构的选择等等
          4. 等上面这些都差不多弄清楚了后,我们才开始写程序来实现我们前面计划好的东西

          这四个步骤其实是一个有机整体,缺了任何一个环节都会对最后的产品造成影响,而很多人会认为说这里面只有第 4 步是编程,这其实是有误解的。就好像素描,你得先确定你要画什么,然后你需要构思,还要构图,等这些都做完了后,你才开始作画,作画并不代表素描的全部,这和实现程序不是编程的全部是一样的道理。

          那是不是说 AI 就可以完全替代第 4 步了呢?也不是,AI 通过代码生成、自动补全等功能确实可以让这一步骤变得更加友好,但是它不能完全替代你去做这一步骤,因为一个软件项目是极其复杂的,它的复杂很大程度在于后期的维护和拓展。假使说 AI 有一天变得非常牛逼,你把你的想法和设计告诉它,它分分钟就能把代码生成出来,你扔到线上就能运行,那么日后有新的需求进来了,AI 能继续帮你更改吗?你突然发现你线上的程序的 CPU、内存或其他资源消耗过高,AI 能继续帮你优化吗?有一天你的网站被 DDOS 或黑客袭击,AI 能帮你化解吗?很明显,上述这些问题都不是 AI 能解决的,因为这些问题的背后都有着无穷无尽的可能,这些问题都需要结合实际情况来分析。如果上面这些问题 AI 都能帮你解决,那我也有理由相信 AI 可以帮你自动生成一个比 Linux 更好的操作系统、写出一本比莎士比亚文集更美的作品、精准预测股市楼市债市、精准预测未来。。。如果有一天这些都实现了,编不编程显然已经不重要了,人类社会存在不存在都是个问题。

          由此可见,AI 只能做一些简单的代码生成,并且还是撒手掌柜,做完还需要你给它擦屁股,不然代码放到线上出现了故障,你就没辙,你最终还是得去看去弄懂这些 AI 生成的代码,不然问题解决不了,那这比自己写好在哪呢?并且,我相信每一个学习编程的人,都希望自己能够通过学习编程来写出长期稳定且可维护的软件,而不是写一个连 AI 都知道怎么写的软件。

          其次,学习编程的一个很重要的目的是训练人的思维方式。可以看到,编程其实就是帮助我们把我们脑袋里面的想法落地,它告诉我们,我们的想法哪些是可以实现的,哪些现阶段是不能实现的,我们通过学习编程,来改善并优化我们脑子里的想法,让这些想法贴近现实,最终可以被实现。编程之所以有价值,就是编程背后的这个思维方式比较接地气,每个人都有自己的想法,每个人都可以通过学习编程来让自己的想法落地,创作自己的作品,以至于改变人们的生活方式,改变这个世界,这和数学、物理这样的理论学科有着明显的不同。

          要学习这个思维方式,就需要去学习计算机相关的各种知识,比如操作系统、网络、算法和数据结构以及设计模式等等,这些知识会使我们的想法更有逻辑,想问题更加的严谨,而不是天马行空的瞎猜瞎试。你可能会觉得这些东西不属于编程的范畴,但是你在编程的过程中无疑例外都会或多或少涉及到这方面的知识,你的思维框架也会因为学习了这些东西而变得有所不同,考虑问题更加的全面,写出来的程序更加的稳定,写程序的效率也会提升。其实编程改变我们的还远不止这些,就拿 Debug(错误排查)为例,我们需要学习如何定位问题,如何以代价最小的方式来修复线上故障,如何找出问题的根源,提出好的方案从流程上规避类似的问题。这些东西看似和编程没有关系,但是哪一步脱离的了程序?

          编程教给我们的是一个思维框架,或是思维方式,使用 AI 没法替代这个思维方式,更没法让这个思维方式贬值。AI 有可能降低编程的门槛,让人们更容易地学习编程,但是它没可能替我们思考,更没可能帮我们创新。

          另外,编程就是一个兴趣爱好,是人类探索世界的一个工具。奥数、画画、弹琴以及唱歌也是兴趣爱好,如果说编程会被 AI 取代,孩子从小最好不要接触,那是不是说前面的这些兴趣爱好孩子也从小最好也不要接触?对于奥数这种有着标准答案的科目,可能都不需要 AI,普通计算机都能替代,美术和音乐就更不用说了,人弄出来的东西总有瑕疵,那比得了机器弄出来的东西。按照最开始说的 AI 替代理论,你会发现在 AI 下面,现在孩子上的一切兴趣班,发展的兴趣特长都没有任何的价值。很多家长可能会说,这些东西能提升孩子的智力,能让孩子发现事物的美,让孩子拥有解决问题的能力,那难道说学习编程就不能提升这方面的能力?我们前面也说了,编程的世界很大,可探索的东西很多,孩子完全可以从编程中获得各种能力。

          其实很多东西都是人类探索世界、感知世界、到最后理解世界的一个工具。就拿画画来说,最早可以追溯到人类起源的阶段,距今几万年前,从最早在墙壁上作画,然后在各种器具(诸如青铜器、铁器、瓷器)上作画,后面在的纸上作画,现在直接在电脑上作画,不光这些,相机的出现也极大地改变了人们作画的方式。按道理来说,有了电脑,有了相机,我们完全可以不需要传统的作画方式,可现实是怎么样的呢?现在的手工画不但没有消亡,而且变成了一门学科,一个专业,里面种类繁多,有素描、水彩画、毛笔画、油画、彩铅、抽象画等等,其中每一类又可以往下去拓展,比如说素描可以分为写实和写生,这还没完,甚至很多很古老的作画方式都被保留下来了,比如说涂鸦画就是在墙壁上作画,景德镇之所以出名是因为它的瓷器,而瓷器上精致的画才是重点。不管你用的是什么样的作画方式,你其实都是在探索和感知这个世界的美,作画只是一个媒介,一个工具,而这个过程中你的体验才是与你真正有价值的,除了画画,我们还可以通过其他方式来感知这个世界的美,比如音乐,殊途同归。

          在编程的过程中,我们可以感受到这个世界的奇妙,感受到这个世界的丰富多彩,这就很有价值。AI 可以替代我们去做事情,但是永远也替代不了我们去感受这个世界。

          还有,AI 说到底也是程序。很多人反复强调 AI 会替代编程,AI 会替代人来写程序,但是忘记了 AI 本身也是一段程序,也是一个软件,也是一个产品。如果大家都不用编程了,AI 程序谁来写?AI 自己吗?这不自相矛盾吗?既然 AI 也是程序,AI 也是产品,那么编程领域的知识也可以用来创建 AI,比如需求分析、软件设计、操作系统、网络、数据结构和算法、部署以及线上维护,AI 产品的实现和稳定运行离开的了这些东西吗?很显然,AI 一样要依赖于这些编程与计算机领域的基础知识。由此我们也可以得出,学习编程其实就是学习并了解 AI 的一个好方式,AI 发展的越好,我们就越应该学习编程。

          并且我还相信,AI 提供了一个筛选机制,筛选掉那些只会 copy paste,只会模仿,没有思考,不知进取的程序员,而剩下的真正懂编程的程序员就会变的更有价值,编程以及计算机世界也将在 AI 的加持下变得绚丽多彩,让我们拭目以待。

           

      Viewing 1 reply thread
      • You must be logged in to reply to this topic.
      error: Content is protected !!
      Scroll to Top
      error: Content is protected !!
      Scroll to Top