今年初,前哈佛大学计算机科学教授、谷歌工程总监Matt Welsh在《美国计算机协会通讯》上发表了一篇题为《编程的终结:经典计算机领域正迎来剧变》的文章,一经传播,就引发了广泛热议。Matt Welsh在文中抛出了一颗“重磅炸弹”—“编程将被淘汰,我相信‘写程序’的传统观念正在走向消亡”。他认为,今后大多数软件都将被经过训练的人工智能系统取代,未来的程序将由人工智能自动生成,而不再依靠手工编码。
这篇文章发表的时候,AIGC刚刚兴起。短短几个月后,文中的观点似乎正在被某种事实印证。有分析表明,编写程序是ChatGPT最擅长的工作之一,当下,人工智能辅助编程渐成趋势,诸如ChatGPT、Copilot、Cursor、CodeGeeX等辅助编程工具逐渐兴起,已有大量的程序员通过人工智能辅助编程。
但教育人毕竟不是程序员,当我们谈论“编程终结”这一观点的时候,我们关心的其实是“假如编程终结了,那么编程教育将何去何从”。对于这个问题,倒是值得我们严肃对待,并认真思考一番。
首先,人工智能“终结”的到底是什么?从目前来看,至少在可见的未来,人工智能“终结”的还是那些重复、单调、冗长的代码编写工作,而那些更具创造性、复杂性、多样性的任务,还必须依靠人类的智慧。况且,“写程序”从来也不是编程的全部,编程就像一个系统工程,从需求分析、系统架构,到运行调试、协作沟通……是技术能力、分析能力、人际沟通能力、判断力等多种能力的综合。
其次,尤其需要我们厘清的是,基础教育领域编程教育的目标是什么?显而易见,编程教育并不是直接培养码农的,那么,通过编程教育,我们试图培养学生的哪些能力或素养呢?对于这个问题,新课标已反复为我们指明了编程背后的东西—运用合理的算法形成解决问题的方案、发展计算思维、培养解决实际问题的能力等等。可见,编程教育关注的始终是思想方法、思维过程以及实践能力,相对而言,“写程序”这一具体行为只是通向这些目标的桥梁。假使“写程序”的过程被人工智能替代,反而可以将学生从枯燥、机械的重复性工作中抽离出来,更加聚焦各种思维、能力的发展。
“编程的终结”是一个好问题,它促使我们深入思考基础教育领域编程教育的目标,只有弄清了“为什么教”,才能明确“教什么”和“怎么教”。