问题

为什么中国出了这么多厉害的互联网公司,但没有自己设计过编程语言?

回答
这是一个非常有趣且深入的问题,它触及了中国互联网产业发展的核心模式以及科技创新的深层逻辑。简单来说,中国互联网之所以能涌现出众多“厉害”的公司,很大程度上是抓住了全球科技浪潮的机遇,并在此基础上进行了模式创新、生态构建和精细化运营,而非从最底层的技术——编程语言——进行原创性突破。

下面我将从几个方面详细阐述:

一、 中国互联网发展的路径依赖与“弯道超车”策略

1. 时间窗口与技术引进: 中国互联网的崛起正值全球互联网技术飞速发展的时期。BAT(百度、腾讯、阿里巴巴)等巨头在成立初期,直接受益于成熟的开源技术栈(如Linux、Apache、MySQL、PHP/Java/Python等)和现有的编程语言。它们并不需要从零开始发明轮子,而是可以站在巨人的肩膀上,快速构建和迭代产品。

2. 模式创新与应用层面的竞争: 中国互联网公司在竞争中更侧重于在应用层面的创新,例如:
社交领域: 腾讯的QQ和微信,通过即时通讯、社交网络、游戏、支付等功能,构建了庞大的用户生态。
电商领域: 阿里巴巴通过淘宝和天猫,结合了C2C和B2C模式,并深度整合了支付(支付宝)和物流体系。
搜索领域: 百度在早期抓住了中国市场需求,并在中文搜索算法上进行了优化。
移动互联网时代: 字节跳动的今日头条和TikTok,在内容分发算法和短视频运营上取得了巨大成功。
共享经济: 滴滴出行、美团等,则是在现有技术基础上,通过优化运营效率和用户体验来颠覆传统行业。

这些创新是基于现有技术架构的“组装”、“优化”和“集成”,而非对核心底层技术的颠覆。

3. 庞大的用户基数和场景驱动: 中国拥有全球最大的互联网用户群体,这为互联网公司提供了海量的数据和丰富的应用场景。这种庞大的用户需求和多样的应用场景,反过来驱动了公司在产品设计、用户体验、运营策略等方面的快速迭代和优化,而非去探索更底层的技术范式。

二、 编程语言创新的高门槛与风险

1. 理论与实践的巨大鸿沟: 设计一门新的编程语言是一项极其困难且耗时的工作。它需要深厚的计算机科学理论基础(如类型论、λ演算、形式语义学等)、对计算机体系结构和操作系统的深刻理解,以及对编译器、运行时环境、工具链等一系列周边生态的精通。这不是仅仅靠大量的工程师就能完成的,需要顶尖的理论研究者和架构师投入大量精力。

2. 生态建设的挑战: 一门新的编程语言能否成功,关键在于能否建立起完善的生态系统,包括:
编译器/解释器: 能够将代码高效地转换为机器可执行的指令。
标准库和第三方库: 提供丰富的功能模块,降低开发难度。
开发工具: IDE、调试器、性能分析器等。
社区和文档: 吸引开发者学习、使用并贡献。
跨平台支持: 能够运行在不同的操作系统和硬件上。

构建一个成熟的编程语言生态系统需要数年甚至数十年的积累,并且需要有强大的社区驱动和商业支持。中国互联网公司虽然在生态构建上非常擅长(如微信生态、支付宝生态),但这种生态通常是基于现有的技术栈和语言构建的。

3. 风险与回报的不对等: 对于大多数商业驱动的互联网公司而言,投入巨额资源设计一门全新的编程语言,其风险极高,而回报却不确定。与其耗费巨大成本去创造一种“通用”的编程语言,不如将资源集中在当下最能产生商业价值的领域,例如:
算法优化: 改进推荐算法、搜索算法、图像识别算法等。
系统架构: 优化分布式系统、数据库性能、网络传输效率等。
产品设计与用户体验: 提升用户粘性、转化率和满意度。
商业模式创新: 探索新的盈利点和增长模式。

这些方向的回报更直接、更可控。

三、 现有编程语言的“惯性”与适配

1. 成熟语言的强大生命力: 像Java、C++、Python、JavaScript等编程语言,经过多年的发展和迭代,已经形成了非常成熟和庞大的生态系统。它们在性能、易用性、跨平台能力、社区支持等方面都表现出色,能够满足绝大多数互联网应用的开发需求。

2. 针对性优化与DSL(领域特定语言): 中国的互联网公司更倾向于在现有成熟语言的基础上进行“微创新”或“适配”。例如:
性能调优: 对现有语言的运行时进行优化,或者使用更底层的语言(如C++)来编写性能关键的模块。
开发高效框架: 基于现有语言(如Java、Go、Python)开发内部的微服务框架、RPC框架等,以提高开发效率和系统性能。
领域特定语言(DSL): 在特定业务场景下,可能会设计一些简单的领域特定语言,用于配置、规则定义等,这些DSL通常运行在现有的通用语言之上,而非独立的存在。

3. 人才储备: 市场上拥有大量熟悉主流编程语言的工程师,招聘和培养这些人才的成本远低于培养掌握全新语言的开发者。大规模采用成熟语言也有利于团队的协作和知识的传承。

四、 研发投入方向的考量

1. 战略重点: 中国互联网巨头将研发投入的重点放在了能带来直接商业价值和竞争优势的领域,例如:
人工智能(AI): 大力投入在机器学习、深度学习算法、模型训练和推理优化上。
大数据: 构建和优化海量数据的处理和分析平台。
云计算: 发展和完善自身的云基础设施和服务。
5G/IoT: 探索与新兴通信技术结合的应用。
操作系统/芯片: 少数巨头(如华为)在这些底层领域有所投入,但其目的更多是解决“卡脖子”问题,而非直接服务于互联网业务的编程语言创新。

2. 从“用”到“创”的逻辑链条: 科技创新的一个常见路径是从“使用”成熟技术,到“改进”和“优化”现有技术,最终到“创造”全新技术。中国互联网公司目前主要处于前两个阶段。虽然他们在应用层面和特定技术领域(如算法)取得了全球领先的地位,但要在编程语言这种最底层的通用技术上实现从0到1的突破,还需要更长的时间积累和战略决心。

五、 少数在底层技术有所探索的案例(但并非通用编程语言)

需要注意的是,虽然没有像C++、Java、Python那样独立的、被广泛使用的通用编程语言,但中国在一些特定技术领域也有探索:

操作系统: 华为的鸿蒙(HarmonyOS)是自主研发的操作系统,虽然它也使用了Java、JS等语言的开发框架,但其核心内核和底层架构有自己的设计。
数据库: 一些国内公司也投入资源研发自己的数据库系统。
编程语言的子集或框架: 在某些特定场景下,可能会有内部的脚本语言或DSL,但其影响力局限于公司内部或特定领域。
对现有语言的贡献: 中国的开发者也在积极参与到开源项目(如GCC、LLVM、各种主流语言的社区)中,为现有编程语言的发展做出贡献。

总结来说,中国之所以没有设计出“自己设计过”的(具有全球广泛影响力的通用)编程语言,并非因为缺乏人才或能力,而是由其发展路径、商业策略、技术门槛以及资源投入的优先级所决定的。 互联网公司更倾向于利用现有成熟的技术和工具,在应用层、产品设计和商业模式上实现创新和竞争优势。在底层技术,特别是通用编程语言这种需要极长周期和生态投入的领域,商业逻辑和风险考量使得“弯道超车”的策略更多地体现在对现有技术的应用和优化上,而非从零开始的原创性颠覆。

当然,随着中国科技实力的不断增强和自主创新意识的提升,未来是否会出现具有国际影响力的国产编程语言,也并非不可能,但这将是一个漫长而艰巨的挑战。

网友意见

user avatar

创造一门伟大的语言是很逆天的事,需要献祭一个伟大的企业的。

创造c和Unix的at&t实验室被献祭了

创造JavaScript的网景被献祭了

创造C# Delphi的anders来自borland,borland已经挂了

创造Java的sun microsystem被献祭了

创造rust的Mozilla也悬了

创造objective-c的苹果已经被献祭过了

以上只是玩笑,但是创造一门流行语言的确是投入非常大,回报周期特别长,甚至根本没回报,风险特别高的事情。

开发编程语言需要有那么一批很有才华又没有生活压力,可以仅仅出于兴趣做事的一群人,社会和行业也能包容他们的项目失败。

目前国内的IT行业没有这样的人,有也很少很少,即使年薪百万以上的,也要发愁年底的KPI,下个月的deadline,手头的bug和需求。

user avatar

业务增长的时候大家都忙着搞业务赚钱,业务不增长了才会去搞技术和概念,然而这并没有什么卵用,目前还没见过哪个互联网公司靠技术重新实现业务增长的。

国内也快进入这个阶段了。

user avatar

我想你可能对"厉害"这一词存在一些误解。我拒绝过阿里、做过微信支付的接入,在某老牌互联网公司搬过几年砖,去过几个国家的Google见朋友,聊他们做的事情,包括但不限于Google实时搜索引擎的实现、集群分布式编译器、LLVM编译器、连接器,以及C++适配ARM、MIPS、PowerPC等非x86架构编译器、看过Google的closure compiler一些代码。我很明确地和你说,以Google的技术水平,他一家可以把百度、阿里、腾讯三家同时吊打,也许还可以再把国内的JD、360、PDD和字节当成下酒小菜,Oracle、Intel、微软、Apple只需要站在旁边看着就行了。国内的互联网公司有的只是业务竞争力,而没有技术竞争力,主要是国内赚钱也不需要在技术上投入这些东西。

给你们看看微信支付退款结果用ECB加密的API,AES-ECB这在教科书里已经明确告诉不能使用的加密方式被当成商业加密方法来用了

这是中国一线的大厂,我还要吐槽仓的appId,appid,腾讯微信团队整个一精神分裂,喂开发者吃屎

在一个API文档里我同时见到了无驼峰、小驼峰、下划线三种标准,我工作这么多年,绝无仅有,这是港股市值排名第二的中国互联网公司给的API。业务赚钱多不等于技术厉害,跟阿里几个P8、P9聊下来的唯一感觉,他们总想让自己看上去高高在上,但实际水平烂得要命我的前同事受不了他们工作一年就走了。

再看看代码鵝厂代码文档,简直亮瞎了我的钛合金狗眼了~

user avatar

别说编程语言了。连云服务的官方 SDK 都做不好,竟然没有可取消异步 API(今年是 2021 年)。就这种设计水平,折腾出来的编程语言能有进步性吗?就算能用的,只怕也是绑架爱国情绪,改关键字和语法细节的国产套壳吧。

一部分答案真是醉了。明明是剥削严重,分配不均(各种方面),导致创新不足的问题。偏要搞得被害妄想一样,扯到什么话语权上面去。

事实就是,在设计编程语言这一领域,国内这些「厉害」的互联网公司一个能打都没有,不如易语言的设计者远甚,更比不上一些非商业力量。

最后我问一句,Microsoft 整 F*(FStar)能获取什么商业利益?

user avatar

早期中国互联网的核心是啥?C2C . copy to china。

那么他们copy 的都是啥?

2000年左右,4大门户网,抄袭的是门户网站。

博客中国的方兴东,因为大学做实习生给IBM翻译了几篇blog相关的内容,然后抛出来弄了么这一个。

百度也是给谷歌打工,后来发觉可以移植到中国来。

后面携程上市,也是抄袭类似的商业模式。

我们再说电商的阿里系,淘宝早期根本不承担快递,不承担库存,只做信息发布和找流量。甚至后来的聚划算,根本不管你的成本和库存,野蛮要求押金20万,现有零售价降一半。

再看一看,后面脱离BAT体系发展的其它互联网公司。

美团,饿了么什么的,连外卖员都不是他的,得自己成立一家公司和他签约;滴滴也差不多,新一中形态的出租车牌照公司;蜂巢、菜鸟驿站等快递柜与代收业务,都非常会转嫁矛盾与责任。

当然,这里也有一个号称自己是互联网的小米,给雷军一个人的奖金都比每年的研发投入高。

那么,这就有了一个很简单的结论,商业模式决定一切……(这话是马云在央视火爆全国的《赢在中国》里的名句,同期还火的另外一个货是牛根生,蒙牛的老板。)

在业务层的结构上都在抄袭了,自然不会去创新什么基础技术了。

其实吧,说句公道话,阿里有钱了之后,在做阿里云业务的时候,也在做去IOE的工作,算是某种意义上的“基础性”工作,当然与编程语言设计这种还是上层了很多。

计算机技术真的是一门复杂庞大的学科,芯片制造到底层语言、BIOS编写(简单理解为初级管理系统也没错)网络链接与组建、标准化使用,涉及到的方方面面特别复杂。目前实力还不允许我们去领导编程语言的设计。(易语言这么多年了,也没见哪个厂家以这个语言为核心打造产品)

我们的希望是在第三代半导体资料的计算机基础科学领域中慢慢的增加话语权。

user avatar

原因非常简单:因为焦虑

我们来看看那些“大部分流行的编程语言”都是什么样的人设计出来的:

java语言之父:詹姆斯·高斯林,40岁左右做出了初代java。

go语言之父Rob Pike,约50岁时开发了go。

go语言的另一位爸爸:Ken Thompson,也是Unix操作系统的创始人,去谷歌造go的时候已经60多了。

python语言之父:Guido van Rossum,35岁发布了初代python。今年64了,头顶依然郁郁葱葱。

ruby语言之父:松本行弘,30岁发布了初代ruby。从中学起一直怀有发明编程语言的执念,27岁时开始搞ruby,在各位语言之父中算是相当年轻了。不过松本哥当年的环境比较特殊:当时日本经济萧条,公司没有业务,但按日本传统不能轻易辞退员工,所以Matz每天在公司悠闲地写ruby,心安理得地拿着工资干私活……

所以你看到了吗?能写出流行世界的编程语言的人,要么年纪大了没事闲的,要么被公司包养吃喝不愁。

总之,我们今天用的大部分编程语言,都是这帮吃饱了撑的中年老男人搞出来的。

那么,中国互联网公司的程序员每天在操心什么呢?

35岁的焦虑怎么转管理岗,否则被公司优化掉怎么办;

30岁的焦虑掉头发找不到女朋友;

25岁的,一半焦虑每天韭韭六能不能活到35岁,另一半已经被韭韭六得没有任何想法了。

啥?听说你小子想搞个编程语言?这个月的KPI完成了没有?还有福报吗?还有狼性吗?

等到知乎上搜不到“35岁程序员”这种话题之时,也许题主的问题自然会有答案。

其实,中国那些“厉害的公司”、甚至“厉害的个人”很可能已经做出了自己的编程语言,只是不对外公开、或者流行度很低而已。

(当然,大概率是基于现有各主流语言特性拼凑出的缝合怪,不敢指望有什么颠覆性的突破)

因为题主问的是“流行的编程语言”,而不是“公司内部关起门来用的编程语言”。

一门编程语言要想全世界流行,那它最起码应该是公开且免费的。

只要设计新语言真能解决问题、提高生产力,就一定会有公司去做,不过没有必要公开;或者,可以对一些企业客户开放,但也不太可能免费。

所以,那些公开且免费的编程语言,背后是什么样的公司在推呢?

有自己操作系统的公司。

比如,微软推自家的c#/.net,是为了让更多码农开发出在windows上运行的应用。显然,这样的应用越多,用户买windows、不买mac的理由就越多。

苹果废掉oc、强推swift,自然也是出于同样的思路,只不过立场相反。

那么请问,中国这么多厉害的互联网公司,哪个有自己的操作系统?

连自己的操作系统都没有,还要去设计自己的编程语言,免费给全世界用,你不想用还要花钱打广告说服你用?

这样的公司又是图个啥呢?


我最近出了两本新书,感兴趣的可以看看:

一本既不吹捧科学家的伟大、也不纠结历史细节、只想让你无废话看懂量子、还吭哧吭哧手绘100多张彩色漫画实验图解的硬核科普:

一本不屑于教Python和调参、只想和你探讨人类命运和智能本质的AI科普:

user avatar

不要用“国外起跑早”麻痹自己了。

中国IT行业就是存在很严重的问题。

2004年,曾有一篇很著名的文章《Lua让我脸红》。可惜的是,如今16年过去了,看起来依旧没有什么改变。文章链接如下:blog.csdn.net/myan/arti

我们经常说操作系统国外已经形成了垄断,做了几十年,我们即使做了操作系统也不会形成生态,数据库,编程语言也是类似道理。

但是这几年的发展,我对这类回答产生了怀疑。

以10年为单位,从2008年到2020年,IT行业涌现了很多新的技术,新的框架,新的工具,新的概念。

这不能再用国外起跑早麻痹自己,因为我们也是一样出发的。

移动端诞生了Android和IOS两大操作系统,我们没跟上。唯一有点消息的还是尚在构思中的鸿蒙系统。

编程语言中,Kotlin在2011年发布,Go在2009年发布,Swift在2014年发布,Dart语言在2011年发布,Groovy在2007年发布。而国内这10年来,几乎还是零。

数据库中,InfluxDB在2013年发布,MongoDB在2011年发布,Redis在2009年发布。是的,这些看起来“古老”的数据库,其实都诞生于10年内,可是我们还是没有。

大数据,消息队列里,Kafka在2011年发布,Storm在2011年发布,Spark在2009年发布。这些技术构成了现代数据分析的基石,我们还是落下了。

机器学习领域,Deeplearning4J,TensorFlow,Caffe,Keras等等,都是近年来才出现的技术。可惜的是,还是没有我们。

前端,后端框架,开发工具,测试工具,基础库(类似Okhttp,RxJava等等),Docker,几乎都与我们无缘。

更不要提工业软件了,几乎是一片空白,以至于哪怕是华为这样的企业,被禁用工业软件后也步履维艰。

虽然我们也有一些优秀的框架,但还是掩饰不住我们在IT基础领域的缺失,无论影响力还是应用广泛程度都远不如人。论“自主原创程度”,IT行业恐怕可以从倒数名单中找到。

这绝对不是一句“我们起步晚,已经有现成品”就能推辞的。

担心在于,别等到10年后,还有人继续问这个问题,我们回答还是“别人已经做了”。

user avatar

ReScript 官网可以在国内正常访问了(rescript-lang.org)

这也侧面说明了话语权的重要性:网站是由社区志愿者搭建的,之前因为某些原因不能访问,但是在我表达了需要VPN很不方便的事实之后,最终我们保障了国内程序员的正常访问。

我们会继续努力健全Rescript 的生态,打造第一个华人主导的世界流行的通用程序语言。

=============

更新一下:写了第一篇针对中文用户的程序语言设计科普文章 ReScript的特性一: 鲜为人知的Row polymorphism - 知乎 (zhihu.com)

==========================================

作为国内可能是唯一的,真正意义上完整实现过编程语言和整套工具链,并且有相当国外商业用户的人,看到这个问题有点五味杂陈,说说自己的感受。

先说说自己的背景
自己是Rescript的主要作者(github地址),全职从事这门语言的开发已经有7年了,前三年在国外,后四年在国内。使用该语言的大公司有facebook, SAP, 索斯比,ubisoft(育碧)等。我们之前在维也纳和芝加哥等地也开过几百个人的User conferences。
使用这门语言授课的学校有常美国的Ivy League布朗大学,印度的IIT等。

设计一个有人用的程序语言需要的工作

  • 语言的卖点

设计一门语言是要来解决一些问题的,如果只是语法上的修饰像木兰甚至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方面,国内的公司还面临一个问题:花了钱不一定能找到合适的人。

总结

做自己的语言是个很需要有情怀的事情,困难很多。但是长远意义上是一个国家在基础软件问题上的话语权的问题,还是衷心希望国内有些有情怀的公司能把这个事做起来。

user avatar

因为贫穷。。。

身体上的穷或许可以通过几顿饭缓解。精神上的穷就需要几代人才能改善。

类似于编程语言这种发明轮子的行为,需要这个社会上出现一大批高学历社会闲散人员。这些人衣食无忧,吊了郎当。随便上上班,还能维持生活。

只有这种人才能吃饱了撑得没事干,有一天晚上突发奇想。干这种自己设计编程语言的工作。

在中国这种严重内卷的社会。他们的生活是这样的。

上完小学上中学,上完中学上大学。
大学毕业忙就业,上班期间生孩子。
生完孩子养孩子,奶粉尿布哺育忙。
学区房,补习班,辅导功课到深夜。
等到孩子上大学,又帮孩子买房子。
等到孩子结了婚,接着帮忙带孙子。
等到孙子长大了,半截身子入土了。
跳上几年广场舞,把腿一蹬挂墙上。
当里个浪!当里个浪!

大部分高学历人员光是活着,就已经耗尽了所有的力量。没有闲工夫做这种事情。

user avatar

1、设计过

2、与大众直觉完全相悖的是,编程语言特么每天都能被设计出来成千上万个。

3、超过一半的程序设计语言在设计出来之后就被扔在一边了,只有极少数的会有人写解析器。

4、写了解析器的语言里面只有很少一部分会实际拿来用。

5、拿来用的里面只有极少数会拓展成通用目的语言。

6、被拓展成通用目的的语言只有极少数的会被组织内部认同和推广。

7、最终出圈的语言万分之一不到。

8、能够流行起来的再除以一万……


设计程序设计语言压根儿不是什么高大上的事情,你随便找个语言来,把关键词稍微改改就能成一个新的语言,然后把Tokenize改一下就可以编译了(毕竟你只是改了关键词,不涉及到词法分析之后的步骤)。

当然有人会说,你这压根儿没有创造新的语言,你修改后的语言本质上和原来那个语言是同一个。呵呵,而事实上就是,如果VB.NET和C#这俩语言都砍掉不超过20%的元素,这俩语言词法分析后就特么是一样的东西……你说这俩是一个语言?



所以说,程序设计语言的本质是什么?

你只需要把键盘上几个键交换一下位置,然后按照原来的键位输入一段程序,这段新的程序就构成了一个新的程序设计语言。譬如说我把p和b交换一下位置,那么public就成了buplic,private就成了brivate。很好理解吧,这样我就完成了一种新的怪异的C#语言。

但是这种变化是没有意义的,没错,但是我们说,用int表示32位的整型和用integer_32表示32位整型有什么区别呢?程序设计语言就是这么个东西,就像qwerty键盘一样,大家已经习惯了,你就很难创造一个新的出来。在原来的基础上修修补补,如果是小修小补的话,大家没有动力去学习新的语法。如果是大开大合的话,大家就难以适应。

一门流行的程序设计语言的诞生需要一个契机,就像键盘布局一样,这个契机过去了,小修小补没人用,大开大合更没人用


所以,设计一个流行的程序设计语言需要超人的洞察力和对时机极其精准的把握没有合适的时机,你再牛逼,也没法创造出一个流行的程序设计语言来

user avatar

主要是因为开源,没有研发的动力。

哪天欧美不让你用了,可能就有动力了吧。

问题是开源不可能禁的。

所以国内大公司只要记得用开源的,把开源软件风气带起来,使外国不能禁止就足够了。

个人觉得,编程语言再折腾,意义真不是很大了。真需要那么多语言吗?像操作系统一样,把开源的linux玩好用好就够了。

倒是闭源的不可缺少的工具软件,这个需要好好研发。以免被美国卡脖子。

还有编程语言并不难。难的是,让全世界的开发者都用,形成一个好的生态。不说世界通用,做一个让高端开发者看得上的中文编程语言,现在都没有。主要还是不想。

user avatar

因为中国并不具备有真正实现一个编译器的能力和技术储备,当然并非完全没戏,这个最后说

注意我这里用的是中国,而不仅仅是某一个互联网企业,比如阿里或者腾讯,是全部加起来,也就这样

很开心滴看到,越来越多人意识到,阿里和腾讯,这些企业,其实只是表面上的大,也就是胖,其实并没有多少技术能力,他们是被中国这个庞大的市场给喂胖的,并不是他们多有肌肉

真要跟谷歌等企业在国外面对面硬抗,翔都给你打出来

中国的技术员,比较擅长的,就是从老外开源那边,抄过来,然后改改,然后说,我这是自研的,这种行为不胜枚举

每当我看到这种行径,我的脑海里就浮现出几个成语:欺世盗名沽名钓誉

还有一个网络用语:无能狂怒

在知乎上,每当我指出他们皇帝的新装的时候,很多技术员会有两种表现

第一,解决不了问题,先否定问题,该问题不存在,没有这个问题。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年)前后接力,才搞出来的东西,所以国外其实也不是完全依赖企业的力量,而是企业跟高校合作后的产物,研发的主体在高校上

user avatar

中国互联网公司的垄断手法还局限于当赛博地主

而历史上创建编程语言的公司,垄断手法则是开放性垄断,通过开放来让更多人使用,从而间接形成垄断

不把赛博地主的问题改掉,中国的互联网公司的前景也就止步于这样了

user avatar

作为户口一直落在劝业场街道的天津人,我在美国设计过三款语言。

第一款是一个指挥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暴露出来,去思考“懒得学、懒得看、懒得配置、懒得安装”的那些人真正需要什么需求,我去把他实现出来——只要你:

  1. 打开网页;
  2. 用30行代码描述你想解决的问题。

剩下的功能交给babeljs作为compiler(外加上各种语法的plugin)和runtime来帮你自动在浏览器里配置、依赖、安装、运行、输出、完成。

(当然如果你现在想用的话,无论手机电脑iPad龙芯汉芯红芯,直接点击 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的这些技术生态社区和商业上全面成功的语言——而不应该也不可能是“别人有一个苹果,我也造一个苹果打败他”——这个问题跟国籍毫无关系,任何工业界或者学术界的从业者,都有机会在自己领域发现最前沿的问题并试图解决出来——这种机会是人人平等的,只不过在国内互联网公司目前的环境下,这种环境可能目前并不存在。

user avatar

朋友,这里有一个巨大的误会,以为是『互联网公司』创造『编程语言』,不是!不是!不是!

创造『编程语言』从来就不是『互联网公司』的正事,创造『编程语言』的是软件公司和软件科研机构,OK?你的,明白不明白?

比如说,微软首先是一家软件公司,然后才把自己部分转变为互联网公司,微软为了发展软件,发明了C#、F#、TypeScript这些编程语言。

但是,对于一个纯粹的互联网公司,他们做的是『服务』,为了提高生产里,他们可能有动力制造一个框架,制造一种工具,但是真的没有什么动力去创造编程语言,或者说,就算他们不创造编程语言,又怎样呢?用软件公司或者软件科研机构创造的编程语言就好了嘛。

所以,这个问题是:为什么中国出了这么多厉害的软件公司,但没有自己设计过编程语言?

答案是:中国这些『厉害的』其实只是互联网公司,不是真正的软件公司啊

user avatar

中国互联网是一个重运营拼执行的市场。你能设计一门新的编程语言提高运营效率吗?不太可能吧,运营都不懂编程呢……那你能设计一门新的编程语言提高执行力吗?这个还值得思考一下。

如果我们专注于程序员在产品迭代上的执行力,我觉得设计新的编程语言是有潜力的。主要的障碍是中国人力成本太低。当你提议老板给你时间设计一门新的语言时,老板问你效益和周期。效益当然是提高产品迭代执行力,但周期要按年来算。老板如果没有远大志向,直接把你否决了,多招一些人也能解决执行力问题。

就算老板有远大志向,让你带一两个人开始设计这门新的语言,但招人不能停啊,不可能等你做出来了再提高执行力吧。等你做出来了,公司程序员数量翻了几倍,你在公司内推广的成本比你预想中的高得多。人都是抗拒改变的,你要别人学你的新语言,甚至用你的新语言重写部分代码,这到底是提升执行力还是拖累执行力啊?你真的能证明你的新语言最终能提升执行力吗?

中国大部分优秀的技术人员都不是及格的销售,你发明了新的语言但在公司内部都推销不出去,大概率故事到此结束。

美国作为一个资本主义社会,大家从小就被潜移默化,意识到这个社会并不是真正唯才是举的,只有真的卖得动才能变现。相对来说,大家更会卖一些。

user avatar

我觉得可以不用纠结这个,反而要不管白毛黑猫抓住老鼠的就是好猫。

比如我们上初中学物理,突然来个牛顿定律,如果我们纠结为什么牛顿不是中国人,不是我们老祖宗的东西就不学,那对个人成长将会是毁灭性的打击,因为后面学数学,学化学还有很多东西国外的科学家奠定的基础。

中国互联网公司的发展的好,正说明了我们对这些应用做的更好,我们的创造性也不差,别人基础打的好,一个是因为他们是先发国家,走了前面,二是因为我们自身历史在煎熬。这些都是过去式,不用再纠结。

如果未来我们人工智能发展领先,大数据发展领先,航空航天发展领先,5d和6g发展也领先,那未来我们也会给后人奠定很多基础性的东西,跟牛顿定律一样牢固,出现在全球各个国家的中学和大学的课本上。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有