2019年python、golang、java、c++,rust如何选择?

如果是面向工资编程,那以下主要默认题主要去互联网企业。

开源时代一种新语言的诞生,往往是以下几个步骤:

  1. 推出一个很酷的新模型或者新理念:比如Python的ML,Golang的静态编译/工具链等
  2. 一些先锋程序员就会投入进去开发,这些程序员就是天使轮拿到的资金
  3. 要早别人抄走这些优势之前构造一个基本可用的工具链(调试器,IDE,包管理,优化)/框架库(主要是Web,SQL等)
  4. 如果成功,就会有后续公司进入然后他们出钱养程序员投入这个领域,相当于语言融资了ABC轮
  5. 直到某一天市场大规模采用了,大量贡献了程序员/库/教程/stackoverflow的踩坑,相当于语言上市了,一个正循环就培养好了
  6. 再然后就是用得越多,岗位越多;岗位越多,新鲜血液越多(相当于资金)

一个大金主,也就是现在喜欢说的“XX的爹”,可以长期稳健的提供大量人员和技术,比如Google把go和kubernetes结合的很好,于是go的市场就非常好,因为一个语言那么多细节,那么多场景都需要人去编码,去测试,去验证,没有人去踩坑的话就是用户自己踩,自然也就没人愿意跟随。和房价一样,追涨杀跌,“信心比黄金和货币更重要”。 所以验证市场的方式就是观察走势和交易量:

  • 去看看招聘的岗位数量
  • 去看看采用某个技术栈的公司的业绩如何,特别是其市场地位
  • 看看某个领域新出的库,都是用什么语言写的。比如在k8s里面,出了一堆新东西,你看是go,或者C++还是别的什么写的。说明这个领域的基本定式方式已经变了。

讲讲反面例子:

Github一家不太容易支撑起Ruby/Rails,所以Ruby的热度下去了。这也跟Ruby在推出RoR之后,Python快速学习了这套打法。但是后续的库,Python却多于Ruby,所以一下子战局变了。这就是所谓的先手没有变成优势。

总结以下:

  • java肯定没问题,生态完善完美,大公司在用,人力和技术储备和流动性都不错
  • go肯定没问题,云生态完美,k8s基本上统治
  • rust还属于A轮阶段,看看你自己是不是先锋开发者。未来Rust我觉得不错,但是时间点无法预测。
  • C++老牌,但是最近新库似乎就是Envoy用C++写的。
  • python我觉得主要是ML领域