2015年,澳大利亚,我坐在人生第一堂编程课的教室里。老师开场就讲“类与对象”。我脑袋里第一个诚实的想法是:我们不是已经在“班级”里了吗?她说的“类”到底是什么?我没敢说出口,只是像所有不想露怯的人一样点点头,把毫无概念的词抄进笔记本。

回头看,那位老师恐怕也没真正吃透自己讲的内容。那不是真正的大学,而是一个培训机构,“编程”只是被塞进整套课程里的一个模块,教课的人本身也不是以软件开发为业。屋子里没有一个人能给出像样的解释,但当时我并不明白这些。我只知道:别人好像都跟得上,而我早就掉队了。

打开网易新闻 查看精彩图片

班上有一个男生,其他科目都很普通,但曾经在一所正规大学里学过一年计算机。所以在这个话题上,他知道一些我们其余人根本不知道的东西。每次他回答问题,我都在心里记下那些术语;每次课后作业,我都靠复制粘贴他的代码度日。

六个月里,我抄了不知多少自己看不懂的代码。奇怪的是,作业居然都能过。直到某次编程作业,老师要求我们从头写一个简单的“班级系统”,不能用抄来的模板,也不能照搬书本。我盯着空白的编辑器,发现自己连“对象”到底保存了什么、方法为何要定义成那样都说不清。那一刻我才意识到:之前我根本不是在编程,只是在模仿“别人会编程”的样子。

那天晚上我终于翻开课本和课堂笔记,从头追到那个“类”。我没有去背定义,而是把一个学生、一门课程、一次成绩都当成真实的对象来写代码。突然,那些抽象的概念变得具体了:类不是教室里的“班级”,它是制造对象的图纸;对象不是概念,而是带着状态和行为的实体。原来这么简单。

这段经历让我明白:初学者的落后感,往往不是能力问题,而是讲解的问题。真正该记住的,不是第一课讲了什么,而是当你不懂时,敢不敢承认,并愿意从“抄”走向“写”。