理解——什么是编程
什么是编程?先从什么是电脑说起吧?
问:什么是电脑?
答:电脑,也称计算机,它是人类的一种工具。
人类历史上曾经有很多重要的工具,比如:火;比如指南针;比如蒸汽机;再比如电和电子。
无论是火、指南针、蒸汽机或者是电、电子,和电脑相比,它们都有一点明显不如,那就是“可编程”。作为一种工具,电脑最重要、同时也是最突出的特性,就是可编程性。那么,什么叫做“可编程”呢?
一辆宝马车,很贵,人坐在上面驾驶,很爽;但如果今天下班,你感觉很疲劳,坐在驾驶座上不想动,那么再贵的车也无法自行将你带回家,因为无人驾驶的车,至今未能实现民用化。
抽象一点讲,开车无非是熟悉路线加上一套规则组成的技术。比如:必须熟悉公司到你家如何走;必须懂得“红灯停绿灯行”、以及前面有障碍物时知道减速绕行等。如果你能在平常将这套规则存储在车的某个位置,当你在疲劳时,车能够调出这套规则并且执行,那么这辆车就是可编程的了。
从这点上讲,“程序”就一套规则。当然这套规则虽然是人类定下的,但最终目的却是要由机器执行的,所以“程序”应该是由机器能理解的“语言”来表达。
电脑就是这样一种机器:它有自己的一套机器语言。人类可以用这种语言记录下相关的规则(也就是程序);平常存储在某类设备上,必要时,电脑将这套程序从设备上“读”出,并执行。
根据程序逻辑的不同,有的程序完全不需要人工的干预,比如电脑控制的自动车床;有的程序则需要人工干预才能进行。比如电脑控制的电梯。电梯必须提供一个“人机交互界面”。因为只有知道乘客要去几楼,电梯的工作才有意义。更常见的程序,就是我们每天使用的PC(个人电脑),上面的办公软件或上网用的IE浏览器、或者是电脑游戏就是程序,它们需要更多的人机交互。
如此,根据电脑使用角色的不同,电脑用户显然可以分为两种:程序编制者和程序使用者。在今天,如果您还不会编程,那么您就是纯粹的后者:程序使用者。而我们说过,程序其实就是规则。每个人学习编程的目的也许各不相同,但不知不觉中,我们达成了同一个目标:成为规则的制定者,而不是仅仅是规则的遵循者。
当我写到这里时,我那2岁不到的外甥晃悠悠地走近我,伸手给我一个带发条的玩具鸭子。于是我帮他拧上发条,外甥将鸭子放在地板上,高兴地笑:玩具鸭在发条的驱动下,摇晃着走动的姿态,确实可爱。而我看着外甥笑,于是我也笑了。
在这一过程中,玩具鸭是一种可编程的工具(玩具)。
发条是它用于存储程序的设备。
发条卷起来积蓄的势能,是它的机器语言。
我拧上发条的过程,就是编程,所以我是程序编制者。
外甥是这套程序的使用者。
如果我用力过度,将发条拧断,那就是机器的存储容量不足,造成系统故障。
如果我拧的方向有误,那是我的程序出现严重的错误(称为BUG)。
如果外甥在将鸭子放在地板上时,搞了个头朝天,那是程序使用者使用方法有误,造成鸭子无法正常行走。一个健壮的程序,应该对这种异常做出基本的处理。
我在拧发条时,需要在发条的轴上套上一个扇页状的旋把;它使得我的手指轻松舒服,这个旋把就相当于高级编程语言,以及合适的编程环境(IDE);因为有了它,人类的手指头能够以相对自然的方式来拧发条。
如果我不用那个旋把,而是直接费劲地把发条卷上,那就像是我在用机器语言直接编写程序。
一切正常,于是外甥看着走动的玩具鸭笑了,那是使用者从程序中所获得的价值。
看着外甥笑了,我心生高兴,噢,那是典型的,一个普通程序员因为创造而产生的开心……
外甥玩了一会儿,端来一脸盘水,把玩具鸭子丢进水中,然后哭着闹着问我为什么鸭子不会游泳@#$%^&,噢,这是典型的,一个普通程序员的闹心:为什么用户的需求总是在变呢?
|