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

目前是 Java 码农,想再学一门语言 c++,c#,rust,go,各位大佬推荐哪一个

  •  
  •   chunqicoder · 2023-10-07 17:07:26 +08:00 · 6282 次点击
    这是一个创建于 417 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前 java 码农,想再学习一门语言,精力有限,在平时还要研究 java 的情况下只能再选择一门,复杂度不是问题因为也是学习嘛,个人比较倾向 rust ,因为现在炒的比较火,而且又是个新东西,系统及语言实用范围也比较大 纠结的点(以下的话都出自个人映像,在没有足够了解的情况下的胡言乱语,大家轻喷): 1:想自己做个桌面应用程序玩玩,毕竟 java 大家都懂,上班就写 web 后端,老实说是吃饭需要,必须一直研究,最好能跨平台,c++和 c#目前知道是不错的,因为还有.NET 这玩意,rust 因为目前确实不太懂哈不知道能不能(轻松)做一些比较美观的 gui 应用 2:性能最好要比 java 强是不,go 目前也是比较火,对于工作来说确实是个好东西,但是感觉(感觉啊!)这玩意跟 java 一样,就是大家都拿来搞一些工作上的东西,玩乐性不知道行不行,毕竟是工作之余搞点好玩的,再说 java21 都出来了而且 go 和 java 的性能差距也有一些讨论的声音

    75 条回复    2023-11-02 15:06:33 +08:00
    darkengine
        1
    darkengine  
       2023-10-07 17:11:28 +08:00
    当然是学 TS + NodeJS 啦
    luckyrayyy
        2
    luckyrayyy  
       2023-10-07 17:17:38 +08:00
    桌面应用程序 Java 也可以写,我用 javafx 和 jb 家出的 compose 都写过。go 印象里没啥好用的 gui 库吧,rust 不了解。
    chunqicoder
        3
    chunqicoder  
    OP
       2023-10-07 17:17:51 +08:00
    @darkengine 啊这
    xtreme1
        4
    xtreme1  
       2023-10-07 17:18:38 +08:00
    看过你描述也没搞清楚到底是写着玩还是想吃饭用...
    后者的话, cpp rust 这种都依赖于领域相关的知识, 和具体语言(虽然也很重要)其实没那么多关系...
    chunqicoder
        5
    chunqicoder  
    OP
       2023-10-07 17:18:41 +08:00
    @luckyrayyy 确实 java 也能写,我也用过一些,但是想学个新的嘛~~~
    chunqicoder
        6
    chunqicoder  
    OP
       2023-10-07 17:20:23 +08:00
    @xtreme1 就是想玩,但是也想更加深入一点,应为吃饭的语言已经有了,我想再学一个更底层的语言,然后跟跟 java 相辅相成嘛
    lbllol365
        7
    lbllol365  
       2023-10-07 17:20:44 +08:00
    @luckyrayyy 请问下 jb 的 compose 是不是得学一些他家 Android 的那套东西,我是 Java Web 技术栈的,当时看了看 compose ,有点懵
    jianchang512
        8
    jianchang512  
       2023-10-07 17:29:54 +08:00
    想搞桌面端,肯定选 c#啊,c++ rust 太费劲了
    xtreme1
        9
    xtreme1  
       2023-10-07 17:30:54 +08:00
    @lemonteacode #6
    写着玩就首先别考虑 cpp 了, 一个指定的现代的包管理器对心理健康来说太需要了.
    senjyougahara
        10
    senjyougahara  
       2023-10-07 17:33:34 +08:00
    写着玩自然是 c#啊,各种语法糖太方便了,写桌面端也方便,还有跨平台的 maui
    luckyrayyy
        11
    luckyrayyy  
       2023-10-07 17:56:41 +08:00
    @lbllol365 我不了解安卓,不知道你说的 Android 的那套东西是指啥? compose 本身跟安卓没啥关系吧,没有依赖,声明式 UI 也不是安卓独创的各个框架都这么设计。
    lbllol365
        12
    lbllol365  
       2023-10-07 18:03:04 +08:00
    @luckyrayyy 那应该就是我没找对文档吧,多谢回复
    hsuyeung
        13
    hsuyeung  
       2023-10-07 18:07:03 +08:00
    同 java ,Go 之前用过一段时间,写点小东西感觉很舒服,但是异常处理很烦。rust 前段时间看官方文档学了一半多了,暂时不知道自己想学来做什么,所以继续学下去的动力也逐渐没了。现在又有点想学 iOS 开发( swift )自己写点 app 啥的玩玩
    LoNeZ
        14
    LoNeZ  
       2023-10-07 18:22:23 +08:00
    rust&golang
    xlsepiphone
        15
    xlsepiphone  
       2023-10-07 18:34:35 +08:00
    ts
    wqq096737ink
        16
    wqq096737ink  
       2023-10-07 20:21:28 +08:00
    看到有人推荐 ts/nodejs ,表示不理解,后端开发学这玩意儿干啥?写网页?

    选 go 贴合 k8s
    zzzkkk
        17
    zzzkkk  
       2023-10-07 20:24:50 +08:00 via Android
    @wqq096737ink
    最好 html css 也学 国外找机会有帮助 能卷死别人 贪婪资本家喜欢节约资金
    liveoppo
        18
    liveoppo  
       2023-10-07 23:06:06 +08:00
    跳出语言吧,学点其他的,比如 AI
    xuanbg
        19
    xuanbg  
       2023-10-08 08:07:26 +08:00
    啥都不要学,没用的东西学它作甚?
    xgdgsc843
        20
    xgdgsc843  
       2023-10-08 08:11:02 +08:00 via Android
    rust/julia
    darkengine
        21
    darkengine  
       2023-10-08 08:23:06 +08:00
    @wqq096737ink 要不你先查一下 ts/nodejs 能干啥?
    potatowish
        22
    potatowish  
       2023-10-08 08:24:28 +08:00 via iPhone
    建议学前端,国外工作都是偏全栈的
    lsk569937453
        23
    lsk569937453  
       2023-10-08 08:34:35 +08:00
    1:想自己做个桌面应用程序玩玩.
    首选那还是得 js 。可以写 web 前端,可以开发桌面应用。
    2.性能最好要比 java 强是不。
    java=c#=golang,c++太难,所以只有 rust 一个选项了
    musi
        24
    musi  
       2023-10-08 08:37:18 +08:00
    @wqq096737ink #16 楼主说的第一点,做个最好可以跨平台的桌面应用程序,你就说 Electron 能不能满足吧。性能要是实在过不去就写个 C++的包让 node.js 调
    litchinn
        25
    litchinn  
       2023-10-08 08:43:00 +08:00
    rust 有一个 dioxus
    SchneeHertz
        26
    SchneeHertz  
       2023-10-08 08:48:36 +08:00
    想做桌面程序你得学前端那套,那就指定 js 了
    knightdf
        27
    knightdf  
       2023-10-08 08:52:03 +08:00
    你要写 gui 其实 go,rust 都不太适合,还是学 js 吧,或者 C#,或者都学
    sankooc
        28
    sankooc  
       2023-10-08 08:54:32 +08:00
    推荐 go/rust 千万别搞什么 nodejs
    flowerains
        29
    flowerains  
       2023-10-08 09:06:42 +08:00
    做桌面端,要么狠一点一口气和我一样跑到 iOS&macOS 那边玩。

    不然绕不开 js 和 html css ,还是别抵抗了
    Nazz
        30
    Nazz  
       2023-10-08 09:08:58 +08:00
    学 electron
    xingjue
        31
    xingjue  
       2023-10-08 09:13:42 +08:00
    学 wails go 写的跨平台
    vikaptain
        32
    vikaptain  
       2023-10-08 09:25:47 +08:00
    C#,会 java 基本可以无缝切过去,就怕你用了 C#之后再写 java 难受。
    imokkkk
        33
    imokkkk  
       2023-10-08 09:40:56 +08:00
    ts go
    tobepro
        34
    tobepro  
       2023-10-08 09:53:45 +08:00
    你这个需求,tauri 很适合啊。rust+nodejs ,写桌面程序,还跨平台
    Norths
        35
    Norths  
       2023-10-08 10:10:06 +08:00
    go 如果说硬要写桌面的话可以看下 https://github.com/wailsapp/wails
    geekjoehome
        36
    geekjoehome  
       2023-10-08 10:11:16 +08:00
    楼主有 java 基础可以试试 kotlin ,我偶然学了一下后就爱上了这门语言,语法精炼且富有表达力,符合我的极致追求。没学这语言前别人说 java 有啥缺陷,kotlin 如何好,我是感觉不到的(即使看了一些对比文章),心想 java 又不是不能用…… 但学了之后,有对比了,就不想回去写 java 了。还有那套协程也很香。

    我觉得这门语言应该有发展前景,目前可能还方兴未艾吧。

    rust 是为了替代 c/c++场景,kotlin 是为了替代 java 场景。
    roseduan
        37
    roseduan  
       2023-10-08 10:12:49 +08:00
    当然 Go/Rust 学完了再来个项目实践下,最多一个月就基本掌握了
    https://w02agegxg3.feishu.cn/docx/Ktp3dBGl9oHdbOxbjUWcGdSnn3g
    dif
        38
    dif  
       2023-10-08 10:33:41 +08:00
    最好学一门比较不一样的,假设 java 能做的,go 也能做,go 能做的 java 也能做(假设两者生态一样),那学他干嘛? 不如学个 ts 可以让你前端后端都能干。
    neochen13
        39
    neochen13  
       2023-10-08 10:37:48 +08:00
    flutter
    chunqicoder
        40
    chunqicoder  
    OP
       2023-10-08 10:40:45 +08:00
    哈哈哈,大佬们好热情,这下更不知道选啥了哈哈
    PTLin
        41
    PTLin  
       2023-10-08 10:43:14 +08:00
    不应该着眼于语言,应该想一下感兴趣什么领域。决定不了研究方向自然就选不出来语言
    chunqicoder
        42
    chunqicoder  
    OP
       2023-10-08 10:47:02 +08:00
    @tobepro 666 ,看了一下,确实很不错,而且又可以学 rust 和 nodejs ,一举夺得了属于是
    PTLin
        43
    PTLin  
       2023-10-08 10:49:05 +08:00
    还有,不要为了 gui 学 rust ,tauri 能做的 electron 都能做,而且更成熟。而且 rust 的 native gui 库基本上全是半吊子。
    chunqicoder
        44
    chunqicoder  
    OP
       2023-10-08 10:51:25 +08:00
    @PTLin 主要是工作这么多年了,想回归学电脑的初衷,做一些酷酷的东西,但是就是工作太久思维僵化,有的时候都不知道什么比较好玩了,重新找回一下自己了属于是
    anakinsky
        45
    anakinsky  
       2023-10-08 10:51:56 +08:00
    建议 js, electron 可以写一些桌面客户端,rust 、go 没听说过有啥知名 ui 库,cpp 太难太复杂,c#还行。不建议跨度太大的技术栈,写写 js 和你现在工作还有些关联经常可以接触到,其他技术时间长没接触就忘了
    chunqicoder
        46
    chunqicoder  
    OP
       2023-10-08 10:56:50 +08:00
    @anakinsky js 是好,但是可能是我这块太不了解了,总感觉太弱了,我想的是在做下面的事的时候顺便使自己更加深入一点,所以希望性能事最好比 java 强一点然后更加底层一点,可以和我目前的技术能力相辅相成这样
    PTLin
        47
    PTLin  
       2023-10-08 10:56:52 +08:00
    @lemonteacode 那我感觉你有很多方向可以选择呀,比如研究一下三大坑,操作系统,编译器,图形学。研究一下数据库实现,或者研究 gui 方面的。
    就比如 gui 这个方面你就可以选择移动开发的 Android 开发,IOS 开发,还是 flutter ,RN 这种跨平台库。
    学习 web 既可以写网页,有可以用 electron 写桌面程序,也可以用 RN 写移动端,还可以学学 nodejs 写后端。
    剩下就是可以选择微软的 C# WPF MAUI 什么的,或者是学习 CPP 的 Qt 。有很多选择,选择语言是你选择了具体方向之后的。
    manasheep
        48
    manasheep  
       2023-10-08 11:05:25 +08:00
    C#比较合适,一是 Java 跳 C#没什么难度,非常平顺,二是 C#用 WPF 做桌面端很完善,还可以用 Blazor 做前端,这样能补充自己的技术栈。
    chunqicoder
        49
    chunqicoder  
    OP
       2023-10-08 11:05:59 +08:00
    @PTLin 666 ,大佬就是大佬,说到点上了,说得对,我是应该选择一个研究方向,那其实我是想往 gui 方向走,但是又放不下后端的担子想追求性能,后端做久了总是追求性能和优化,处于一个比较纠结的状态,这也是我倾向 rust 的原因。
    shylockhg
        50
    shylockhg  
       2023-10-08 11:19:40 +08:00
    花里胡哨,直接学前端,组个全栈技能树。
    winterbells
        51
    winterbells  
       2023-10-08 11:22:13 +08:00 via Android
    当然是 kotlin 啦,无缝衔接(:doge

    最近在看 rust ,有点绕不过来,全靠 GPT4 写代码
    PTLin
        52
    PTLin  
       2023-10-08 11:22:50 +08:00
    @lemonteacode 纯 gui 方向学 rust 就是浪费时间,死了这条心吧。
    yazinnnn0
        53
    yazinnnn0  
       2023-10-08 11:49:37 +08:00
    首先排除语法丑的

    玩的话尽量选动态类型语言, 如果选静态语言, 选类型推导能力强的

    我个人推荐
    scheme / racket
    clojure / fsharp
    rust / ts

    排名分先后
    AyaseEri
        54
    AyaseEri  
       2023-10-08 11:57:45 +08:00
    当然是 ts+css+html 啦,你迟早得前后端全干了。
    lizhian
        55
    lizhian  
       2023-10-08 11:58:48 +08:00   ❤️ 2
    推荐 kotlin

    第一,你学了 kotlin,是可以在工作中使用到的,跟 java 无缝衔接,混合编程.很多著名库/框架都官方支持 kt,例如 springboot,有些库甚至用 kotlin 重写.

    第二,kotlin 就是一个缝合怪,吸收了很多其他语言的特性,作为过渡语言也是一个很好的选择,当你后面学你上面提到的那些语言,你会觉得很熟悉,并且很快上手.

    第三,kotlin 可以写桌面软件,还能写手机软件,甚至可以写前端页面,并且这些都是官方支持的,非第三方框架/库.kotlin 官方野心很大,以后还会脱离 jvm 世界.

    第四,学了 kotlin,真的不想回去写 java,kotlin 真香
    huiyadanli
        56
    huiyadanli  
       2023-10-08 13:48:15 +08:00
    我本职工作用 Java ,做过挺久的网站所以对前端 js 还算了解(原生 or Vue )。业余有大量 C# 的开源项目,最近还刚刚扒了一些 C++、Rust 的实现到 C#。

    对于多门语言这块我很多实际落地经验。做什么用什么学什么。

    对于语言的选择取决于你实际想要做什么,要做到什么程度?

    如果你想要独立做跨平台项目,并且想要快速出活获得成就感,我只会推荐你学习 js 。

    如果你是想要做 Windows 桌面端,无脑选择 C#。
    YassoWithSpeaker
        57
    YassoWithSpeaker  
       2023-10-08 13:54:00 +08:00
    js ts 我现在就在玩 ts ,也是后端,js 的作用远远不是 web 这一个层面,jsjs javascript -> java script -> script ->作为脚本语言,他能在几乎所有已知的环境运行,无论是鸿蒙还是安卓还是 winmaclinux ,甚至 word 。ppt 。pdf 里都能跑,平时写个 navicat 脚本,更何况还有 css 。性能,这玩意也不是服务器,一台服务器服务数万人,这一个电脑服务一个用户,谈什么性能,脸都不要了
    c2const
        58
    c2const  
       2023-10-08 14:36:23 +08:00
    1.OP 要好玩的,C 系语言,那必然是 win 安全了 :)
    2.C 语言,C++方面有 C with class 基础就行,然后写写汇编,熟悉下应用层和驱动中的 windows API ,直到正向开发学会了 :)
    3.再学学逆向,,有精力捡起学的编译原理,写个简单的现代编译器也行,手写几个壳,看汇编如看小说,拖壳,调试,反调试,反反调试,这时候基本就进入好玩阶段,因为自己用的软件大多都能自己动手破解了(有能力还是建议支持正版), :)
    4.然后是微软官方的 windows insider 和老潘的 windows 内核原理与实现,基本没有代码,结合开源的 WRK 源码(变动不大)和自己逆汇编,啃下来基本就水平爆炸了,同时期可以写写杀软、ARK ,或者对抗杀软、对抗 ARK ,与人斗也是其乐无穷,也算符合好玩的 :)
    5.国内课程基本是圈钱骗小白,不如 1234 全程去参与 github 上的一些项目,看看前辈风采,不过需要自己抛光补全代码 :)
    6.最后,缺钱做点合法副业可以,但注意别下海,因一念之差进局子了,毕竟这时候,国内外都能找到薪水不错又好玩的工作了 :)
    chunqicoder
        59
    chunqicoder  
    OP
       2023-10-08 14:58:09 +08:00
    @c2const 大佬牛皮呀
    c2const
        60
    c2const  
       2023-10-08 15:25:51 +08:00
    @lemonteacode

    1.不是大佬,现在也是外企躺平 :(
    2.上面的内容只是大概,手机网页上随手打的,格式内容其实都有小错误 :(
    sunwei0325
        61
    sunwei0325  
       2023-10-08 15:28:23 +08:00
    rust 最大的问题是学完了不知道干啥, 而且特性很多学完了不用的话很快就忘了, 官网文档看了 4 遍以上了
    iffi
        62
    iffi  
       2023-10-08 15:35:29 +08:00
    java 之余,我学了 go 、python
    EricShell
        63
    EricShell  
       2023-10-08 15:36:43 +08:00
    学一口流利的英语可能对未来更实用
    gav1nvv
        64
    gav1nvv  
       2023-10-08 15:39:51 +08:00
    @darkengine 哈哈哈哈哈,不让前端有活路
    avalon8
        65
    avalon8  
       2023-10-08 16:30:44 +08:00
    go python
    huihuiHK
        66
    huihuiHK  
       2023-10-08 16:34:46 +08:00
    English
    chunqicoder
        67
    chunqicoder  
    OP
       2023-10-08 16:50:44 +08:00
    @EricShell 666 懂得都懂,英语肯定是要学的
    KING754
        68
    KING754  
       2023-10-08 18:05:20 +08:00
    同 JAVA 想学英语呀.
    想玩智能设备,想写移动 APP.
    这些东西,又该怎么搞哎.
    sofukwird
        69
    sofukwird  
       2023-10-08 18:20:21 +08:00 via Android
    当然是 kt ,只要你用 kt 家的编辑器体验应该就是一流的
    kt 对标 go ,你想要的 go 有 kt 也有
    kt 还兼容 Java 生态,你可以复用已有 Java 知识(熟悉另一种语言生态是一个很大的时间成本
    joyhub2140
        70
    joyhub2140  
       2023-10-08 19:54:29 +08:00
    flutter 跨平台 gui 新贵。
    comingnine
        71
    comingnine  
       2023-10-09 01:52:28 +08:00 via Android
    现在电脑的性能很好,java 如果能胜任,java 系的就挺好的吧
    chunqicoder
        72
    chunqicoder  
    OP
       2023-10-09 08:47:45 +08:00
    突然感觉还是要先把英语学好先
    CloveAndCurrant
        73
    CloveAndCurrant  
       2023-10-09 10:12:22 +08:00
    推荐 zig 和 golang
    durban126
        74
    durban126  
       2023-10-09 21:57:45 +08:00
    先学的 php+css+js+html+jquery ,再学的 python ,然后学 object-c ,之后学的 nodejs+react+vue ,再之后学的 golang
    现在在学安卓开发,rust ,java 就顺便看了下,也有接触过 springboot 这玩意的开发还不错
    以上都是公司发展过程中不断有需求的情况下学习的

    就问你学了之后想干啥,你想干啥决定了你要学啥,而不是学啥才去干啥,我这么觉得,当然我这是小公司,创业公司,如果你是大公司就不知道了,可能学 一门也行
    CynicalRose
        75
    CynicalRose  
       2023-11-02 15:06:33 +08:00
    @sunwei0325 不要太赞同,学完了不知道干啥,一个月高级特性就忘得差不多了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5635 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 06:41 · PVG 14:41 · LAX 22:41 · JFK 01:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.