2024年8月18日星期日

安替老师教孩子学编程的一些感悟


安替老师教孩子学编程的一些感悟:

> 在培训凯恩编程的时候,我逐步体会到让孩子掌握编程,必须:1)让他理解程序只是在自动化人的解决方案,若人没思路,程序也做不出;2)理解CPU怎么想问题,一步步绝对不能有错误;3)在掌握编程语言后,然后再优化人的解决方案,去做一些人类因为物理限制无法去操作的事情。

安替老师第一点总结的特别好:“如果人没思路,程序也 写不出来”,如果再补充一句,如果你知道怎么写提示词,也许 AI 可以帮你写出来,但连提示词都不会写,那还是写不出来😄

顺便就这个话题发散一下,学编程,这里面的“编程”的概念其实是有点模糊的,既包括写代码,又包括写一个可运行的应用程序,前者重点是编程语言和算法,后者重点是软件工程。

代码相对来说简单的,类似于leetcode上的编程题,多数是在用程序解决算法问题,也就是安替老师说的“CPU想问题”,特定的输入得到与之相对的输出。比如说输入所有今天hackernews内容,按照点赞数量倒序排列,可以有很多种算法实现。而且算法都是现成的,我们不过选择一种排序算法。

但是这样的算法,对于普通用户来说,是没什么用的,用户需要的是应用程序,能解决需求问题的应用程序,而构建应用程序,需要的就不只是代码,而是软件工程。

工程的问题要复杂很多,代码只是其中很小的一部分。比如我要做一个hackernews这样的网站,用户可以点赞,每天按照点赞数量排序。

如果要做一个这样的网站:
- 先要定义需求;
- 然后去做简单的UI设计;
- 再是系统设计:什么系统架构?选什么数据库?前后端API是什么样的?什么编程框架?等等;
- 设计定了才好去 写代码,前端代码、后端代码。至于前面说到的排序算法,都不用自己去实现,用现成的就好,甚至于排序算法不够好在初期都不会影响用户体验;
- 程序写完了要测试
- 测试没问题了部署让用户可以访问
- 线上有问题还需要修复
- 程序还需要持续优化升级
- 至于营销推广甚至不在工程的范畴

而我们说学“编程”,以为的是写代码,其实是做工程,否则价值没那么大,并不能解决什么问题,更谈不上去解决人类物理限制无法操作的事情。

之所以我们很多时候感觉不到是在做工程而是 写代码,是因为现代化的团队分工协作,让每个人只需要专注于一部分工作,所以大厂程序员只要安心写代码,很多事情都有其他人分摊掉了,但是当你哪天要去当独立开发者,才发现要懂的不仅仅是写代码。

还有一个原因是现在优秀开源项目也多,很多时候拿一个可以运行的项目,稍微改改,只去改改代码,也能跑起来。

所以教孩子编程,要真能学以致用,要学的可不仅仅是编程语言和算法,还需要学习怎么构建一个程序。

最好的学习方式就是做中学,做一些解决自己或者家人朋友问题的小应用程序,比如浏览器插件、小工具什么的,做的过程中自然而然就学会了编程。

尤其是现在还有 AI 的协助,让 AI 搭一个基本的可运行的程序,再一点点去修改完善,有问题还可以随时咨询。

没有评论:

发表评论