@
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 之类的破烂。不过这个文献跨度比较大我不想每次都展开。
至于能力甚至都没入门低级趣味的门槛的,我暂时不想多评价。