I'll keep up the pace
And I'll reveal my strength
To the whole human race
Yes, I'm gonna win
Yes, I'm gonna win
对于大多数固步自封的企业开发程序员而言,如果你问他们何为函数式编程思想时,他们会极度的茫然。在Java的面向对象世界里,他们已经被圈养得木然了。然后,他们会振振有词地大说特说OO和设计模式是如何如何的优雅,而故意轻视函数的力量。
这种感觉就好似一只野狼闯入羊群。狼环视四周,看到青草青青,羊们一脸菜色,于是问:何不食肉糜?笨羊们回答云:盖因草多鲜美矣!可惜野狼从来不懂得温柔,它露出狰狞的爪牙,风卷残云般挥爪张嘴吞灭了这群羊。
显然,在进化的曲线中,羊成为了弱者。它们之所以嚼食鲜草,并非草的鲜美,而是羊们的爪牙不够坚利,捕捉不了猎物。
不知道一万年后,羊们能否进化改为吃肉,甚而捕狼为食?但我却知道有些程序员已经失去进化的意识了。
在残酷惨淡的恶劣环境下,追求进化是所有物种的生存本能。即使是柔嫩的植物花朵,在进化道路上也不乏坚韧、智慧、深谋远虑与惊心动魄。比利时的M · 梅特林克在《花的智慧》中如此深入细致的刻画了花的进化:
花朵刚刚出现在地球上的时候,它们周围没有可效法的对象;它们必须从自身挖掘一切。古时,我们仍旧使用棍棒、弓箭和连枷的时候;近些时候,我们设想出手纺车、滑轮、轱辘、夯锤的时候;最近,可以说是去年,我们的杰作还只是弹射器、时钟和织布机的时候,鼠尾草却早已经设计出了精密杠杆的立柱和平衡锤,而马先蒿则将花粉囊密封起来,仿佛要做一次科学试验一样,持续使它的弹簧变得松动,并将那些倾斜的平面拼合起来。一百年前,谁会想到螺旋桨的特性呢?可是枫树和椴树一旦成长,树木就开始利用这一特性了。
花犹如此,何况人乎?何况我们处于这样的一个时代——这是最好的时代。这是最坏的时代。
这是最好的时代。我们不再像前辈程序员一般哪怕只为一个byte的存储空间也要锱铢必较绞尽脑汁;我们拥有高速计算的计算机以及浩如烟海的互联网络;无需寻求名师,Google与StackOverflow就是程序员的免费导师;前辈程序员五年八年拼命赚取的编程经验我们不足一年或已可习得;在创业如龙卷风一般肆掠的风暴中只要成功,即可一夜暴富彻底改变程序员的命运。
这是最坏的时代。我们面对的系统规模是过去数百倍数千倍的复杂以至于难度呈同样倍数的增加;我们不仅要面对多线程和并发,还要考虑多核时代的并行计算;技术更新换代的速率似乎也在印证着硬件发展的摩尔定律,以至于我们很难把握未来技术的发展方向。竞争变得前所未有的激烈,我们不仅要十八般武艺俱全,还得选对正确的技术,跟上发展的脚步,并贴上精研某个专业方向的标签。
最好时代与最坏时代的距离,短如咫尺的一念之间。时代如筛网,他在行进中过滤然后优胜劣汰。显然,程序员的世界依旧遵循生物世界的生存法则。
To be or not to be, this is a question。哈姆雷特的问题是态度问题,程序员何尝不是如此?
进化就是智慧的进取。没有绝对的优与劣,而取决于环境和自身条件,作出利于自己的决策。关键在于改变。倘若没有改变,我们还是躺在大海深处淤泥中的三叶虫;倘若没有改变,我们还在编撰着机器码写着古老笨拙的程序;倘若没有改变,函数式思想就只能在学院教授和博士口中薪火相传;倘若没有改变,时代不会停下旋转的齿轮,而我们会被远远抛在后面,直到不见踪影。
程序员的生存法则就是改变,向着正确的方向改变。
懒惰的程序员不愿改变,愚蠢的程序员不会改变,聪明的程序员顺应潮流努力求变,智慧的程序员则引导潮流主动求变。
按照Peter Thiel的理论,不同程序员的区别就是1到1,1到n和0到1的区别。
时刻保持的进化态度在于危机意识。谁能想到6700万年前白垩纪那个统治整个星球的庞大种群会在历史长河中瞬间湮没?在灭亡的瞬间它们的尊严甚至不如一粒微小的虫豸。谁能万古长存?谁能基业长青?——只有通过进化与种族繁殖,生物庶几可以保持永恒。
整体看,程序员这个种群在短短数十年进化了几代人,并且形成一条进化速度的指数曲线。上世纪四十年代始,程序员是数学家、科学家,代的更迭替换差不多需要20年,之后速度越来越快,代与代的更替越来越短,到如今,或许不到两年你就会发现确然的代沟了。若一名程序员效仿梭罗去那深山密林中的瓦尔登湖畔遁世隐居,大约不足半年,出山之后看到的代码世界可能堪比二进制到十六进制的差别了。
软件的进化不是太快,而是太不够快了。在如今硬件可以水平叠加的前提下,软件的发展有些跟不上节奏,从单核到多核,从串行到并行,从单机到分布式,从小数据到大数据,从单机到云端,从PC到移动,从计算机到物联网,不是软件跟不上,重要的是程序员的技能跟不上,开发效率跟不上。
故而,程序员世界的生存法则同样遵循残酷的商业规则,即所谓“快鱼吃慢鱼”。程序员的生存法则,就是要快走一步。越早学习最新的技术,越早推出创新的产品,越早规划未来的发展……这其中的根本,就是具备时刻做出改变的意识,认识到程序世界中万物皆非永恒的真理,进而通过学习去主动拥抱变化。
简而言之,进化就是在学习中寻求改变,如此方能生存。而在如今这个时代,这种学习与改变,不过是变得更加激烈尖锐敏感罢了。
现在,闭上眼睛,用生命和灵魂再次聆听一遍Survival,跟着演唱:
I'll keep up the pace
And I'll reveal my strength
To the whole human race
Yes, I'm gonna win
Yes, I'm gonna win
这就是程序员在这个时代的生存法则。