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

想深入钻研一门语言 请大家出出主意

  •  
  •   714105382 · 2021-12-22 13:14:50 +08:00 via iPad · 13076 次点击
    这是一个创建于 1070 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要满足以下五条要求 1 支持多范式编程,表达能力强大 2 充分隐藏计算机体系结构的细节,特别是内存管理等等的细节 3 生态丰富,有大量的工具和库 4 语法设计现代,代码较为简洁,开发效率高 5 具有先进的 完善的工具链支持 比如 编译器 IDE 调试工具 运行监测工具之类

    目前备选 python java C# js php groovy ruby swift perl kotlin scala

    请大家帮我做做排除法 或者分析一下 n 这些语言不符合上面哪些要 如果没十全十美的 或许可以矬子里拔将军 最后我能选出一个

    135 条回复    2021-12-24 11:31:42 +08:00
    1  2  
    zhy0216
        1
    zhy0216  
       2021-12-22 13:26:10 +08:00   ❤️ 3
    ts 最好 不接受反驳
    shintendo
        2
    shintendo  
       2021-12-22 13:26:35 +08:00   ❤️ 2
    女人会辜负你,javascript 不会
    liujavamail
        3
    liujavamail  
       2021-12-22 13:26:38 +08:00
    选 java 就行了
    smallX
        4
    smallX  
       2021-12-22 13:27:29 +08:00
    rb 最好 不接受反驳
    3dwelcome
        5
    3dwelcome  
       2021-12-22 13:27:45 +08:00
    RUST WASM ,write once, run everywhere.
    israinbow
        6
    israinbow  
       2021-12-22 13:30:52 +08:00
    Swift 罢
    loading
        7
    loading  
       2021-12-22 13:32:50 +08:00
    我建议 java 或者 java 塔,哈哈。
    chnhyg
        8
    chnhyg  
       2021-12-22 13:33:44 +08:00
    绝大多数情况下,如无非常特殊要求,选 Java 基本是不会错的。

    具体详见 https://coolshell.cn/articles/21672.html
    Leviathann
        9
    Leviathann  
       2021-12-22 13:36:17 +08:00 via iPhone
    考虑到 2021 年连 Java 都在积极推进 pattern matching
    而 kotlin 居然还没有 所以就不推荐了
    wonderfulcxm
        10
    wonderfulcxm  
       2021-12-22 13:36:35 +08:00 via iPhone   ❤️ 5
    “语法较为简洁”第一个排除 Java 好吗
    hsfzxjy
        11
    hsfzxjy  
       2021-12-22 13:37:13 +08:00 via Android
    rust
    xsen
        12
    xsen  
       2021-12-22 13:37:44 +08:00
    asm
    musi
        13
    musi  
       2021-12-22 13:40:21 +08:00
    javascript
    1. 既支持面向对象又支持函数式
    2. 内存管理细节无
    3. npm 生态就不说了
    4. ES+语法较为现代
    5. 不需要编译,打包工具种类繁多,调试 node ,chrome 齐全
    crackhopper
        14
    crackhopper  
       2021-12-22 13:42:04 +08:00
    我怎么觉得:“充分隐藏计算机体系结构的细节” 和 “代码较为简洁,开发效率高” , 这俩矛盾呢。说实话,C 语言更合适点?或者 C++。但我感觉两个代码都不简洁。有 GC 的,按照你的说明肯定要被排除,还剩个 rust ,我了解也不多,所以 rust 可能也是 ok 的。
    crackhopper
        15
    crackhopper  
       2021-12-22 13:43:48 +08:00
    perl, groovy 我也了解不多。其他那些帮你排除,就剩 rust ,但如果更想了解 cpu 、编译器、系统这些底层,c 和 c++会更加带你走向深渊。c 的话可能得多看项目,c++光标准就可以把你搞晕了。
    Leviathann
        16
    Leviathann  
       2021-12-22 13:44:41 +08:00
    @crackhopper 这意思应该就是要有 gc 的啊
    有 gc ,所以隐藏了细节
    crackhopper
        17
    crackhopper  
       2021-12-22 13:44:45 +08:00
    sorry, 我看错了,忽略我的!!!充分隐藏,我看成暴露了。对不起。当我没说
    ericgui
        18
    ericgui  
       2021-12-22 13:44:45 +08:00
    rust
    crackhopper
        19
    crackhopper  
       2021-12-22 13:44:59 +08:00
    @Leviathann 我看错了。囧了。
    crackhopper
        20
    crackhopper  
       2021-12-22 13:46:37 +08:00
    没法删除已经说过的。。。那就是 java 上面的,能用 java 库的更合适。
    szxczyc
        21
    szxczyc  
       2021-12-22 13:49:21 +08:00 via iPhone
    看了一圈没有人推荐 Python ,语法简洁 Python 真的🉑

    库也是非常多
    可读性和开发效率非常高
    kebamt
        22
    kebamt  
       2021-12-22 13:53:47 +08:00
    Go 语言不好吗?我下个月打算自学 Go 语言的
    testlover
        23
    testlover  
       2021-12-22 13:57:44 +08:00   ❤️ 6
    如果是自己玩儿 不当作吃饭的手艺 建议 c# 无所不能 性能 语法易读性 跨平台 ide 都很强
    masterclock
        24
    masterclock  
       2021-12-22 14:00:58 +08:00   ❤️ 1
    Scala
    所有条件都符合
    szuwl
        25
    szuwl  
       2021-12-22 14:01:12 +08:00
    你说的这些要求 C++ 完美符合
    yazinnnn
        26
    yazinnnn  
       2021-12-22 14:01:27 +08:00
    kotlin 或者 f sharp
    这两个接近满足所有要求

    但是处于钻研目的,我建议你学 haskell 或者 scheme (或者 clojure )
    SmiteChow
        27
    SmiteChow  
       2021-12-22 14:04:29 +08:00
    人生苦短 你懂我意思吧
    Mutoo
        28
    Mutoo  
       2021-12-22 14:04:57 +08:00
    Javascript 当之无愧

    1 支持多范式编程,表达能力强大 ✅ 原型、OOP 、FP 都支持,非常强大
    2 充分隐藏计算机体系结构的细节,特别是内存管理等等的细节 ✅ 脚本语言,自动 GC
    3 生态丰富,有大量的工具和库 ✅ NPM 轮子数不清
    4 语法设计现代,代码较为简洁,开发效率高 ✅ async generator 都有,代码可以非常简洁
    5 具有先进的 完善的工具链支持 比如 编译器 IDE 调试工具 运行监测工具之类 ✅ 配合最强 IDE WebStorm 和 devTools ,调试优化各种方便。
    zhuangzhuang1988
        29
    zhuangzhuang1988  
       2021-12-22 14:28:11 +08:00   ❤️ 3
    C#
    easing
        30
    easing  
       2021-12-22 14:29:05 +08:00
    同建议 Haskell
    araaaa
        31
    araaaa  
       2021-12-22 14:37:42 +08:00
    rust
    zjsxwc
        32
    zjsxwc  
       2021-12-22 14:40:03 +08:00
    C++
    FanChen
        33
    FanChen  
       2021-12-22 14:45:30 +08:00
    个人觉得要深入钻研的话还是 Haskell
    panlatent
        34
    panlatent  
       2021-12-22 14:45:49 +08:00
    go 语言 ... 不推荐,perl 、php 、ruby 不推荐,java 不推荐
    Yc1992
        35
    Yc1992  
       2021-12-22 14:52:24 +08:00
    c++ 没跑了
    ArcherD
        36
    ArcherD  
       2021-12-22 14:57:49 +08:00
    ocaml 。除了没有大量工具和库,别的都满足,库虽然少都是精华。
    相关的生态:前端: rescript 、js_of_ocaml
    wasm: grain
    硬件: hardcaml
    区块链:tezos 及 ligo lang
    unikernel:MirageOS
    逆向:bap

    基本各种开发都可以覆盖了。
    joApioVVx4M4X6Rf
        37
    joApioVVx4M4X6Rf  
       2021-12-22 15:02:55 +08:00
    直接 python 就完了
    liuhan907
        38
    liuhan907  
       2021-12-22 15:05:15 +08:00   ❤️ 3
    C#稍微有点不满足生态要求,不过反正也不差。我觉得 C#就可以。
    abersheeran
        39
    abersheeran  
       2021-12-22 15:07:55 +08:00
    推荐 Python ,虽然 JavaScript 生态更强但是有个问题,JavaScript 的 Feature ( BUG )太多了,如果你不想像背八股文一样去接受那些 BUG ,就不要太精通 JavaScript 。对外说会用就行了,就不会有人考你这些。Python 和 JavaScript 相似的地方有很多,基本精通一门,另一个就自然会了(指非 BUG 的部分)。
    pengtdyd
        40
    pengtdyd  
       2021-12-22 15:09:57 +08:00
    没有人推荐 C ? 真是世风日下、人心不古啊 [dog]
    714105382
        41
    714105382  
    OP
       2021-12-22 15:10:33 +08:00
    感谢大家热情的回复,V2 人气还是很旺的!
    其实主要是想熟练一门较为现代化的编程语言提升一下业务开发效率,楼主之前是写 java 的。
    上面的备选方案是我对着较为流行的语言筛选过一次的,不能排除的留下来的。
    排除 C/C++是因为这两个语言包含了大量的体系相关的语言设计,特别是内存管理。
    Haskell 我有一门课上学过,Haskell 是一门纯 FP ,感觉面对实际应用还是有点复杂,另外 GHC 版本太杂了 XD
    Golang 是因为语法抽象比较简练,适合系统和基础组件开发,但是感觉表达能力欠缺,Golang 我写过一点点,但是感觉缺少一些必须的语法糖和现代语法机制比如 exception ,写业务感觉有点累。
    naga1003
        42
    naga1003  
       2021-12-22 15:12:31 +08:00
    java 吧,万精油,其他有很多语言都比它高效,但是受众最广还是 java
    panlatent
        43
    panlatent  
       2021-12-22 15:14:55 +08:00 via iPhone
    说下我的选择标准:能开发 web 且设施健全的,能开发带客户端的,有希望在浏览器中运行的,没那么复杂或者割裂的,具有静态类型的,具有泛型的或者解决有其他方案解决问题的。

    如果是拿来吃饭的话,就别折腾了 该用啥用啥吧。
    diggzhang
        44
    diggzhang  
       2021-12-22 15:18:59 +08:00   ❤️ 1
    来我们一起研究缝合怪 Scala
    lion9527
        45
    lion9527  
       2021-12-22 15:19:08 +08:00 via Android
    看了 iOS 真凉了,swift 都没人提起🙃
    Reid
        46
    Reid  
       2021-12-22 15:19:38 +08:00
    Rust 吧
    714105382
        47
    714105382  
    OP
       2021-12-22 15:23:00 +08:00
    @Reid 听说 Rust 是一门非常好的新语言,不过听说 Rust 的精妙设计主要是为了在保证高性能的同时尽可能兼顾安全和表达能力?
    听说 Rust 的内存管理模型复杂程度不输 C++。感觉和我想遮蔽内存管理细节的要求不太符合。
    不过说实话我对 Rust 还是很有兴趣的。
    714105382
        48
    714105382  
    OP
       2021-12-22 15:23:59 +08:00
    @diggzhang Scala 的生态怎么样?另外听说 Scala 的编译器不太成熟?是不是在工具链这个层面上有点欠缺?
    yewuya
        49
    yewuya  
       2021-12-22 15:24:52 +08:00
    rust
    714105382
        50
    714105382  
    OP
       2021-12-22 15:25:59 +08:00
    大家可以报告一下不符合要求的各个语言的“痛点”来告诉我一下各个语言的不足,可能更有利于我排除。
    比如以 Java 为例,Java 的语法确实不怎么简洁,开发效率相比于脚本类应该也不算特别高。
    ArcherD
        51
    ArcherD  
       2021-12-22 15:29:36 +08:00
    以前听说 scala 有 2000 多个 issue ,现在好了直接放到单独的仓库里面去了,https://github.com/scala/bug 还有 1800 多个。
    714105382
        52
    714105382  
    OP
       2021-12-22 15:31:38 +08:00
    @ArcherD 啊好的,看来 Scala 的工具链和成熟度感觉还是不太 OK 的,可以排除? 貌似语言上 Scala 是学院派。
    qibing2000
        53
    qibing2000  
       2021-12-22 15:31:44 +08:00
    @xsen 往下滚动滚轮时就在想:会不会有人推荐 asm ,果然出现了。哈哈哈哈!
    feikeq
        54
    feikeq  
       2021-12-22 15:33:04 +08:00
    JavaScript
    e9pWeUbh9PGCnp95
        55
    e9pWeUbh9PGCnp95  
       2021-12-22 15:35:10 +08:00
    verilog , VHDL
    714105382
        56
    714105382  
    OP
       2021-12-22 15:37:03 +08:00
    @unintialized 吐血......
    yazinnnn
        57
    yazinnnn  
       2021-12-22 15:42:30 +08:00
    F#比 scala 更缝一些,而且工具链比 sbt 好
    F#缝了
    C#的轮子 跨平台 性能 开发工具
    Rust 的工具链
    Go 的单文件部署
    Haskell 的 monad 文化
    python 的缩进
    鸭子类型
    编译时类型生成
    kiripeng
        58
    kiripeng  
       2021-12-22 16:11:11 +08:00
    golang 朴实无华的选择
    feather12315
        59
    feather12315  
       2021-12-22 16:18:12 +08:00
    2 充分隐藏计算机体系结构的细节,特别是内存管理

    只有 C 。其他语言与编译细节、汇编之间的鸿沟太大了。
    janus77
        60
    janus77  
       2021-12-22 16:21:43 +08:00
    支持多范式+现代语法设计,基本上只有新兴语言了
    再加上生态丰富,只有 TS 了。。。。。
    tjudqx123
        61
    tjudqx123  
       2021-12-22 16:29:43 +08:00
    不考虑 golang 吗
    cyspy
        62
    cyspy  
       2021-12-22 16:35:40 +08:00
    全满足的也就 Scala ,虽然 Scala 有自己的问题。。
    CodingNaux
        63
    CodingNaux  
       2021-12-22 16:35:41 +08:00
    大佬最新的文章, https://coolshell.cn/articles/21672.html
    好像是推荐 java+go
    ila
        64
    ila  
       2021-12-22 16:36:49 +08:00 via Android
    第 3 点限制了很多选择,剩下 java,c#,python.nodejs 等
    Kininaru
        65
    Kininaru  
       2021-12-22 16:38:45 +08:00
    JavaScript 吧,我觉得挺符合的。语法简洁(箭头函数爽死我),用途广,库多( Nodejs ),不用垃圾回收,不用考虑线程(我觉得 JS 的并发模型和人的思维习惯挺像的)

    不过为啥要隐藏计算机体系结构细节呢?你写程序本质上就是在和计算机对话,你不理解计算机,怎么写出好程序...
    exceldream
        66
    exceldream  
       2021-12-22 16:41:07 +08:00 via Android
    这要求不是 scala 吗?
    714105382
        67
    714105382  
    OP
       2021-12-22 16:45:29 +08:00
    @feather12315 大佬,我是要忽略这些细节啊,就是希望语言自己的机制能够处理好,不希望我操心,只关注逻辑本身就好。
    tairan2006
        68
    tairan2006  
       2021-12-22 16:46:11 +08:00
    haskell

    scala

    深入研究能让你秃,来吧
    714105382
        69
    714105382  
    OP
       2021-12-22 16:50:13 +08:00
    @Kininaru 主要是希望有 GC ,不需要陷入 C++那种级别的心智负担中,想找一个能够快速 coding 的语言。
    体系本身确实要好好理解认真研究......
    714105382
        70
    714105382  
    OP
       2021-12-22 16:50:59 +08:00
    @tairan2006 已经领教过 Haskell 的 Monad 之类的了,确实......
    ArcherD
        71
    ArcherD  
       2021-12-22 16:51:34 +08:00
    关于 haskell ocaml 的大神的看法和比较。
    https://discuss.ocaml.org/t/job-build-system-engineer-at-jane-street/8737/3
    Ayanokouji
        72
    Ayanokouji  
       2021-12-22 17:17:27 +08:00
    深入学习啥,都逃不过 linux ,语法没啥好学的
    KousukeSakurako
        73
    KousukeSakurako  
       2021-12-22 17:20:35 +08:00
    无脑 Python
    wxw752
        74
    wxw752  
       2021-12-22 17:21:24 +08:00   ❤️ 1
    活在当下,我选 Java
    Tenlearn
        75
    Tenlearn  
       2021-12-22 17:21:36 +08:00
    楼上说得对,我猜你也就想赚钱,市面上那几个语言一搜不有的是?深入钻研的话,直接看 Linux 、操作系统、计算机网络、算法,其他都是语法罢了
    Chingim
        76
    Chingim  
       2021-12-22 17:29:46 +08:00
    为啥有人提 rust
    rust 有函数式编程范式吗? rust 的函数式好用吗?
    dwlovelife
        77
    dwlovelife  
       2021-12-22 17:34:59 +08:00
    选 Java 为什么不选 Groovy ,完全动态,语法简洁,同样能跑在 JVM 上,同时也就是说和 Java 可以共享生态,Spring 类似的架子都能用!
    奥我知道了,为什么这么多人不推荐了,因为不会,狗头
    Konys
        78
    Konys  
       2021-12-22 17:38:29 +08:00
    楼主要钻研的话,Java 挺好的
    ErenJaeger
        79
    ErenJaeger  
       2021-12-22 17:43:45 +08:00
    人生苦短,。。。。
    qq73666
        80
    qq73666  
       2021-12-22 17:45:01 +08:00
    炒股,,钻研技术能致富么?能财富自由么??
    psyche
        81
    psyche  
       2021-12-22 17:46:58 +08:00
    深入研究语言是什么意思呢?
    是指研究语言设计, 编译器 /解释器结构? 学这方面不是要研究多个语言, 多一点好吗?
    学习编程范式, 比如 FP, 用什么 JavaScript 和 Haskell 有什么区别? 语法不是看一下午文档就会了? 哪个语言不是图灵完备的?
    用来解决实际问题, 或者研究某类具体问题, 应该什么合适用什么, 大而全代表复杂或低效.
    建议先搞清学习目的.
    ysc3839
        82
    ysc3839  
       2021-12-22 17:47:26 +08:00 via Android
    这些要求感觉只有 C++了……
    允许不那么符合的话看看 Rust ?
    Pythoner666666
        83
    Pythoner666666  
       2021-12-22 17:54:03 +08:00
    @szxczyc 性能太差了 兄弟
    chocotan
        84
    chocotan  
       2021-12-22 18:16:28 +08:00
    我自己玩会选择 kotlin, 干活儿还是要 java
    junmoxiao
        85
    junmoxiao  
       2021-12-22 18:22:18 +08:00
    @Yc1992 坑人没跑了
    wangyu17455
        86
    wangyu17455  
       2021-12-22 18:35:04 +08:00 via Android
    是基于 jvm 的语言,但不能是 java
    afirefish
        87
    afirefish  
       2021-12-22 18:43:21 +08:00   ❤️ 1
    C# 加一票!
    a1562619919
        88
    a1562619919  
       2021-12-22 18:56:01 +08:00 via Android
    @chocotan 干活 kt 不香嘛
    NeezerGu
        89
    NeezerGu  
       2021-12-22 18:56:21 +08:00
    刚想说钻研不选 haskell ? 然后就看到已经有很多人说了
    seakingii
        90
    seakingii  
       2021-12-22 19:04:26 +08:00   ❤️ 1
    C#
    TAFMT
        91
    TAFMT  
       2021-12-22 19:09:24 +08:00
    先能吃饱饭 -> Java
    自己感兴趣 -> python
    liubaicai
        92
    liubaicai  
       2021-12-22 19:20:33 +08:00
    ruby 是最好的语言,好到现有的项目都配不上它,所以我在用 js
    Bazingal
        93
    Bazingal  
       2021-12-22 19:22:46 +08:00
    看起来只有 C#符合你的要求了
    duduaba
        94
    duduaba  
       2021-12-22 19:34:16 +08:00
    自己玩玩就随便选,吃饭就 js ,不为啥,因为 js 学一个星期就可能找到工作,其他语言就难说了。
    alexkkaa
        95
    alexkkaa  
       2021-12-22 19:40:57 +08:00 via Android
    深入就不要选高级语言 汇编 c 搞起。除此之外你所有的需求 csharp 完美满足你
    HENQIGUAI
        96
    HENQIGUAI  
       2021-12-22 19:43:31 +08:00
    JVM 里面有你想要的一切。
    guanhui07
        97
    guanhui07  
       2021-12-22 20:40:08 +08:00 via iPhone
    python
    cuminflea
        98
    cuminflea  
       2021-12-22 20:40:39 +08:00
    julia~
    ch2
        99
    ch2  
       2021-12-22 20:51:25 +08:00
    综合来看是 C#
    nebkad
        100
    nebkad  
       2021-12-22 21:02:08 +08:00   ❤️ 3
    C#
    1. 支持多范式: 显然 C# 可以 OOP 也可以 FP ,元编程的能力很强,CodeGen 的能力也很强
    2. 充分隐藏计算机体系结构的细节:C# 既可以写服务器(跨平台)、又可以写界面(跨平台),还可以写游戏( Unity )。甚至现代的 C# 你想直接操纵内存也是完全可行的。
    3. 生态丰富:虽说服务端生态比不上 Java ,但也只是备份候选的开源产品不够多,而不是缺乏;
    4. 语法设计现代: 多线程安全性比不上 Rust 但还是很能打的
    5. 具有先进的 完善的工具链支持: 你总是有 VS 和 MS ,就看要不要加钱
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5956 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 02:03 · PVG 10:03 · LAX 18:03 · JFK 21:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.