昨晚简略看了一下锤子科技在鸟巢的发布会,其中令我印象最深刻的是罗老师引用乔布斯一段话,大意说直接用手势指出位置(看,在那儿!),比用文字描述(衣领下15公分,第一个扣子右边3公分出有一滴墨水)效率更高,更简单。这句话让我认为在学习中,通过文字总结、嗅探出作者想要表达的事实,才是学习的最终目的,偏离了这个目的,基本上效率都不会很高,甚至背道而驰。基于此,我开始retrace这些年在学习过程中是否是这样做的。我相信任何事物从根上都是简单的。
在这里,我先尝试着梳理下自己对计算机的理解。在最初,人们希望造一台机器,给输入数据,给出想要的结果,免去人工计算的低效与失误,这台机器可以想象为一个计算盒子,有进有出,至于内部怎么实现,使用者可以不用管,保证使用简单。这是计算机的出发点和简单根模型。
计算盒子如果想要细分,从物理角度,它就是一个单纯的硬件的盒子,从功能上考虑,可以分为两部分,硬件盒子与软件盒子,硬件盒子是计算盒子的骨架,软件盒子是计算盒子的计算规则。
随着需求的提升,软件盒子不断的进步,把大部分常用的,重复的计算规则功能抽取集合起来,形成一个单独的盒子,叫做操作系统盒子,需要什么硬件资源,找它,剩余单独个性化计算需求,叫做应用盒子。
在应用盒子的世界,有现成的单独的应用小盒子(单独的application),也提供了一些简单基础的模型来搭建应用小盒子。
接下来来到模型的世界。在这里,由基础的零件和模块组成,零件是一门编程语言中最基础的部分,包含基础数值、算数表达式、变量和赋值语句、分支语句,模块(基础函数)则是由基础零件搭建起来的,通用的功能组件,说到这里,可以看出,模型就是我们通常所说的类或者对象。
按照以上的思路,在编程语言中很多概念就不难理解为什么那么设计了,都是为了用最简单的方法实现自己想要的计算。Objective-C语言编写是遵循盒子模型,在运行的时候也是从盒子之间的相互作用来完成功能的,盒子相互作用的舞台是runtime,runtime也是一个包含了为共同实现一个目的的模块和零件的集合。在java中,在编写的时候是按照模型的思想来实现,运行的过程中没有对象、消息的概念,成为了一个整体的应用盒子。所以从简到繁的顺序依次是 工具---模块---模型---盒子---操作系统盒子。
盒子再多,再复杂, 也是服务于计算机盒子的,输入--计算---输出顺序。
文字再多,也是为了阐明作者的某一个简单直白的核心观点。