APP下载

从“学编程最好从汇编开始”说起

2024-08-29谢作如

中国信息技术教育 2024年16期

“学编程最好从汇编开始。”某位自称有计算机背景的领导在一次活动中对我们输出了这样的观点。真的吗?我估计绝大多数的信息科技教师都不会认可这一观点。但是,如果我把这个问题更换为“学编程最好从C或者C++开始”,估计有些教师就开始动摇了。

据了解,迄今为止,国内还有个别地区的初中信息科技教材使用C++,而高中信息技术教材则普遍使用Python,这导致出现了少见的难度“倒挂”现象。仁者见仁,智者见智。在这里,我不想深入讨论哪一种语言更适合中小学,只想说一个事实:在图形化编程之前,国内做儿童编程的几乎是凤毛麟角,而现在信息科技课标中都已经加入“身边的算法”这一学习内容,放在小学阶段。

以史为鉴,我们若是站在编程教育发展史的角度去“预测”人工智能教育,也许能有新的思考和认识。高中信息技术课标组专家推荐Python,其中有一个重要原因是Python属于非程序员的编程语言,毕竟编程教育不是为了培养专业的程序员。同理,中小学人工智能教育的目标显然不是把每个孩子培养成人工智能算法研究员,因为那绝对不可能做到。为什么不让孩子们先学会使用SOTA模型,如同调用Python库一样调用现有的算法呢?

这几年,我常常呼吁新一代人工智能教育要重点关注深度学习,要学会用训练模型解决真实问题。但有些专家认为仅仅调用SOTA模型并没有真正理解模型背后的数学原理。也许他们跟那位持“学编程最好从汇编开始”观点的领导一样,最早是从理解最小二乘法、梯度下降之类的底层数学原理开始理解人工智能,下意识认为这些是不可越过的基础知识。实际上,如果不是为了成为算法研究员,学习人工智能并不需要先学习数学,正如学习计算机不需要从“与或非”开始一样,连DOS命令都可以跳过,也如同学习互联网应用不需要先理解哈夫曼编码和傅立叶变换一样,连协议都可以先忽略。

机器学习、深度学习真的很难吗?人工智能的学习难度,取决于其使用的工具。布鲁纳有句名言:“任何学科都能够用在智育上是诚实的方式,有效地教给任何发展阶段的任何儿童。”大部分中小学生的确无法理解微积分,无法理解梯度下降,但不等于他们无法用人工智能解决真实问题。先普及,然后吸引学有余力的孩子继续探究,这才是青少年人工智能教育的正确路径。