很多人打开编辑器第一件事就是学习先学问:我该学哪门语言?这个问题问反了。真正该先搞清楚的编程,是学习先学你想拿编程干什么。
我见过两个同时起步的编程人。一个花两周把Python语法背得滚瓜烂熟,学习先学能默写列表推导式,编程却连一个自动整理桌面文件的学习先学脚本都写不出来。另一个连函数是编程什么都说不清楚,但第三天就写了个十几行的学习先学脚本,把下载文件夹里几百张图片按日期分好了类。编程差别不在于谁先背会了语法,学习先学而在于第二个人先弄明白了“我要解决什么问题”。编程
编程的学习先学本质是拆解问题,不是编程背诵规则。语法只是学习先学表达方式,像学外语,你会再多单词,不知道怎么组织成一句话去点菜,照样饿肚子。所以第一步不是打开教程从第一章看起,而是找一个你每天都会遇到的、小到不能再小的麻烦。比如你每次写周报都要手动统计这周改了哪些文件——那就写个脚本去读文件夹的修改时间。这个目标足够具体,具体到你写不出来的时候,能明确知道卡在哪一步。
有了目标,接下来要学的东西其实很少。变量、条件判断、循环、函数,这四个概念覆盖了绝大多数日常脚本的逻辑骨架。数据结构先放一放,类和多态更是以后的事。你不需要在第一天就理解“面向对象”,就像你不需要在学骑自行车之前先搞懂齿轮传动比。我当初写第一个能跑的脚本时,连字典和列表的区别都说不利索,但这不影响我把事情做完。做完之后回头再看,那些概念自然就清晰了。
选语言这件事,别纠结。Python能做的事,JavaScript也能做,只是场景不同。你如果想让电脑帮你处理表格、爬点数据、自动化重复操作,Python的库多、写法直白,适合上手。你想做网页、做可视化、让东西在浏览器里跑起来,JavaScript绕不开。选一个,装上环境,写起来。换语言的成本远比你想象的低,真正值钱的是你拆解问题的能力,不是某门语言的冷门语法。
有个坑我得提醒你:别一上来就装一堆插件、配各种环境、研究IDE的快捷键。这些事带来的“我在学习”的错觉特别强,实际上跟编程本身关系不大。用最朴素的编辑器,命令行能跑就行。等你觉得工具拖累你了,再换。这个顺序反过来,容易在配置环境这一步就耗尽耐心。
还有件事,读代码比写代码重要,但读的是你写得出来的那种代码。别去啃开源项目的源码,那就像刚学会加减法去读微积分教材。去读你自己三天前写的脚本,试着改一改,加个功能,或者用另一种写法重写一遍。这个过程里你会主动去查“怎么把两个列表合并”“怎么判断文件是否存在”,这种带着问题的搜索,比从头到尾看教程效率高得多。
最后说一个我自己的判断:学编程最难的从来不是技术,是忍受“我写的东西很蠢”这个阶段。你写的第一个脚本可能丑得没法看,变量名全是a、b、c,逻辑绕来绕去。没关系。能跑起来,能解决你那个小麻烦,它就是好代码。先让它跑,再让它好看。这个顺序不能反。