V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
TWorldIsNButThis
V2EX  ›  问与答

为什么欧美很多公司/团体/个人都喜欢造新语言,而国内普遍认为语言只是工具,不要过多探究语言语法本身,重要的是库、生态?

  •  
  •   TWorldIsNButThis · 2022-09-25 04:34:36 +08:00 · 2981 次点击
    这是一个创建于 797 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不光很多欧美的大公司喜欢创造新语言解决某些问题,
    比如说
    swift 为了写 UI
    go carbon 为了写 native 的工具
    Rust 为了重写浏览器


    一些个人或者团体有时候只是为了满足对编程风格(主要是 Functional programming )的追求也会选择开发新语言
    比如最近发现一个还在开发中的语言 Roc ,试图解决 FP 语言由于 immutable 导致的性能问题,目标是做到 native 语言接近的性能。开发原因没别的,就是喜欢 FP ,所以希望写需要高性能的程序的时候一样可以用 FP (宣讲视频里拿 haskell 的 Quicksort 举例,为了实现高性能的原地排序,用上了各种丑陋的 hack )
    30 条回复    2022-11-22 10:39:52 +08:00
    majula
        1
    majula  
       2022-09-25 06:06:27 +08:00
    不一定吧。

    你看看 deepin ,最近不是刚把中国 C++ 第一人 @FrankHB 招去造语言了么?

    https://github.com/linuxdeepin/unilang
    Rocketer
        2
    Rocketer  
       2022-09-25 06:57:06 +08:00 via iPhone
    因为中国互联网产业(是产业不是技术)更发达,理解更深刻。

    老外喜欢造轮子,是因为环境宽容,对赚钱没有那么大的急迫感。这有好处,也有坏处。好处是创新机会多,偶尔有个别出彩的,就可能被资本介入发扬光大。坏处是导致很多技术人员太理想主义,以为技术就是一切,不知道推广轮子的成本有多高。
    hangbale
        3
    hangbale  
       2022-09-25 07:02:11 +08:00 via iPhone   ❤️ 1
    因为技术不够 稍微深度的编译器 形式语言相关的资料都是英文
    eason1874
        4
    eason1874  
       2022-09-25 07:04:39 +08:00
    国外巨头是科技公司,他们真心奔着技术去的,想做制订标准的领头羊

    国内巨头只是互联网公司,他们想做的是产品,而技术只是实现产品的手段,所以什么成本低就用什么。换句话说就是赚快钱,太久的事情他们不敢想,因为说不准几年后就会被摘桃子。与其担心受怕,不如一心赚钱随时润
    Jirajine
        5
    Jirajine  
       2022-09-25 07:14:07 +08:00
    @majula 看了一眼,该说果然不愧是国产语言。国内公司和个人没有开发用于使用的编程语言的需求,只有开发用于宣传的编程语言的需求。
    binux
        6
    binux  
       2022-09-25 07:20:50 +08:00
    因为双标啊
    msg7086
        7
    msg7086  
       2022-09-25 07:34:38 +08:00
    >为什么欧美很多公司 /团体 /个人都喜欢造新语言
    >而国内普遍认为语言只是工具

    这两个观点有冲突吗?
    语言只是工具,人希望有更好的工具,所以人造一个新的语言?
    恰恰因为语言只是工具,所以公司才不会死守在一个语言上。
    如果另一个语言适合使用环境,马上就能换过去。
    如果没有语言适合,那就造一个。
    7zlid
        8
    7zlid  
       2022-09-25 07:56:09 +08:00 via Android
    木兰不就是新语言
    借鉴型创新就不是创新?
    狗头
    wallhitrobot
        9
    wallhitrobot  
       2022-09-25 08:57:54 +08:00 via Android   ❤️ 1
    对于大部分公司来讲 语言就是工具吧。北美基本大厂招人都不怎么看语言,算法系统设计更重视点。对于工具看法不同吧,语言制约了开发,那就用新语言来代替原本的语言,缺乏库那就造轮子。大部分新语言都是大公司主导的吧,对于一个领域掌控会强。北美的 impact 从多方面来看吧,国内可能更注重业务上的 kpi 。
    jtsai
        10
    jtsai  
       2022-09-25 09:03:26 +08:00
    这个问题的终极答案是 润
    PMR
        11
    PMR  
       2022-09-25 10:36:43 +08:00 via Android
    面向 KPI 编程的差异?
    aguesuka
        12
    aguesuka  
       2022-09-25 10:49:56 +08:00
    幸存者偏差, 因为 PLT 教育的缺失, 做的语言都死了, 所以你觉得是没人做.

    体验一下
    zhuanlan.zhihu.com/p/66349646
    www.v2ex.com/t/561958
    cmdOptionKana
        13
    cmdOptionKana  
       2022-09-25 11:06:20 +08:00
    做语言(并且能成功发展)很难的,需要硬实力啊,Firefox 那帮人折腾了 C++很多年,有实力,但 Rust 能发展也有一定运气成分。Kotlin 也是 Jetbrains 折腾了 Java 很久才练出来功力,能发展也是运气。

    Go 背后有 Google, Swift 背后有苹果(不然 Swift 会死得很惨),TypeScript 背后有微软。

    另外强如 Ruby ,小火一下之后现在也只能勉强存活,仿 Ruby 的 CoffeeScript, Crystal 发展不起来,雷声大雨点小的 Vlang ,Nim, 爹和实力不够,太难发展了。
    sghwn2
        14
    sghwn2  
       2022-09-25 11:24:26 +08:00
    之前做过一段时间的语言开发,后来项目停了,个人觉得最主要的原因还是没有这方面的需求,目前市面上的主流语言如 go ,c++,python ,java 这几个各有各的优势,基本上都是为了满足一定的开发需求而设计的,我们在开发新语言的时候遇到的很大一个问题就是我们做出来的语言和这几个比有什么优势,做出来了能干什么。结果分析了半天发现没什么好的点子,几乎所有的方向都被这几个主流语言给占领了。
    sghwn2
        15
    sghwn2  
       2022-09-25 11:29:56 +08:00
    @sghwn2 补充一下,楼主说的为了解决问题是一个很好的切入点,但是楼主举的那个例子所代表的范围太小了,简单来说就是解决了这个问题没有收益,公司并没有这方面的需求,有需求的大部分问题都被那些主流语言给解决了。而且解决一些很偏的问题,需要你有这个领域的一些知识才行,比如你想开发一个 AI 专用的语言,你首先需要懂 AI 相关的东西,然后才能知道这个领域有哪些问题。
    vance123
        16
    vance123  
       2022-09-25 11:55:40 +08:00 via Android
    夏虫不可语冰,追求短期利益才是中国公司和中国人的常态
    singerll
        17
    singerll  
       2022-09-25 12:26:12 +08:00 via Android
    因为中国的大部分是互联网公司,而非科技公司。
    互联网追求的是业务,科技公司追求的是技术。
    god7d
        18
    god7d  
       2022-09-25 12:43:00 +08:00 via iPhone
    @msg7086 阅读理解满分
    DOLLOR
        19
    DOLLOR  
       2022-09-25 12:52:11 +08:00
    不是“国内认为”,是全世界都这么认为的。
    难道你认为欧美人认为编程语言不是工具,并且随手就能造出一个编程语言?
    haolongsun
        20
    haolongsun  
       2022-09-25 18:46:27 +08:00
    认清互联网公司和科技公司的区别,另外人才储备都不一样,啥时候培训班遍地都是教系统编程,我才信这些国内互联网才开始自主研发编程语言。说真的国外大厂人才储备真的碾压国内的,他们可是花大价钱养着上古级这些基建大佬的,不过现在新的年轻人确实强,卷的很,不说定哪天真的出来了个国产编程语言。
    shiganwuguo
        21
    shiganwuguo  
       2022-09-25 19:33:33 +08:00
    因为国人都很聪明 而底层是吃力不讨好的 这种事还是让欧美啥子去做吧 我们只需要发挥自己的聪明才智拿来用搞钱就行
    LuckyPocketWatch
        22
    LuckyPocketWatch  
       2022-09-26 00:48:03 +08:00
    造的语言很多,活下来的有几个?

    当初 D 语言号称将取代 C++,我特么差点就去搞 D 了。。。
    FrankHB
        23
    FrankHB  
       2022-09-26 20:58:23 +08:00
    @majula 最近?
    FrankHB
        24
    FrankHB  
       2022-09-26 21:55:04 +08:00
    @eason1874 国外巨头……标准?你确定?

    github.com/microsoft/TypeScript/issues/15711

    这还是主流大厂里我能最省脏话的产品了。

    然后回 OP 。

    原因很简单。
    一个字:菜。
    二个字:很菜。
    三个字:非常菜。
    当然也不是全是人的原因,毕竟术业有专攻,有时候菜是理所应当的。

    说个临时想的段子:有的人觉得 context 应该翻译成“语境”,我倒是觉得翻译成“上下文”反而更好,至少信达雅里信是比较重要的。
    为什么?因为 context 在形式上就是 some form having a *syntactic* hole in the meta language 。(*Emphasize mine.*)
    作为程序员没感觉?很正常,没经过这方面训练,又没天赋自己发现甚至重新发明一遍。不过看着一票程序员连 syntax 和 grammar 都没概念区分清楚(汉语翻译错位又更拉胯),我只是觉得这种活还是别指望只会做程序员的人干比较好,就不太想多指望些啥了。(也不是专业搞这个的就一定像样,还有 doi: 10.1023/a:1007720632734 这种在关键最终结论上掉民科级别链子却能过 peer review 的。)
    当然也不是没基因干这个的就干不出表面像样到能吸引到更随大流的程序员的东西。像正常来讲工程师日常多少都得看技术规范,结果 TS 和 Rust 连个 up-to-date 的 spec 都难(没)产(有),用户基本上照样给啥吃啥,说明就没几个有当工程师的素质(暴论)。

    而当这种素质稀薄到一定程度上,所谓语言工具论也就不奇怪了。这个看法虽然明摆着 low ,但实际上也就仅仅是更 low 。OP 所谓的“喜欢造新语言”的欧美很多那啥啥,其实本质上也是挺 low 的(不算暴论)。
    当然我也不是啥反思怪,要人反省为什么看不到 low 。只需反思一下,为什么更 low 的理解仍然会有土壤,为什么 OP 自己不会**想着亲自去怒怼“普遍认为语言只是工具”而只是拿这个构成这楼的标题**,那么就解答了一半的问题。

    另一半问题,就 PL 方面特别菜(得不应当理所当然)的问题,展开一点。
    所谓编程风格是个啥,只会编程的,大多自己就说不清楚。成天 FPFP 的,有几个人知道 FLP 是啥么?
    理由也很简单,编程跟设计语言和确定所谓的风格本来就是不同的领域。只会编程的,大多甚至连可编程性的来源都没怎么关心过,又经常被坑而对这个感(无)到(能)不(狂)满(怒),所以就菜鸡互啄了。
    以讹传讹多了,到 FP 是个什么东西都难以对只会编程的用户解释清楚了(虽然我不是没试图解释过,非重点链接懒得放了)。APL 党吹的 pointless 当作 FLP 可能值得单独批判一番,因为那是真的更纯粹的“风格”。什么风格呢?嗯,好比 combinatory logic ,相比 lambda calculus ,妥妥的**低级语言**,因为刻意挖掉了抽象(lambda abstraction)顺带干掉了健全的变量。对此缺乏直观认识的,可以了解一下 unlambda 。
    设计这些抽风语言的原始形式基本都算不上纯粹的程序员;其中一些人还特别喜欢推销。所以在让人不痛快的语言恶心人的能力上,程序员不用有啥优越感的。
    这里的共同点是,不管是不是程序员,大多数语言设计者光是认知的储备上,真的对设计实用语言的 pure PL 菜得很。程序员做不大到的是连带把 PLT 也搞得一团糟,搞的 model 根本理论联系不到实际,于是俩菜坛子分裂的问题就越来越没得解决了,以至让大多数人习惯了。(一堆著名 PL 壬的例子略。)
    菜惯了导致两个相对直接的后果:一个是经常有用户发现现有的语言用不舒服;另一方面是经常有用户认为这玩意儿看来没什么可行性包袱,先上了再说。然鹅实际的维护工作做得下来的有几个?更别提考虑对业界有啥影响了。
    所以一般人注意到满天飞的“新”语言,说好听点是 DSL ,说直白点半成品都不是。嗯,顺带杀死了路人用户温故知新的能力。
    其实搞语言玩玩也不是不行,培养兴趣也是重要的嘛。但是要正视对这个世界的影响,脱离做半成品电子垃圾的低级趣味是一个社会的人补完自己的必由之路。
    Haskell 那种筛掉小鬼以后的理论家都整天只会吹 equational reasoning 的,会遇到性能问题就直球菜鸡 QoI 不行就是了。比起这个是更喜欢拿 GHC 的 seq magic 直球来黑默认 equational reasoning 和 lazy 这个核心设计思路本身(比起爆杀 monad 乃至 applicative 小鬼起来爽多了),然后再嘲讽 PFP 没 identity 倒是整活 levity 之类的破烂。不过这个文献跨度比较大我不想每次都展开。

    至于能力甚至都没入门低级趣味的门槛的,我暂时不想多评价。
    eason1874
        25
    eason1874  
       2022-09-27 01:05:02 +08:00
    @FrankHB #24 我没看懂你想表达什么,你举这个例子是想说微软制订的标准少吗?
    FrankHB
        26
    FrankHB  
       2022-09-27 19:54:26 +08:00
    @eason1874 是多少的问题吗?

    你要提正儿八斤的标准,那行,看看 ECMA-334 的版本断成什么样了?
    标准里说微软叫 destructor 不对,应该叫 finalizer ,之后微软的文档照样不听不听和尚念经。
    微软自己怕是都没好意思装作热心标准。
    eason1874
        27
    eason1874  
       2022-09-28 01:32:06 +08:00
    @FrankHB #26 同时收录到 ECMA 和 ISO 的标准你都能说不是标准,那什么能叫标准?😅

    发展后期做得怎么样,跟它被发明出来是不是奔着制订标准去的,两码事。IE 浏览器发展着发展着更是屎一样,这也没影响它一开始制订标准
    Zien
        28
    Zien  
       2022-09-28 02:49:06 +08:00 via iPhone
    语言本来就是工具,不然 C 、go 这些怎么来的?
    国内的重点是营销,而不是工具,所以不重视,而且也没那个技术积累,别说语言,wiki 、tutorial 、甚至 readme 都做不好… 之前在 GitHub 上 watch 了一个阿里的开源项目,readme 写的 abc… 其他公司连 readme 都没有…
    FrankHB
        29
    FrankHB  
       2022-10-07 16:11:35 +08:00
    @eason1874 我有说“不是”了么。
    当然你要是习惯只看个标题不看内容,而容忍挂羊头卖狗肉,那你自便,不过这也不是给微软标准化工作质量低劣辩护的理由。
    顺便 ISO 在这种 ECMA 才是第一现场的东西上没什么可以说的,基本就是抄过去,不负责起草——毕竟 ECMA 的质量是够抄的( IEEE 同理)。而相比之下,MS 的质量太挫没得抄,这也是传统艺能——否则当年 C++/CLI 提交给 SC22 就不会直接被嫌弃了。
    chai2010
        30
    chai2010  
       2022-11-22 10:39:52 +08:00
    码农都喜欢造语言,不分国界。可以看看中国语言列表: https://zh-lang.cn/
    说国内语言少,主要还是因为起步晚、工作压力大、缺少主流语言缺少存在感。

    目前工作和业余都有在搞语言:
    - 工作是 KCL 配置语言( https://github.com/KusionStack/KCLVM ),主要是面向云原生运维领域的 DSL ;
    - 业余是凹语言( https://wa-lang.org ),主要是面向 WebAssembly 的通用语言,目前已经图灵完备并在纯浏览器可编译和执行

    我个人预测未来 3-5 年,国内码农是可以卷到这个领域的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   975 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:27 · PVG 04:27 · LAX 12:27 · JFK 15:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.