不是说把人生编成程序。只是说程序员的人生。
今天偶然看到这篇文章,21天学通C++,很有感触。
其实学通C++,这个词的含义无法准确定义。究竟什么是学通C++。如果说是要完全掌握使用C++编程的技巧的话,需要的时间是无穷的。因为难并不在于C++,而在于编程。
使用编写程序是一种生活方式。它不仅仅是工作或者学习。就像舞蹈或者作诗也是一种生活一样,一旦你进去了,就出不来了。程序员的生活沉浸在无尽的逻辑,抽象,接口,复用,通讯,数据,算法,blabla之中。。。
程序员的世界是抽象的
程序员看到的不是人,而是某一“类”人的一个“实例”。有些人是虚基类,你看到很多貌似相同的人,在某些具体的方面却有着完全不同的行为。有些人是模板类,很多貌似不同的人,却有着惊人相似的行为。有些人是单件,失去了就再也找不回来。
程序员看到的不是化学定律,不是生物学定律,不是物理学定律。程序员看到的是数学规律在各个具体场景中的表达形式。用相同的程式,程序员可以模拟桌球碰撞,可以模拟气体飞散,也可以模拟生物群落迁移,牛奶混合进咖啡,或者婚姻的结合以及破裂。
程序员的世界是定量的
程序员不理解“质变”,只理解“量变”。当别人看到悲剧,程序员看到概率。别人谈“可行性”,程序员谈“可能性”。任何东西都可以定量估计,不管是系统崩溃的概率,银河系中存在类人外星人的星球数量,还是一杯温水忽然一半结冰另一半沸腾,或者身边的椅子忽然变成一个美女的可能性。一切的一切,只要存在,就可以定量估计。
减肥的人会为少吃一块巧克力而自豪,而程序员指出其实瓶颈不是少吃了多少而是消耗了多少。排队的人为插到前面一个人而高兴,而程序员指出其中机会成本其实更高,而利益没有几秒。程序员乐于估算一辆公交车能装多少皮球,75码能把人撞飞多远,或者人一生能打多少个喷嚏。这些喷嚏造成的推力能把一架喷气飞机推进多远。
程序员的世界是协议化的
程序员调用函数,遵照函数的规格声明。程序员发送消息,遵照网络协议手册。程序员对这个世界过度“预判”,并根据这种预判作出推测和决定。程序员预判其他人也是程序员。所以大家任取1~100之间一个数,要想最接近所有数和的2/3,那答案必定是0。程序员预判其他人也会遵照协议,所以拿着用户手册去跟客户争吵那不是bug而是feature。
程序员制定协议,程序员遵照协议。然而如果事实证明协议无法实现,程序员会孜孜不倦的抛弃他,并重新创造新的协议。然而程序员不可能离开协议而存在。程序员需要protocol, 需要pattern, 需要manual and guideline。程序员在种种规则和限制之中,找到了自由,假如失去了规则限制,程序员反被关在混乱的牢笼里,寸步难行。
程序员对程序是虔诚的
程序绝不会犯错,如果犯错一定是程序员的错。程序员一定会犯错。程序员像一群苦诵经书的狂信徒,无尽的敲出一行又一行一段又一段的咒语。据说摩西五经其实包藏了耶和华的真名,而这真名只有通过反复诵读才能体会。而代码之中也保藏了程序的真谛,无数程序员在反复敲打之中要去领悟醍醐。
公司里很多同事坐久了腰痛,干脆跪在机器前面写代码。虽则这种膜拜不能就另拙劣的代码产生灵性,然久而久之,程序说不定产生佛性,亦有可能。
一只脚已经踏入这个世界,我现在仿佛觉得这个荒谬的世界才是真实的,反倒是外面的世界是无法理解的。进入这个世界的话,就离不开了吧。