语言、库、框架,是现在程序员必须掌握的技能,只有这样才能顺利地开发出软件产品来。那么这三者到底是什么关系呢?程序设计和盖房子很相似,所以我就以盖房子为例,描述一下这三者的关系。
语言:
学习程序设计最早接触的应该就是编程语言了,如果把程序设计比作盖房子,那么编程语言就是土,水泥,沙子,钢筋,它是构成房子的最基本的要素。
每次盖房子都要先建立梁和柱,再把土烧成砖,最后垒墙,建造者不仅要学会如何建立梁柱,烧砖,还要学会垒墙,所以盖房子的速度很慢。当然这个时候的建造者需要的技能是最全面的,既是架构师,又是设计师,又是码农。
函数库/类库:
一个人身兼数职既不专业又会降低效率,于是一部分人专门负责烧砖,函数库可以看作是砖,有了砖我们就可以直接垒墙了,而不用自己把土变成砖。
不用烧砖了,工匠们可以专心垒墙,垒墙的速度和水平提高的很快。而烧砖的也可以专心烧砖,烧砖的速度和水平也很快提高了。
框架:
后来平房满足不了人们的需要,人们需要盖楼房,采用盖平房的方式盖楼房太慢了,于是就有人专门研究楼房的框架结构,于是现在就有了框架结构的建筑方式,有人专门负责搭建框架,有人专门负责继续在梁柱之间垒砖,当然还会有人继续烧砖。垒砖的可以不必考虑结构问题了,因为由框架结构解决了。
总结一下,有三种分工:
1. 用语言设计和实现类库的
2. 用语言和类库设计和实现框架的
3. 用语言、类库和框架设计和实现最终产品的
其实还有一种分工,被人们忽略了
0. 设计和实现编程语言的
每个分工,又分为设计与实现。分工逐渐细化,既是为了效率,也是为了质量。
设计者一定要懂得实现,但实现者就不一定都懂得设计了。