我看语言之争


我不是一个语言原教旨主义者,但是不得不承认,“语言鄙视链”这东西确实存在。一般来说,强类型鄙视弱类型的,编译型的鄙视解释型的,分布式的鄙视单机的,函数式的鄙视面向对象的鄙视过程式的……不过最近某P语言借助人工智能东风,有从鄙视链底端逆袭的趋势。

现状

其实,每种语言都有他适用的方面。

理想的状态应该是,系统中的各个模块,用最适合的语言编写;模块和模块之间,通过网络、文件等介质实现隔离。凯撒的归凯撒,上帝的归上帝。

但是现实情况却往往无法做到这样。

一方面,你很难全面的掌握所有的系统设计,也就是说,新设计的系统可能要依赖于当前已有的各种系统,这些依赖可能是紧耦合的,让你必须使用相同的语言;也可能这些系统的接口设计,提供了解耦的功能,但是相关的解析工具又只提供了为数不多的语言支持,这时你要不要自己用“合适”的语言实现一遍呢?

另一方面,团队中人员的技术栈也可能会成为掣肘的力量,你敢冒这样的风险吗?值不值呢?

无奈

其实越是大公司、或者成熟稳定的技术团队,在这方面是举步维艰。

这么说吧,使用一门新语言,难度不亚于内部创业,不仅需要证明新语言在某重要方面优于公司已有技术框架,而且还要自建适配于新语言的各种配套设施,比如测试框架,比如代码自动审查工具,比如集成环境等等,因为这些如果使用现有语言都是成熟的。想要把大家从当前的舒适区中拽出来,你当然需要又当爹又当妈,至少得创造一个差不多的另一个舒适区。

与之相处

有一种策略,叫做“面向收入编程”。

有时候,作为一个干活的程序员,很难决定整个公司或者团队的技术方向选择,那么我们至少可以影响我们自己。

在“带着镣铐跳舞”的情况下,尽量学习、吸收一些通用能力,或者能证明自己通用能力的能力是非常重要的。每个人都有充分的理由相信,一个视野开阔,同时又能在某一方面精钻的人,是能够很快的适应新环境并作出一番贡献的。说白了,我当下用什么、做什么可能不由我自己决定,但是用的好不好、做的好不好是可以的,并且,我思考什么、学习什么就更是由内因所决定的。

很多人说华为的技术栈在外面没用,“一入华为深似海”。但是,我也见到有不少优秀的前华为员工,出来后很快就转换了技术栈并且做的风生水起。你愿意做哪一种人呢?



推荐阅读:
2018年上半年书单
区块链比特币科普八问
跳出思维定势

转载请注明出处: http://blog.guoyb.com/2018/08/14/language-war/

欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考:
后端技术小黑屋

Comments