V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SystemLight
V2EX  ›  程序员

为什么主流编程语言来来回回就那么不到十几种,有很多还是衍生出来的,有什么好用但是不火的语言么?

  •  4
     
  •   SystemLight ·
    SystemLight · 227 天前 · 9376 次点击
    这是一个创建于 227 天前的主题,其中的信息可能已经有所发展或是发生改变。
    110 条回复    2021-03-15 14:24:45 +08:00
    1  2  
    Jirajine
        1
    Jirajine   227 天前 via Android   ❤️ 2
    F#可以算是好用不火。
    其他的要么就是偏学术不适合应用,如 Haskell 。要么就是还处在开发早期,如 zig 、Crystal 、v 等。
    janus77
        2
    janus77   227 天前   ❤️ 1
    php ruby
    msg7086
        3
    msg7086   227 天前
    如果好用,那大家为什么不用呢。
    Ruby 算一种好用但是不火的语言么?(虽然硅谷几年前满地都是用 Ruby 起家的公司。)
    EKkoGG
        4
    EKkoGG   227 天前
    优秀和流行本来就是两个概念啊。时也,命也
    puzzle9
        5
    puzzle9   227 天前
    ruby 一直想去尝试
    可能因为 laravel 中的 要优雅
    hronro
        6
    hronro   227 天前
    @Jirajine #1
    v 就算了吧
    qsmd42
        7
    qsmd42   227 天前
    十几种为什么嫌少...大概有生之年你都学不完
    chenqh
        8
    chenqh   227 天前
    @msg7086 感觉动态语言最大的问题,就是性能弱,什么性能不是大问题都是扯淡的,大公司服务端真的很少用动态语言,特别是国内
    baobao1270
        9
    baobao1270   227 天前
    我觉得 C# 就是好用不火……
    littlewing
        10
    littlewing   227 天前 via iPhone
    c
    agdhole
        11
    agdhole   227 天前
    国内 c# 吧,得益于微软的运营,都跑完了
    DoctorCat
        12
    DoctorCat   227 天前
    VB6 好用… 过气儿了
    msg7086
        13
    msg7086   227 天前
    @chenqh
    所以初创公司特别喜欢用这些。
    初期根本没多少客户,撑死几千几万个用户,一台机器怎么也能跑下来了。
    但是能用两三个程序员干出大公司几十个程序员的活,这得省下多少钱啊。
    等你拉到了几百万投资以后,再用别的语言去逐步替换性能瓶颈就行了。
    试错成本会低很多。

    大公司正好相反,更关注招人的成本而非用人的成本,宁愿找十个写 Java 的人也不愿意找一个写 Ruby 的人。
    因为招 Java 好招,一块石头扔到马路上都能砸到几个会写 Java 的。
    Ruby 呢,你叫破喉咙都不一定招到一个。
    国内的 Ruby 程序员怕不是就 Ruby-China 上经常在线的那几个了……
    Python 好招一点,但是 Python 语言的表达力我觉得还是有一些欠缺。

    所以国内 PHP 流行啊,又好招,又能一把梭……
    fxjson
        14
    fxjson   227 天前 via Android   ❤️ 1
    ruby 项目一大就完犊子了,语法糖太多,不利于维护,国内人员又少,所以就这样了
    stupil
        15
    stupil   227 天前
    @Jirajine f# 现在还在更新吗?
    lightjiao
        16
    lightjiao   227 天前 via iPhone   ❤️ 4
    C#真的好用,最近在研究 async/await,能想出这种封装的人,真的太厉害了
    woctordho
        17
    woctordho   227 天前 via Android   ❤️ 1
    Lisp 大法好(
    agagega
        18
    agagega   227 天前 via iPhone
    必须 Ruby (其实在国外也挺火的)
    zhuangzhuang1988
        19
    zhuangzhuang1988   227 天前 via Android
    @stupil 更新啊,一直更新的 最近更新了 ide 体验 各种报错修复提示

    语言多没用 要有杀手应用。还要有配套的 ide 设施,而且安装不能复杂,而且要照顾 3 大平台,f#在三大平台 5 分钟可以准备好,ide 体验 ocaml 我一直放弃中。。。
    cmdOptionKana
        20
    cmdOptionKana   227 天前 via Android
    语言设计优秀的很多,但由于不火,第三方库太少,就会导致不好用。因此不火很难好用。
    treblex
        21
    treblex   227 天前   ❤️ 3
    Haxe 可以构建针对 JavaScript,C ++,C #,Java,JVM,Python,Lua,PHP,Flash 的跨平台应用程序,并允许访问每个平台的本机功能。Haxe 拥有自己的 VM ( HashLink 和 NekoVM ),但也可以在解释模式下运行。

    前身是基于 flash 的

    看起来挺牛批的,似乎用的人不多
    zhuangzhuang1988
        22
    zhuangzhuang1988   227 天前 via Android
    scala 有杀手级的 spark 外加后来的 idea 插件支持
    ruby 有杀手级的 rails 外加后来的 idea 家的 ide 支持
    chenqh
        23
    chenqh   227 天前
    @msg7086 欠缺有怎么样,golang 连个泛型都没有,国内大公司还不是用的飞起,慢就是原罪,

    golang 没泛型,没继承,整天 if err != nil, 但是 golang 是个好语言
    titan2006
        24
    titan2006   227 天前 via iPhone
    易语言 虽然跟 vb 差不多但汉语非常好懂
    falcon05
        25
    falcon05   227 天前 via iPhone   ❤️ 1
    最近在学 lua,整个解释器不到 200k
    yazinnnn
        26
    yazinnnn   227 天前   ❤️ 1
    流行的语言中,越像 lisp 的越不火,js 除外(
    PopRain
        27
    PopRain   227 天前
    C#, 不过也仅仅是国内无脑鄙视微软产品;国外用的应该不少,看看热度排名 java 的一半总有了
    lenbias34
        28
    lenbias34   227 天前   ❤️ 1
    Zig 感觉还不错. 超级低成本的 intercorp with C(可以在 zig 代码中直接使用 C header 文件); comptime 是一个设计亮点; 还有丰富的交叉编译; 可以编译出很小很小的二进制文件, 这一点国外有好多搞嵌入式开发的都从 Rust 转到 Zig
    whee1
        29
    whee1   227 天前
    erlang 算不算,最近還有了 jit 。
    zhuangzhuang1988
        30
    zhuangzhuang1988   227 天前
    @PopRain 还有做 游戏的 C#最好了
    ReferenceE
        31
    ReferenceE   227 天前 via Android
    C#,好用但是会失业
    quiet1991
        32
    quiet1991   227 天前
    感觉还沉浸在黑与白、好与坏的二元思想中。选择使用什么语言跟选择一样工具类似,比如扳手,螺丝刀,都要综合考虑,好用只是一个方面而已。
    Kasumi20
        33
    Kasumi20   227 天前
    Kotlin 啊,它应该取代 Java
    iwh718
        34
    iwh718   227 天前 via iPhone
    p er l
    neetrorschach
        35
    neetrorschach   227 天前
    @lightjiao 最近在开发一个 excel 插件,第一次接触 async/await 。为了异步调用 http 接口。虽然能照着写出功能来,但还不怎么明白。特别是一旦调用一个异步方法后本方法也需要变成异步。有些奇怪这个传递机制为什么这么设计。
    TangMonk
        36
    TangMonk   227 天前 via iPhone
    Ruby 不错,我一直用。但是最多只能做做小项目,大了不好招人也不好维护。
    namelosw
        37
    namelosw   227 天前   ❤️ 2
    Elixir, 开发效率约等于 Ruby.
    做网站并发大于 Java.
    上手比 Ruby 简单, 完全不像其他函数式语言难学得一批.
    还有跟 Rails 质量同级的框架, 写过 Rails/Django 的一天内培训完成, 第二天直接干活.
    surbomfla
        38
    surbomfla   227 天前
    @chenqh golang 的优点盖过缺点了.
    shijingshijing
        39
    shijingshijing   227 天前
    C#和 Visual Studio 的组合,真是可惜了一门好的语言+宇宙最强 IDE 。
    ourgoder
        40
    ourgoder   227 天前
    Pascal
    jiyinyiyong
        41
    jiyinyiyong   227 天前
    两个问题连在一起, 有点意识流...

    > 为什么主流编程语言来来回回就那么不到十几种,有很多还是衍生出来的,

    主流语言看起来那么多种, 因为榜单上统计出来放出来一般也就 10 种 50 种 凑个数,
    最终头部, 看看什么平台用什么语言, 大的平台就那么几个, 就倾向那么几种了.

    造编程语言的原因很多, 早年从没有编程语言, 当时写汇编, 听说很痛苦,
    当时造语言的原因就是想要更容易写, 像 Fortran 加控制结构, Lisp 按照 lambda calculs 做抽象之类的,
    貌似 C 语言出来以前工业就用着好多种了, 加上搞理论研究的那帮人动不动造很多的教学研究语言..
    然后研究加上工程经验积累下来这么多年, 各种功能排列组合也就多得要死了...

    知乎有人问过了 https://www.zhihu.com/question/20104312

    > 有什么好用但是不火的语言么?

    先看平台吧...

    我的话玩 ClojureScript, 玩 Nim, 然后打算挖一下 Haskell.
    cgpiao
        42
    cgpiao   227 天前 via iPhone
    ruby,kotlin
    stimw
        43
    stimw   227 天前
    可能因为一个语言生态发展到一定程度后,没有啥致命打击基本不会死,尽管这个语言设计本身在一众语言中不出类拔萃,奈何用的人太多了...
    love
        44
    love   227 天前
    ruby 当年大火时我学了,但从来没用过,因为这语言设计得有点随心所欲,不是我喜欢的风格,就弃了,后来的发展也证明了不行。

    C#就在一个公司用过半年,之前用过 java/php/python,设计中规中矩该有的都有,功能比 java 功能全但然并卵,实际用起来差距不大(我非常非常讨厌 C#编程风格,当然这是个人品味)。

    现在用 typescript,当前我最喜欢的语言(胜过前欢 python )

    至于函数式语言,尝试用几次,门槛太高,一开始感觉不到好处,没一次入门成功。
    ollyshit
        45
    ollyshit   227 天前
    C#这么火?他不是不能跨平台吗
    wanguorui123
        46
    wanguorui123   227 天前
    C#不火但好用也跨平台
    handuo
        47
    handuo   227 天前 via Android
    Clojure 国内用得不多吧
    yazoox
        48
    yazoox   227 天前
    @love 为什么说“函数式语言”门槛高?
    cmdOptionKana
        49
    cmdOptionKana   227 天前
    @yazoox 纯函数式学起来不算难(但有转换思维方式的阵痛期),写起来很爽,但回头看代码和维护、或看别人的代码时脑力负担比较大,好累啊。
    charlie21
        50
    charlie21   227 天前
    它一定是有重大缺陷才不火的。
    Marxism
        51
    Marxism   227 天前
    @lightjiao 这不是 js 里面的概念吗
    Leviathann
        52
    Leviathann   227 天前
    @Marxism C# 12 年就有了
    Jackeriss
        53
    Jackeriss   227 天前 via Android
    Python,还不够火(我老 py 吹了)
    Owenjia
        54
    Owenjia   227 天前
    好用不火 OCaml 算是一个吧,虽然过去多核一直是个问题……
    echo314
        55
    echo314   227 天前
    你看楼上就有在“吹”(中性)各种语言的了,想看他们打一架,比如 F#、C#、Haxe 等等。。。
    Wincer
        56
    Wincer   227 天前
    这必须是 elixir 啊
    irytu
        57
    irytu   227 天前 via iPhone
    Julia 算么
    Chancel
        58
    Chancel   227 天前
    @baobao1270 名字能分 6 成的锅,说实在的我觉得就是叫 TMD 都比 c#强
    levelworm
        59
    levelworm   227 天前
    我觉得是语言太多,不是太少。。。当然大家有兴趣创造自己的语言无可厚非。
    no1xsyzy
        60
    no1xsyzy   227 天前
    @chenqh golang 不是纯静态语言,其 interface{} 能够显著增强类型动态特性。
    同时,golang 性能也有问题,要觉得运行时性能重要,那应该都用 C/C++ 或者 Rust 。

    https://www.solidot.org/story?sid=67028
    > ( Discord )此前用 Go 语言开发了名为 Read States 的服务,但因为性能问题该服务难以满足产品需求,Go 实现的 Read States 每隔数分钟就会出现延迟飙升 …… Rust 实现的版本在没怎么优化的情况下性能就超过了优化过的 Go 实现版本。
    no1xsyzy
        61
    no1xsyzy   227 天前   ❤️ 1
    语言的流行是其应用的流行(正确的废话)
    C 的流行是 Unix 的流行
    JS 的流行是 Web 前后端分离的流行
    Ruby 的流行是 ROR 的流行
    Java 的流行是 Spring 的流行?

    唯有 Golang 的流行是因为 Google 当年还不错的风评。
    尤其刚被墙的时点国内总有一种 Google 领先一万年的想法(距离产生美)
    FightPig
        62
    FightPig   227 天前
    ruby 啊,看来大家都这么认为,不过我 rails 用了十几年了,做外包爽的一比,
    ManjusakaL
        63
    ManjusakaL   227 天前
    Elixir ?
    yzbythesea
        64
    yzbythesea   227 天前
    楼上强吹的什么 ruby,perl,elixir,clojure 我在生产环境都用过,一个月保准提桶跑路。有些代码 “好用” 不是数据性能层面的,更不是写个 hello world 然后自我感觉良好。
    HeapOverflow
        65
    HeapOverflow   227 天前 via iPhone
    Elm 和 mint

    想了解其他小众编程语言可以去 GitHub 的#programming-language 这个 tag 下看一看:
    https://github.com/topics/programming-language
    xuegy
        66
    xuegy   227 天前
    MATLAB
    我知道码农们都看不上这玩意,尤其是下标从 1 开始。但是讲道理大部分码农根本就写不出比它计算速度更快的东西。
    lightjiao
        67
    lightjiao   226 天前 via iPhone
    @Marxism
    async/await 这个封装最初的发明是 C#,不过很多语言和库都借鉴了这个设计
    lightjiao
        68
    lightjiao   226 天前 via iPhone   ❤️ 1
    @neetrorschach
    刚把一个很重要的相关概念翻译完,希望能对你有所帮助
    https://lightjiao.github.io/posts/020.csharp-configureawait/
    noreplay
        69
    noreplay   226 天前 via Android
    @no1xsyzy Java 不是因为 Android 火了一把吗?
    mikulch
        70
    mikulch   226 天前 via iPhone
    @love 你多大啦
    ryd994
        71
    ryd994   226 天前 via Android
    因为规模效益
    语言再好用,没有现成的库,什么都得自己写,那谈何好用呢?

    也有例外:汇编和 C
    因为他们不是因为好用才用得多,而是因为贴近硬件。用汇编和 C 的人要的就是什么都自己写,为了性能。
    pursuer
        72
    pursuer   226 天前 via Android
    @no1xsyzy
    golang 流行很大原因还有直接打包可执行文件,对使用端友好。虽然从模块化角度,我也不喜欢把所有东西塞进一个可执行文件的做法。
    janxin
        73
    janxin   226 天前
    说一个知道不是很多的,vlang,体积小编译快,官方自带 UI 、Web 和 ORM
    canyue7897
        74
    canyue7897   226 天前 via iPhone
    C 不算冷门吧。。。大学入门就是这玩意儿。。常年霸榜前二。。说第三就委屈了。。如果加上 C 衍生出来的 C 系。。妥妥第一
    knightdf
        75
    knightdf   226 天前
    lua
    araaaa
        76
    araaaa   226 天前 via iPhone
    scala
    ysicing
        77
    ysicing   226 天前
    scala 吧
    tanranran
        78
    tanranran   226 天前
    C#
    areless
        79
    areless   226 天前
    lua 看起来很冷门,但到处有 lua 写的脚本,luajit 效率很高,出来也早。openresty 的函数都是非堵塞的,特别特别好用。cdn 或者 waf 、API 网关常用的基本都是 lua 写的。ruby 只有 ROR 引领了敏捷开发,被各种其它语言模仿后就没优势了,ruby 的代码跟 lua 一样,看起来特别舒服。还有 coffeescript 也是非常好用,代码美观,却不火的语言,TS 后就彻底消声灭迹了
    lonenol
        80
    lonenol   226 天前
    站在工作的角度上来看:

    不火 == 生态不行 == 不好用
    ch2
        81
    ch2   226 天前
    没有库你用啥
    Adalwin
        82
    Adalwin   226 天前   ❤️ 1
    我来说一个

    Dart

    https://dart.dev/

    不喜欢的人肯定会说它的嵌套什么的,但是其实不知道这个嵌套其实是所有 UI 都存在的事情。还有自己的写法也有影响,

    我喜欢是因为它的 Inference 机制。

    你的所有代码可以像 JS 一样的去写,但是出于性能考虑,最好是像 Java 那样去写。

    还有很多很有意思的点,只有真正用的 /会用的人才会知道。

    太多人都是在那里唧唧歪歪而已。
    ak007
        83
    ak007   226 天前
    如果论解决问题,与及低成本开发,推荐:易语言。。。这语言部分场景切实好用,也切实不火。。。但真的很解决实际问题!
    Procumbens
        84
    Procumbens   226 天前
    这学期刚学了 Prolog,好不好用说不上,觉得还是很有趣的。不火是肯定不火,即使在 V2,绝大多数程序员估计也都没听说过这语言。
    这是一门逻辑式语言(logic programming),与过程式、面向对象、函数式语言的思想都不同。有兴趣的可以看看👀
    Chingim
        85
    Chingim   226 天前
    @yazoox 范畴论, 幺半群, 自函子, functor, monad, applicative 等等
    函数式编程需要懂的东西更多一点
    Lemeng
        86
    Lemeng   226 天前
    不过是有原因的。要么不好学,要么不好用
    xarthur
        87
    xarthur   226 天前 via iPhone
    @Chingim 其实我觉得这些东西是类型系统的魔法。如果学 lisp 系不知道也没什么关系(
    viruser
        88
    viruser   226 天前
    @ak007 易语言不火的原因我知道,语言开发停滞,社区混杂不堪,语法表现能力差,易语言能做的事情别的语言也能做,而且做的更好。
    mmdsun
        89
    mmdsun   226 天前
    好用但不火的语言 肯定是 C#和 F#了. 举几个现在主流语言的特

    现在的语言的 async , await,yield 等关键字
    扩展函数
    Linq 过滤语法
    包括现在火热的 Reactive 反应式编程, Reactive Extensions

    你会发现这些都是 C# 先有的....
    .NET 只是国内不火. 北美用这个比较多 , 现在开源 + 全平台支持. (web, android,ios linux ,watch 设备)
    zjsxwc
        90
    zjsxwc   226 天前 via Android
    好用但不火?
    好用必然会火,
    至少是在它那个领域是火的,或者还处于火的路上,

    那么我觉得只有 kotlin 了,比 java 与 c#好用!
    jyf007
        91
    jyf007   226 天前
    wolfan
        92
    wolfan   226 天前 via Android
    假设一下,未来你要开发的一个计时器,然后 A 用 a 语言,B 用 b 语言,C 亦之 c 。
    当你招 A 开发好了,A 离职,B 入职,那么 B 要么重写要么学 A,当 C 入职后 C 又怎么办?
    语言不在多在精在通。
    jinsongzhao
        93
    jinsongzhao   226 天前 via Android
    最终目的就是省时省力省代码,框架 /工具包 /安全性非常好的语言,要么非常流行要么总死不掉。
    xumng123
        94
    xumng123   226 天前 via iPhone
    c 和 c++
    neoblackcap
        95
    neoblackcap   226 天前
    @Owenjia OCaml 其实还算用得多,Jane Street,Facebook 不就用了
    tabris17
        96
    tabris17   226 天前 via iPhone
    强烈推荐 nim
    louishwh
        97
    louishwh   226 天前 via iPhone
    @hronro v 纯粹吹牛逼
    hronro
        98
    hronro   226 天前
    @Adalwin #82

    怎么会还有人吹 Dart ?

    你说的 Inference 机制是指 Type Inference ?这个稍微现代一点的语言都有啊?

    Dart VM 和 Dart EXE 在性能上和 JavaScript 差不多,但表达力上比 TypeScript/Kotlin 差远了,如果不是 Flutter 强行绑定 Dart,拉了 Dart 一把,估计现在 Dart 早凉透了
    tyrealgray
        99
    tyrealgray   226 天前 via Android   ❤️ 1
    @treblex haxe 没有好的 ide,我们公司前端项目用了几年,最后淘汰了换成 ts 了
    no1xsyzy
        100
    no1xsyzy   226 天前
    @noreplay 我忘记了 Android (不写 Java
    @pursuer 这是(语言的通用实现的)“特性”,我强调的是外部因素而非语言(或其通用实现)的因素更多。
    Racket 也能静态打包,因为运用了 ChezScheme 编译速度也是非常快的,然而与 Golang 热门程度差距巨大
    AppImage 更是使得任何语言都能单文件打包,但也未能有 Golang 相同的结果。
    而且这一说法解释不了国内外 Golang 热门程度差距。刚屏蔽 Google 那会一堆迷 Google 的(王垠也受到蕴染了 :doge:
    1  2  
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1046 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:33 · PVG 05:33 · LAX 14:33 · JFK 17:33
    ♥ Do have faith in what you're doing.