我从事互联网行业,编程知识肯定得掌握一些。大学学的是土木,那时候学过 C++,不过已经过去三年了,所以还是想从头开始。这次选了泛用性最广的 Python。我知道 AI 时代有 AI 时代的新学法,但之前没试过,心里没底,最后还是买了传统的编程书来学。这个视频,就分享一下我的感悟。
温馨提示,这是我的学习报告系列视频,只分享最真实的学习感受和学习经验,不是教程,请勿奉为圭臬。
一、很多人说想学编程,其实想学的是软件工程
“学编程”这个词本身非常模糊。很多人说自己想学编程,但他们想学的可能并不是语法、数据结构还有算法,而是“怎么做出一个软件”“怎么开发一个网站”“怎么做一个 App”等等。
这里面至少可以分成几个层级。
第一层是基础语法,比如变量、循环、条件判断、函数、类、模块、文件读写、异常处理等等。
第二层是编程思维,比如问题拆解、OOP 的思想、算法背后的数学思维等等。
第三层是库与生态,比如数据分析用 pandas,绘图用 matplotlib,爬虫用 requests,后端用 FastAPI 或 Django,前端用 React 或 Vue。
第四层是软件工程,比如项目结构、版本管理、测试、部署、接口设计、数据库设计、协作开发、权限系统、异常处理、性能优化。
第五层是产品与业务,比如用户是谁、需求是否真实、功能是否必要、成本能不能接受、系统能否长期维护、项目是否具备商业价值。
很多初学者真正想学的其实是后面几层,尤其是软件工程和产品开发,却卡在第一层太久。花大量时间背语法、背函数、刷教程、做笔记,以为把语言学完就完事了——这肯定不对。
基础语法的学习应该越快越好。完全零基础可以稍微多花点时间,但如果你已经学过其他编程语言,就不该在基础语法上耗太久,因为这些基本结构是可迁移的。像我,因为有 C++ 的底子,这次基础语法部分大概花了 6 天,每天 1 到 2 小时。学完这些,就得赶紧去做项目了。
有人可能会说,还有数据结构和算法要学啊。确实,这些东西决定你的上限。但前期学习主要是保下限,而保下限所需要的那点数据结构与算法知识,靠 AI 已经足够了。
另外,学习过程中我还有一个感悟:Python 的库特别多,正因为太多,不可能也没必要一个个学完。尤其在 AI 编程时代,库、函数、参数、最佳实践都在不断变化。如果把学习重点放在背函数和参数上,永远追不上变化。
比知道“怎么实现”更重要的,是知道“什么是最佳实现”。
就比如那本编程书后面的“外星人入侵”小游戏,我实在做不下去。明明有 Unity 这种成熟的游戏引擎,为什么还要用 pygame?同理,Python 里有些看起来挺全能的库,本身并不是最佳实现方案。
所以我的观点是:AI 时代,最重要的是学习“可能性”。
二、AI 改变了编程学习,但没有取消编程学习
AI 编程工具的出现,确实极大改变了学习方式。智能 IDE、Agent、代码补全、自动 debug、命令行 AI 工具,都把实现功能的门槛大幅降低了。
但是,AI 降低的是实现门槛,不是理解门槛。
如果你完全不懂 WebApp,连 tsx 文件是什么都不知道,也不清楚前端组件、路由、后端接口、数据库、部署配置之间是怎么协同的,那即便 AI 生成了代码,你也判断不了问题到底出在哪儿。一个 bug,可能是前端状态管理的问题,可能是接口请求,可能是数据库结构,也可能是依赖版本或部署环境。没有基本的软件结构认知,AI 会给你一堆方案,但你很难看出哪个才是正解。
所以我猜想,AI 时代最好的学习方式,可能是找一个尽可能强的 Agent,比如 Codex 或 CC,让它在本地完整地跑一个项目。你全程跟着,它每生成一个文件,你就读一遍,遇到不懂的立刻问,搞懂了再往下走。当然,这个方法我还没试过,后面会去试试。
总之,你的学习应该尽快过渡到软件工程层面的项目制学习。这里的项目一定不能局限于个人小工具,最好是商业项目,不一定真要上线。因为商业项目会逼你面对很多个人项目遇不到的问题:登录注册、用户权限、数据库设计、接口设计、数据安全、支付、部署、监控、版本迭代、异常处理、性能瓶颈、多人协作、需求变更、成本控制、用户反馈等等。
三、编程不是天然存在的,而是人类为了解决问题发明出来的体系
我认为编程学习中还有一个非常重要的思维:编程以及整个计算机体系,都是人发明出来的。没有什么“天生就应该存在”的东西。每一条语法、每一种数据结构、每一个框架、每一项工程规范,背后一定有它被设计出来的原因。
比如,为什么要有 Git?为什么要有 Docker?为什么要有虚拟环境?……
也就是说,编程中每一个“可能性”的存在,背后都对应着某种需求。如果你能理解这种需求,你就可以把这种需求清晰地传递给 AI。
以上就是这次学习 Python 的一些简单感悟。