写点什么

架构词典:语言

用户头像
lidaobing
关注
发布于: 2020 年 12 月 08 日
架构词典:语言

对于语言的选择,个人项目和公司的项目会有很大的不同。如果是自己的项目,web项目我可能会选 ruby+rails, 小工具会选 Python, 严肃一点的项目会用 golang 来写,我自己还维护着一个C++的开源项目。如果是公司项目,业务型项目可能会选Java,偏底层的可能会用 golang,而一些内存苛刻的领域则会选rust。



个人项目的语言选型倾向于流畅感,能获得心流那种感觉是最好的。而公司项目则更看重质量控制和团队合作方面的潜力。Python、Ruby这类的语言,质量控制相对比较难做,在团队水平不足的情况下很可能会写出bug太多,性能又很低下的代码。Java和golang这方面就好很多,两者都有很多社区工具来检查大家的代码质量,而golang的 goroutine 模型比Java的线程模型轻量很多,在底层项目能够轻松获得很多并发能力和性能方面的优势。



语言的发展,以SOA的大规模推广为边界可以分为两个阶段。早期都认为任何项目只能用一种语言来写,看《The Design and Evolution of C++》这本书就可以看到,为啥C++之父会选择既要上层抽象,又要零性能妥协,就是因为他认为未来会是一种语言,且很多场景性能没法妥协。从 Java EE的 EJB 的早期设计思路来看,也是希望用一种语言来统一所有服务的。



SOA出现之后,大家逐步把服务拆分,用接口来相互调用。一些通用的中间件开始涌现,这些中间件就可以开始选择更加合适的语言,一些更有特色的语言就逐步得到了推广,比如 Scala 现在就主要靠 Spark 社区的推广。一些服务则针对自己的服务的特点,不同的部分用不同的语言来写,比如 TiDB 就用了golang来写上层,Rust来写底层的TiKV。



发布于: 2020 年 12 月 08 日阅读数: 78
用户头像

lidaobing

关注

还未添加个人签名 2017.10.18 加入

还未添加个人简介

评论

发布
暂无评论
架构词典:语言