主要是因为开源,没有研发的动力。
哪天欧美不让你用了,可能就有动力了吧。
问题是开源不可能禁的。
所以国内大公司只要记得用开源的,把开源软件风气带起来,使外国不能禁止就足够了。
个人觉得,编程语言再折腾,意义真不是很大了。真需要那么多语言吗?像操作系统一样,把开源的linux玩好用好就够了。
倒是闭源的不可缺少的工具软件,这个需要好好研发。以免被美国卡脖子。
还有编程语言并不难。难的是,让全世界的开发者都用,形成一个好的生态。不说世界通用,做一个让高端开发者看得上的中文编程语言,现在都没有。主要还是不想。
因为中国并不具备有真正实现一个编译器的能力和技术储备,当然并非完全没戏,这个最后说
注意我这里用的是中国,而不仅仅是某一个互联网企业,比如阿里或者腾讯,是全部加起来,也就这样
很开心滴看到,越来越多人意识到,阿里和腾讯,这些企业,其实只是表面上的大,也就是胖,其实并没有多少技术能力,他们是被中国这个庞大的市场给喂胖的,并不是他们多有肌肉
真要跟谷歌等企业在国外面对面硬抗,翔都给你打出来
中国的技术员,比较擅长的,就是从老外开源那边,抄过来,然后改改,然后说,我这是自研的,这种行为不胜枚举
每当我看到这种行径,我的脑海里就浮现出几个成语:欺世盗名,沽名钓誉
还有一个网络用语:无能狂怒
在知乎上,每当我指出他们皇帝的新装的时候,很多技术员会有两种表现
第一,解决不了问题,先否定问题,该问题不存在,没有这个问题。e.g.,脚本,比如python,javascript之流为什么要编译成机器码?还有大道至简,因为大道至简,所以语法再怎么难看,都是合理的,总之各种借口和理由特别多,本质上还是不会,所以不敢面对问题
第二,解决不了问题,解决掉解决问题的工具,解决问题的工具出现了,该工具没人用。e.g. Graal的 native image没人用,因为我没看到有人用,有老外用?那老外不算人
实在是否定不了了,妈的,都怪那个圆胖肿天天说这些新技术
其实在我看来,阿里和腾讯,非常符合当年考上杭师大和深大水平大学生的表现,而985,比如这儿大,裤子大,甚至两校等毕业的,去给这两个家伙打工,应该感到羞愧,对不起985的培养才对,知乎上一堆人居然还引以为荣,当然你混口饭吃,无可厚非,是吧,谁说大学生不能去卖猪肉?靠自己的双手赚钱,无可厚非,但这难道是什么值得骄傲的事吗?
反过来也说明,国内985的知识水平,其实也就那样,国家被卡了脖子,造不出cpu,gpu,你去造啊,写不出操作系统,编译器,你去写啊,不行,就算你毕业于985,你也写不出来,造不出来,所以你也就只能沦落到去给姓马的打工了,好一点的,能够出国,给洋人打工,也就这样了,跟你的师兄,什么钱学森相提并论,你觉得你配吗?985每逢周年大庆,您觉得您有脸回母校吗?
不,如果我这辈子最大成就就是给人打了份工,那我会觉得对不起母校的培养,会觉得985不应以我为荣,虽然以我为耻应该谈不上,因为985培养了我,不是培养我去给资本家打工的,而是长远了说,为探索宇宙真相,短了说,为解决国家卡脖子技术问题,为了这两个目的培养的,而我毕业了之后,没能为国家为人类贡献自己的一份力量,我会觉得很羞愧,愧对母校的培养,因为母校培养我,不是为了培养我去给资本家打工的,当然,劳动赚取报酬,无可厚非,但终究这不是母校,国家,对我的期待,更不是我的理想,说四有青年,其中一个就是有理想,我的理想是给资本家打工?你的理想是这个?林贝,谁小时候的理想是玩意?
最后我们来说一下编译器的最新成果并呼应一下最开始说的,该如何做一个自己的语言,其实软件发展到今天,本质上就是从开源那边先抄过来,然后再慢慢改
我看到高赞做了一个脚本,哈哈哈,那玩意根本就不需要你自己那么麻烦去写好吧,直接复用一下各种编译器的后端就可以了,写一个脚本很容易,比如graal的simple language就给出了一个完整的脚本的实现过程,复用了truffle framework以及hotspot的后端,完整的tutorial和demo project在这里:
所以时至今日,中国的技术员做不做,无所谓了,反正开源已经做得这么简单了,你会抄就行了,就像最早做安卓时候,安卓其实就是linux和java的改版,因为当时google正好有hotspot的作者lars bak在,所以谷歌觉得,有需要,就给改了,于是就有了安卓,后来的flutter,其实本质上也是lars bak所在的那个组的改版,真想做的话,照着这些去改就是了,当然前提是你要先看懂别人在做什么,以及编译器现在都发展到什么程度了,如果现在你还在想着,从无到有,自己用c或者c++去实现一个完整编译器的话,那哈哈哈哈,你算了吧
国家现在应该也已经看懂了这一点,所以资源开始往高校集中,高校这几年,虽然青椒被非升即走搞得很痛苦,但确实有一大批青椒留下来了,希望就在这些青椒上,这些人在国外接受过教育,尤其是phd是境外高校拿的,不是国内这种水出来的,所以他们能看懂这些,那以后的希望就在他们身上,而不是在那些骗补贴的企业上,中国终究还是一个社会主义国家,很多东西,靠企业是没戏的,最终还是要靠体制来搞这些东西,就像中国的铁路,电力这些都是国营的事业单位,还有公立的医院,都搞得不错,全民受益,火车票,电费什么都20多年没涨了,还没赶上通货膨胀呢,但是如果资本介入,比如房地产,私立医院(莆田系),那发展到后面就很难看了,就像火车票哪里最贵啊?最市场化的广州铁道局的火车票就是最贵的,就这个道理,编译器,操作系统,cpu,gpu这些,最终还是要靠国家扶持高校来搞
而且不仅仅是国内是这样,国外也是啊,llvm是苹果让uiuc搞出来的东西,graal是sun/oracle让全球八所高校历经多年(20年)前后接力,才搞出来的东西,所以国外其实也不是完全依赖企业的力量,而是企业跟高校合作后的产物,研发的主体在高校上
中国互联网公司的垄断手法还局限于当赛博地主
而历史上创建编程语言的公司,垄断手法则是开放性垄断,通过开放来让更多人使用,从而间接形成垄断
不把赛博地主的问题改掉,中国的互联网公司的前景也就止步于这样了
作为户口一直落在劝业场街道的天津人,我在美国设计过三款语言。
第一款是一个指挥FPGA上高度并行任务的script,为的是在一个资源很少的嵌入式SoC上最大效率地加速并行,同时最大限度地减少用户的心智负担,用最简单干净的语法去解决最复杂的并行模型问题和时序前端问题。这个语言暴露给用户的全部语法非常简洁,目标是让一个零基础的人在经过差不多40小时的训练后可以轻松写出并行性能极佳、在工业上可靠的script。在设计上,为了降低使用门槛,语法的前端尽可能地保持精简,难点在于解决这些场景里繁复的I/O,task scheduling,片上内存管理,各种你意想不到的安全需求,以及作为engineering management上的各种dependency等实打实用小鞭子打在屁股上痛点的管理问题——你可以理解是跑在某特定FPGA上特定任务特定场景下的go+cuda。
第一款语言是CEO亲手主导完成的,我贡献了大量的包括前端、后端优化和整个框架中非常细枝末节的工作。效果就是,一个经过40小时训练的工程师,借助这个语言(应该说是闭源的整个框架)能轻松写出别人家资深N年老码农调教的并行计算和高密度I/O任务,而且需要时间更短、benchmark更快——这个语言戳中了一个全世界大家想不到的痛点,就是“如何把嵌入式整个系统上需要极限性能的某些特定的并行任务模型,抽象成非常简洁干净的语法,把准入门槛降到最低”(你可以理解为某个热心网友给google的jax又写了一层前端)——这是这款语言带来的实实在在的生产力和商业价值。
第二款语言是我自己完成的。同样这也是一个闭源的商业工具script,简单来说就是当你有大量VHDL屎山的时候,你有大量参数/register需要设置,同时你还有大量的SoC上的参数需要测试,同时和SoC通信的host还有大量的参数和任务等待部署——这些参数不止需要开发者去手动组合,还需要用户、用户的用户、用户的用户的用户去手动组合。于是这个语言的想法呼之欲出:一个yaml template加上一些语法糖,让用户可以轻松用GUI勾勾选选或者语法设计出各种你想要的组合去完成各种你需要完成的unit test——这样大到整个所有硬件电路和时序的CI,小到各个部门之间的QA,乃至certificate in the field——你可以理解为这是一个“可以自动编程的自动硬件质检仪”——当然不是很多人想象中的simulation中的test script,而是实打实的小到一套片上系统,大到一整套摆满一个屋子价值百万的几十套片上系统各个元器件不同场景下的并行测试的框架。
第三个跟上面两个完全不同,是一个开源免费的语言,对是的就是那个github trending上冒了好几天的每天被我复读的那个hedgehog lab的核心语法hedgehog script。这是这三个语言里唯一一个目前没有商业价值、没赚到过一分钱的语言,也是目前唯一一个半成品,而且是我对前端所有领域知识一无所知时一边自己零基础入门一边试图设计出来的,虽然目前进度比较缓慢(因为在忙别的),但是整个2020年我都在倾听来自于MIT、OSU、UT Austin、UT Dallas、Rice、UH等各个混迹于学术界的教授科学家和还没毕业的小朋友们试用后的反馈和倾听。
Hedgehog Lab的思想非常简单:
你本科没学过CS?没问题,你可以花5分钟学习JavaScript的大部分语法就好了;
你只是用来跑经济学和药物数据的regression、解决各种linear algebra的问题?没问题,我给你内置;
你想用来写markdown和TeX用来写公式画表格?没问题,都给你安排上;
你连Python都不会安装、system path都配置不好?没问题,让你打开网页就是完全体,左边写,右边输出,没有服务器,全在网页里;
你连pip/conda/npm都不会用?没问题,不让你碰command line工具,直接开头*import my_package/my_lib就能直接用,0安装0配置;
你想天然支持矩阵、向量、张量的各种运算?没问题,给你operator overload,用最低成本的babel plugin支持各种语法,让大家写起来开心快乐,语法甜美如matlab,心旷神怡;
你想要跨平台?好办,全套内置在web里,Windows/macOS/Linux/iOS/android都是一套代码;
你想做微积分,想解线性方程,甚至得寸进尺想解微分方程?没问题,我给nerdamer加个语法前端,让你舒舒服服地用;
你想要GPU加速?没问题,chrome给我WebGL2的眼睛,我就用它来实现高通、nvidia、苹果、AMD、Intel、三星、龙芯、麒麟等全世界能跑opengl的所有架构处理器GPU上一揽子一键支持GPU加速矩阵运算;
你想要美美的像纽约时报、经济学人上的精美图表?没问题,plotlyjs、d3、echarts等专业作图工具都给你安排上,封装得简单好用,d3用300行实现的功能,我给你封装成一行的API,你闭着眼睛复制粘贴过来,一调用就跟obervable和纽约时报那些网站老美工们做出来的一模一样。
Hedgehog Lab的核心思想很简单:解决一些语言设计者们从来没思考过的问题,就像darklang的设计一样,把需要暴露给用户的feature暴露出来,去思考“懒得学、懒得看、懒得配置、懒得安装”的那些人真正需要什么需求,我去把他实现出来——只要你:
剩下的功能交给babeljs作为compiler(外加上各种语法的plugin)和runtime来帮你自动在浏览器里配置、依赖、安装、运行、输出、完成。
(当然如果你现在想用的话,无论手机电脑iPad龙芯汉芯红芯,直接点击 https://hedgehog-lab.github.io/ )
--
说了这么多,为什么中国人能真正设计一门流行的、经久不衰的、具有生产力价值语言的人不多?
一、编程语言是一个领域问题的抽象能力和描述能力。这就像开一家公司,能不能活下去取决于赚不赚钱。当你有了Java的时候,你不可能抄一遍Java抄成Java2来代替Java——你必须观察到了细致的生产力问题、设计问题、效率问题,你才能做到“设计出Kotlin来抢Java的部分饭碗”、“设计TypeScript来解决JavaScript的痛点”、“造Rust来解决C++的心智负担”、“造Matlab来解决Fortran的编译运行和所有弊端”这种成功的东西出来——设计一个语言和完整工具链不是难事,中国每年有上百个本科生有这种能力——最难的是“发现场景、抽象力、生产力革命”的那双眼睛;
二、大部分“programming language”的爱好者都是学术界出身——他们心中“最完美的编程语言”,是“我要这个,我要那个,我不要这个……”——他们心中有一个非常私人化的清单,把这个清单的项目全都实现了,就是“完美语言”。
然而真相是,世界上没有“完美的银弹语言”,你喜欢的东西别人可能非常厌恶——而这些人的爱好是“给自己造做工精巧的烧脑小玩具”、“给小圈子里开发酷炫好用的工具链”——但是他们从来没有从商业和设计的高度去认真思考“什么样的语言、生产力、工具链,对于他们的场景下是简单好用、足够抽象、牢固可靠的”——反而很多人对于那些群体嗤之以鼻。
编程语言的鄙视链在中文网络流行PL土味圈中深入人心,他们很少去认真思考他们眼中土掉渣落后原始的Matlab、Mathematica、R、Stata、Labview、Apex这些怪物框架、古老语言为什么在他们诞生的年代具有强大的生命力,而且至今几十年依然有非常强大的商业驱动力——PL爱好者们在小圈子折腾的东西很少能出圈,等他们自己十年后当了manager之后几乎没有机会推广这些东西给其他人。
三、中国很少有真正以“技术创新”为商业价值的公司。中国绝大多数的互联网公司的“核心商业模式”依然是“做互联网、做平台、做产品、用海量低价人口红利去雇佣运营和产品经理来运作指导”的思维,极少有公司是“以技术作为商业壁垒”、“用技术和生产力革命去驱动商业模式”——哪怕有一些超级大厂有一些非常流行的开源项目,但是改变不了这些公司主要利润和估值几乎完全来自于“做互联网、做产品、做金融、做App”的内核。这一点不用展开讲了。
最先进、最边缘迸发出来的语言,一定诞生在某个领域刚刚起步、目的是解决最有价值的工程问题、技术问题、商业问题、管理问题、生产力问题等痛点的设计——只有你看到这个即将起飞的风口,你才有机会设计出近十年来刚刚流行的诸如Rust、Go、Apex、Kotlin、Swift、Dart、Julia的这些技术生态社区和商业上全面成功的语言——而不应该也不可能是“别人有一个苹果,我也造一个苹果打败他”——这个问题跟国籍毫无关系,任何工业界或者学术界的从业者,都有机会在自己领域发现最前沿的问题并试图解决出来——这种机会是人人平等的,只不过在国内互联网公司目前的环境下,这种环境可能目前并不存在。
朋友,这里有一个巨大的误会,以为是『互联网公司』创造『编程语言』,不是!不是!不是!
创造『编程语言』从来就不是『互联网公司』的正事,创造『编程语言』的是软件公司和软件科研机构,OK?你的,明白不明白?
比如说,微软首先是一家软件公司,然后才把自己部分转变为互联网公司,微软为了发展软件,发明了C#、F#、TypeScript这些编程语言。
但是,对于一个纯粹的互联网公司,他们做的是『服务』,为了提高生产里,他们可能有动力制造一个框架,制造一种工具,但是真的没有什么动力去创造编程语言,或者说,就算他们不创造编程语言,又怎样呢?用软件公司或者软件科研机构创造的编程语言就好了嘛。
所以,这个问题是:为什么中国出了这么多厉害的软件公司,但没有自己设计过编程语言?
答案是:中国这些『厉害的』其实只是互联网公司,不是真正的软件公司啊。
中国互联网是一个重运营拼执行的市场。你能设计一门新的编程语言提高运营效率吗?不太可能吧,运营都不懂编程呢……那你能设计一门新的编程语言提高执行力吗?这个还值得思考一下。
如果我们专注于程序员在产品迭代上的执行力,我觉得设计新的编程语言是有潜力的。主要的障碍是中国人力成本太低。当你提议老板给你时间设计一门新的语言时,老板问你效益和周期。效益当然是提高产品迭代执行力,但周期要按年来算。老板如果没有远大志向,直接把你否决了,多招一些人也能解决执行力问题。
就算老板有远大志向,让你带一两个人开始设计这门新的语言,但招人不能停啊,不可能等你做出来了再提高执行力吧。等你做出来了,公司程序员数量翻了几倍,你在公司内推广的成本比你预想中的高得多。人都是抗拒改变的,你要别人学你的新语言,甚至用你的新语言重写部分代码,这到底是提升执行力还是拖累执行力啊?你真的能证明你的新语言最终能提升执行力吗?
中国大部分优秀的技术人员都不是及格的销售,你发明了新的语言但在公司内部都推销不出去,大概率故事到此结束。
美国作为一个资本主义社会,大家从小就被潜移默化,意识到这个社会并不是真正唯才是举的,只有真的卖得动才能变现。相对来说,大家更会卖一些。
我觉得可以不用纠结这个,反而要不管白毛黑猫抓住老鼠的就是好猫。
比如我们上初中学物理,突然来个牛顿定律,如果我们纠结为什么牛顿不是中国人,不是我们老祖宗的东西就不学,那对个人成长将会是毁灭性的打击,因为后面学数学,学化学还有很多东西国外的科学家奠定的基础。
中国互联网公司的发展的好,正说明了我们对这些应用做的更好,我们的创造性也不差,别人基础打的好,一个是因为他们是先发国家,走了前面,二是因为我们自身历史在煎熬。这些都是过去式,不用再纠结。
如果未来我们人工智能发展领先,大数据发展领先,航空航天发展领先,5d和6g发展也领先,那未来我们也会给后人奠定很多基础性的东西,跟牛顿定律一样牢固,出现在全球各个国家的中学和大学的课本上。
那是你没见过真吹过头的时候,那时候知乎全都在论证年薪30万码农从各方面吊打省直单位正科级,吊打985青椒。
作为经典流氓霸权主义国家,这是正常操作啊。而且这就完了么?
有脑子的都知道这核污水不能排,你以为排了之后美帝不讹诈你钱去赔偿?谁让你他喵的把放射性物质扔到西海岸的?
虽然环保主义啥的现在没动静,等污染物随着洋流到西海岸之后你看还有没有动静?说讹诈你几千亿美元就讹诈你几千亿美元,说让你交钱你就得交钱。再讹出来个广场协议都不是事。
所以说光看在这一条,我要是菅义伟我都不敢排。脑子早就掉进马里亚纳海沟里面去了都。
前期错过了殖民掠夺,后期在分蛋糕战争中站错了队