标题很怪:老虎为什么没有机关枪?枪,那么精密,那么复杂,是由人类发明的,老虎怎么会有呢?
但是老虎身上有的东西,可比机关枪复杂多了。
比如,老虎的爪子在走路时,能收起来,但是在攻击和爬树时能像刺刀一样刺出来;
正常情况下,人类能够听到的最高频率约20千赫兹,而老虎能听到的最高频率可达70千赫兹,且两耳可随声波来源而转向,在野外环境中,它们能听见2000米之外的动物叫声;
虎的夜视力是人类的6倍,视网膜后方有一种特殊膜层,通过反射光线增强对视网膜的刺激,提高自己的夜视力,强大的夜视能力使得老虎在黑暗中也能够轻松地捕猎。
机关枪,是100多年前发明的。在部队训练里,一个基本科目就是拆枪装枪。枪支的机械装置,有的士兵甚至闭着眼睛就可拆装。那么问题来了,作为百兽之王,能拥有这么高科技的眼睛,为什么没能进化出一种简单高效的机关枪呢?
答案是:因为老虎不会面向对象!
老虎身上的高科技,是一步步进化出来的。而人类的高科技,是横空出世的。这是两种不同的演化机制。
以眼睛为例,看看动物进化机制的特点。
最早的眼睛只是由一撮感光细胞组成,只能感受到光线的明和暗。当这些感光细胞聚集在一起是,被称为眼点,这些感光细胞早在5亿多年前的寒武纪就已经出现在了生物身上,比如最早的脊索动物——皮卡虫。
虽然,皮卡虫的感光细胞只能感受到光线的强弱,但这一进步已经在生物躲避天敌的本领上迈出了重要一步。当阳光明媚时,栖息在海底的皮卡虫就会钻出沙子,而捕食者位于正上方时就会遮住阳光,皮卡虫可以迅速钻入沙子逃过一劫。
在泥盆纪,邓氏鱼进化出了直径达十厘米的“卡姿兰大眼睛”。邓氏鱼的眼睛发育出了眼球,并且眼球前段出现了可以变焦的晶状体,更重要的是出现了可以解析图像的视网膜,这种眼睛构造与现在人类的已经十分相似。
这件装备使得邓氏鱼可以将猎物的一举一动看得清清楚楚,带领鱼类称霸了整个泥盆纪的海洋。昔日的寒武纪霸主奇虾和海蝎,虽然有高级的复眼,但仅仅是视野广却成像不清晰,逐渐走向了没落。
所以生物进化的特点,就是每次进步一点点。只要给我时间,我也能进化出像老虎眼睛一样精妙的玩意儿。
但是生物进化有一个致命缺点:就是不能跨时空、跨物种交流。每种生物演化出的精妙器官,不能分享给其他动物,同一种动物也不行。
一切生物身上的高级货,都只能自己用。而且,这种技术特别容易失传,因为生物用来守护自己一身高科技产品的,就只有自己这条命。
一个物种的灭绝了,一切附着在上面的优秀技能也都失传了。
而人类就不同,除了和动物一样的进化机制之外,人类还有一种进化方法,就是“面向对象”。这是一种超时空,可交流的进化机制。
面向对象是编程里的概念,说到编程就得谈到程序员这个群体,关于程序员的话题也有很多“谣言”,比如“程序员不缺对象,因为面向对象编程,没有就new一个”。不过这里的对象不是girlfriend,而是object。而这个object里彷佛包含了万事万物,就比如说机关枪。

世界上最著名的机关枪是马克沁机关枪,被称为“死神的镰刀”。在第一次世界大战的索姆河战役里,马克沁机枪一天造成了6万人的伤亡。这个杀戮效率和老虎比直接起飞了。
可是整个机枪,从设计图到成为杀人机器,前后不过几十年。这在进化史上就是一瞬间。
动物要花几亿年的事,人类怎么几十年就办成呢?
因为它的发明者,马克沁做的事情,压根不是自己埋头研发,而是在广阔的时空里“探囊取物”。
马克沁的哥哥是一位制造灭火器的商人。马克沁就先从灭火器的原理里找到了发明机关枪的灵感。马克沁机关枪的底层结构很像一台灭火器。马克沁还用了弹簧。这是110年前,英国科学家胡克发明的。
马克沁还使用了很多完整的模块。比如,水冷系统。人类用水来冷却金属的知识全部封装在这个模块里。马克沁直接拿来用了,来给机关枪发热的枪管降温。另一个是火药和子弹系统。人类从中世纪开始的对枪炮子弹的摸索全部保存在这个知识模块里。无数的能工巧匠都往这两个模块贡献了自己的知识。
相比之下,动物们都是研发者,马克沁是一个拼接者。他的背后,站着一个强大的超时空人类知识库。
这就牛X了。相当于生物界突然出现了一种生物,它从时空里摘取那些最厉害的,甚至已经死亡的技能,把其他物种个体在不同时空里找到的最优解集合于一身。
而在编程中,人们很多时候是在做“调包侠”,管你JDBC里面怎么写的,我就添加你这个依赖使用里面提供的方法,就能和数据库做交互。
eclipse也是用Java开发的,管你eclipse怎么写的,我就用你这个工具做Java代码。
所以老虎为什么没有机关枪?
因为动物的解决方案是对目标一次次地进行冲击和研发。完成这个庞大的项目需要每一次都有用,有一次不能做到这一点,这个冲击的过程就会停步。
而面向对象能迅速携带好多超级技能,对目标发起冲锋,一次拿下它。这就是面向对象的威力。
动物进化就好比一场不能出错的通关游戏。而在这个游戏中,这个点卡住了,知识进化可以读盘再来,掌握了存盘和迁移的能力。
了解了这些,对“面向对象”这个概念,就有了一个直观的理解。