关于计算机科学的一些思考
我以前(上大一的时候)一直认为,自己应该看重的核心竞争力是熟练地运用各种语言、快速地写出来漂亮的代码的能力。
于是,从大二上学期开始,我开始学习Java,到JDBC,到图形界面,到HTML、CSS、JS、JQuery,Servlet、Jsp,到SSM框架,从几百行的学生管理系统,到1k行的2048小游戏,到3k行的图书馆管理系统,到现在10k行的个人博客。写的代码越多,我越感觉自己能在“写代码”这个过程中得到的能力的提升越少。
也可能是随着学习的课程的增多,随着我对这个学科的深入学习,我对“调用接口”这个行为越来越有一种轻飘飘的感觉,我越来越想进入接口的内部,去看看他的内部到底是如何工作的。
组成原理课上,老师的一句话和我的想法不谋而合
计算机科学的学生,应该能做到自己设计CPU、指令系统、编译系统、操作系统,在学完整个学科体系之后应该能做到在自己“生产”的CPU上运行自己的操作系统。
他说这句话的时候,我估计我是处在一个两眼放光的状态。
因为我觉得计算机是一个很令人震撼的东西。
从一个个小小的开关,到门电路,到解码器、译码器、触发器,到CPU、主存、IO、外设,到总线结构,到整个计算机体系结构,到计算机上的各种软件系统,到各个设备的互联,到整个互联网和物联网。
从渺小到宏大,有一种说不出的,奇妙的感觉,这种感觉能提供给我继续学习下去的动力。
我不是在学习一个一个的学科,我不是在学习一个一个“点”。
我是在建设自己脑海中的计算机科学体系,是在为自己心中的计算机科学大厦添砖加瓦。
这种感觉就像是在拼拼图,我一直在找拼图的碎片,在找到之前我只能大概知道这块拼图是在什么位置,只有找到了这块拼图,我才能将其放在已经搭建好的拼图框架中去,将其一步一步地放回他应该在的地方,组成一幅宏大的计算机科学画卷,然后,去创造更大的画卷。
这是我的知识,我的专业,我的核心竞争力,在计算机行业几乎0门槛的今天,这也是区分我们和培训班学员的方式。
接下来谈谈我对能力的理解。
所谓教育,就是一个人把在学校所学全部忘光后剩下的东西。
——伯尔赫斯·弗雷德里克·斯金纳
随着我对计算机科学的学习,我开始下意识地在学习中寻找学习的方法,开始刻意地在学习中提升自己相关的能力,不再是被动地接受“应该是这样”,而是主动去思考“为什么是这样”
往更远处想,对于每一个学科,每一个领域,是不是都存在一套学习方法,能让我逐渐构建起整个学科体系,这仍需要我的进一步学习。