中国这么多高薪程序员为什么开发不出Java,Typescript,Python?
近日,有人在网上问了这个问题,引起了网友热议:为什么中国这么多高薪程序员,开发不出Java,Typescript, Python, Rust, Node.js这些基础设施?
对这个问题,大家从不同角度发表了自己的看法。
有人说,因为中国互联网的本质就是小作坊,中国的超级大厂都不碰高科技领域,只琢磨一些挣钱的业务,比如社区卖菜。
如果有人想开发一种语言,老板第一反应就是:对业务有什么帮助?
有人说,互联网行业都想赚快钱,搞基础开发回报周期太难也太慢,资本不允许。就像市场喜欢外观精美的房子,开发商要高周转,要求包工头短平快,工头要求ROI,这种情况下谁有动力打三年地基呢?
有人说,要写出这些东西,需要深厚基本功+丰富经验沉淀+物质精神相对富足,一般满足这三项的人都40多了。这个年龄段的程序员都想着怎么不被淘汰,没时间考虑别的。
国外写出这些的程序员都四五十了,估计放国内都被裁员、开滴滴去了。
有人说,这些东西也不是程序员本身能决定的,即使有人想为爱发电,也需要先有口饭吃。
有人说,因为做这些不赚钱,开发出来都是免费给大家用,自己会过得很惨。
有人说,因为高级程序员晋升需要的是大量PPT和汇报技巧。
有人说,中国的程序员有业务压力,就算没有业务压力,能力也达不到。大部分大牛就是比较能卷、看的资料多点而已,真正有天赋的人少。
虽说开源代码相当于程序员的"共产主义",但这些知名语言基本都是国外开发的,就算国内有类似的东西,但无论是知名度还是使用范围,都和上面这些没法比。
类似的问题其实还有很多,比如为什么我国难出诺贝尔奖获得者?为什么国内科技公司的整体科技创新成就不如国外?究其原因非常复杂,既有制度和大环境的影响,也有个人的原因,一句两句很难说清楚,也不好说得太清楚
只能说,许多东西的诞生既有时代的原因,也有个人的原因。天时,地利,人和,三者缺一不可。过了那个恰当的时候,再厉害的大牛也未必能复制自己的成就。同样,就算有时代的风口和大环境的催动,若是没有一个杰出的创造者,也难再现繁荣。
希望中国程序员未来可以开发出比国外更牛的基础设施!
最后给大家科普一下设计一个有人用的程序语言需要哪些工作语言的卖点
设计一门语言是要来解决一些问题的,如果只是语法上的修饰像木兰甚至coffescript这种,可以作为一个hobby project, 但是很难称其为一门独立的语言。因为切换一门语言的成本是巨大的,需要切换整个生态系统,学习java可能只需要三两天,但是熟悉jvm的生态却可能需要几年的时间。如果使用一门新语言的好处仅仅是语法上好用,这不足以使用户进行迁移。
我当时开始设计这门语言的动机和typescript类似,但是更纯粹一些。设想的卖点主要是reliability, scalability and performance。
Reliability体现在类型系统比typescript更完善,从理论上杜绝了runtime type exception。
Performance主要体现在运行性能上。
Scalability主要体现在编译性能上,我们可以在100ms左右增量编译一个10,000文件的大型项目,这点很符合大公司的胃口,因为大公司的代码库很大,编译性能严重影响程序员的生产力。成熟的编译器
做一个prototype的编译器可能只需要几周时间,但是做一个真正能用的确需要几年的时间。因为编译器基本上是所有运行软件的trust base,基本上是很少有bug 的。试想如果你的语言用户写代码出问题了,老是怀疑是不是编译器出了问题,那生产效率可想而知。
我当时用了6个周末做了一个可以demo的编译器,后来填各种坑大概花了两年时间才比较稳定可用了。好用的构建系统,包管理工具
光有一个编译器是不够的,用户需要组织自己的代码,导入第三方依赖。这涉及到一个易用的构建系统(build system), 包管理(package manager)。试想如果你写的编译器很快, 但构建系统很慢,那么用户的感觉依然是很慢的。
build system和package manager 涉及到很多设计和人交互的问题,一旦引入了些糟糕的设计,因为后向兼容的问题就很难改正了。一旦牵扯到设计,就需要反复迭代,也是一个耗时耗力的过程。标准库,文档
和二十年前不一样,现在的语言基本上都是 batteries included-- 自带一个厚重的标准库。光是标准库的API设计就要花费很多时间了,还有厚重的文档。在语言没有获得足够的popularity之前,这基本上都需要编程语言团队自己去实现,工作量可想而知。IDE, debugger
现在的程序员已经被各种现代IDE惯坏了,如果没有好用的智能感知是很难吸引到用户的。做一个好用的IDE是很难的。不像编译器遇到错误可以直接报错退出,IDE需要一定的fault tolerance: 在错误输入的情况下依然要给出有意义的提示。这一块我比较幸运, 主要由社区的人和瑞士的一个同事来主导。社区推广
看到这里,你会知道设计一个真正有人用的语言的工作量比你想象中大太多了。但是最烦心的工作其实是社区推广和人打交道。不像在公司都是熟人关系,社区里各种人都有。 面对asshole不能爆粗口, 因为你写出的东西可能会被其他人巧妙的"摘"出来,然后批判一番。这里面个中心酸, 说多了都是泪。钱
有钱不是万能的, 没有钱却是万万不能的。按上所述,培养一个成熟的语言及其生态系统需要至少 30 man-year 的投入。团队的人水平按平均水平算,平均一人开支50万美金每年(注意是开支不是员工收入),这个投入大概就是一个小目标。
这么小的投入很可能是不够的,对公司的初期回报 大部分只能是PR方面,国内的公司还面临一个问题:花了钱不一定能找到合适的人。总结
做自己的语言是个很需要有情怀的事情,困难很多。但是长远意义上是一个国家在基础软件问题上的话语权的问题,还是衷心希望国内有些有情怀的公司能把这个事做起来。
作者:张宏波
为什么中国出了这么多厉害的互联网公司,但没有自己设计过编程语言? - 知乎 (zhihu.com)