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

因为团队调整,面临换语言的问题, go -> Java

  •  
  •   Gea · 311 天前 · 5357 次点击
    这是一个创建于 311 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先说自己的情况,16 年大学毕业,这四年多基本上前两年多写 node 后两年写 go,天赋有限,学艺不精,两种语言写的感觉都一般。。

    最近因为项目组解散,并入另外一个组了,要求一定要写 java 了,而且毫无回转的可能。

    换语言的问题还是那些,要从头开始,尽管有之前语言的基础,上手写的问题可能不大,但是 golang 还没学太好,换成 java 又是学一些皮毛,感觉沉淀不足。

    就语言本身来讲,我挺喜欢 golang 的,主要是轻巧,现在项目用 k8s+docker (这俩学的也不是很深入),搞起来十分舒服,除了没有范型写代码挺难受的,启动快编译快部署快,还是挺爽的。handling errors 我倒是觉得还能接受,有点像特别早年 node 的 callback,都要返回一个 err 。

    java 呢,我就觉得太重了,写法、启动、编译和部署这些方面,启动个 ide,小破 mac 动不动就风扇狂飙的,可能学的不多,所以觉得写起来还有些麻烦。

    换语言这个问题我想过很久,现在临近年底,我感觉现在最好的选择应该是在新团队写 java,学习学习,如果觉得不好,明年立马走人,就当多了点经验,继续找个写 go 的。

    但是如果觉得还行,我就不知道怎么选择了,我只是一个普通的打工仔,首要还是面向工资编程,最好能兼顾写的开心

    想了不少天,不知道大家有什么好的想法,希望给我一点输入,先谢谢大家了

    49 条回复    2021-08-13 16:51:18 +08:00
    Jooooooooo
        1
    Jooooooooo   311 天前   ❤️ 5
    java 这么傻的语言你 21 天绝对学会
    yannxia
        2
    yannxia   311 天前
    讲真,Java 除了虚拟机太吃性能,我现在另可写 Java 也不想去写 Go,也复杂点的系统,Go 就好难啊
    chenqh
        3
    chenqh   311 天前
    能内部转 Java 很好呀,java 找工作比 golang 好多了
    hoyixi
        4
    hoyixi   311 天前
    真不好说,个人偏好不同。

    反正 Java 是常青树,需求一直都在,天花板也高; Go 集中在云,基础系统、区块 L 之类,感觉都是热点,但是偏基础设施的系统开发需求能不能长久就不好说了

    不如你去招聘网站,看看 Java 和 go 的薪水,以及公司的质量,对比下再自己选择。
    sagaxu
        5
    sagaxu   311 天前 via Android   ❤️ 4
    java 招聘需求大,但是卷的也厉害,各种面试八股文,恨不得从 jdk6 一路问到 11,把 4 种 gc 实现细节问个底朝天
    chippai
        6
    chippai   311 天前   ❤️ 1
    好巧,我们 java 转 go
    wellsc
        7
    wellsc   311 天前
    求之不得的好机会,golang 这种零抽象的语言写起业务来不要太难受,Java 就业市场还好,很多东西都有现成的解决方案,背背八股文就好了
    crclz
        8
    crclz   311 天前
    java 我个人认为不重,没它的某个特性就浑身难受。
    SpringBoot,Asp.NetCore 非常相似,就证明了语言的形态和框架的形态都几乎收敛到现在的最优状态。
    f6x
        9
    f6x   311 天前
    就说一句:
    go 弄个略懂要 7 分力, java70 分力也不敢说略懂吧.

    当然,只写业务什么语言都没区别.
    skypyb
        10
    skypyb   311 天前
    Java 求职应该是最卷的。。 如果想跳到 Java 得做好准备
    xuanbg
        11
    xuanbg   311 天前
    Java 一样 k8s+docker 。写 Java 代码,找个人给你指点下 spring boot 怎么用就完了。语法什么的看看项目代码,会百度抄作业就行。一开始遇到疑难问题多问就是,半个月绝对能正常开展工作。
    qfdk
        12
    qfdk   311 天前 via iPhone
    我们 java 转 nodejs
    syrupofplum
        13
    syrupofplum   311 天前
    主要是看业务是否喜欢吧,语言顶多算实现功能的工具。学会一门新语言,写出符合这个语言味的代码,掌握这门语言的生态,这不也是挺让人兴奋的事情嘛。
    skydiver
        14
    skydiver   311 天前
    多工作几年就什么语言都会了…没必要纠结这种问题
    ZRS
        15
    ZRS   311 天前   ❤️ 1
    语言就是工具而已
    Kirsk
        16
    Kirsk   311 天前 via Android
    看来 Java 在鄙视链最底层
    djoiwhud
        17
    djoiwhud   311 天前 via Android   ❤️ 1
    骑驴找马。

    或者猫着做 java 。

    我个人建议如果公司或者业务有前景,就留下做 java 算了。

    我 9 年多后端经验,做过八九种语言的开发。我需要什么用什么,不讲任何借口。我们是软件工程领域,工程,这两个字多想想。
    wangyzj
        18
    wangyzj   310 天前 via iPhone
    各有优缺点
    如楼上所说
    语言只是工具
    我们做的是软件工程
    v2orz
        19
    v2orz   310 天前
    两个都不难

    最近我们业务需要嵌入式 C/C++,这个才是让人头大好吧
    xx6412223
        20
    xx6412223   310 天前
    说 Java 重的其实就是 jvm 耗内存问题。但对开发者没太大啥影响,而且 Java 的生态完全成熟,学起来目标更明确。
    Java 语法啰嗦,但是读起来很清晰,当然不要乱用继承。面向对象的特性也比 golang 更彻底。
    虚拟机给开发者带来很多好处,比如运行时可编辑字节码,更多的调试分析手段
    ren2881971
        21
    ren2881971   310 天前
    逆流而上。。
    walkOnly
        22
    walkOnly   310 天前
    LZ 可以建议 TeamLeader 考虑下 Kotlin,比较成熟了
    HerrDu
        23
    HerrDu   310 天前
    @yannxia go 的出现就是为了应对大型的开发项目,你说大型项目难,是不是打开的姿势不对
    seanxx
        24
    seanxx   310 天前
    发错节点了,你应该发 go 开发者,不应该发程序员
    raaaaaar
        25
    raaaaaar   310 天前 via Android
    java 语法挺丑
    yingo
        26
    yingo   310 天前
    建议学一点 Java,这是个好机会.
    qwzhang01
        27
    qwzhang01   310 天前
    跟着项目换语言,简直不要太容易,一周上手,半个月就熟联了。
    多花精力在基础、底层以及业务上。
    GopherDaily
        28
    GopherDaily   310 天前
    @HerrDu 是像 google 那么大,还是像 XX 那么大,这点会有区别。
    语言自己的味道也很重要,按 Java 的思路去写 Golang,或者按 Golang 的方式去写 Java,都会导致一些主观的评价。
    Rwing
        29
    Rwing   310 天前
    C#/.NET 欢迎你
    mamahaha
        30
    mamahaha   310 天前
    你们老板可能是看上 java 的哪个库了,随便换语言证明老板对你们的实力信心不够。只敢让你们搞调库调参这套。
    shuizhengqi
        31
    shuizhengqi   310 天前
    java 也还行吧,做时间长了,就知道语言这些区别不大了,只是 java 可能面试的东西稍微多一点。例如 jvm,数据结构,线程安全,常用一些 api 的源码,像 hashmap,线程池,concurrentHashmap 什么的看一下就行,gc 基本就会问两种,cms 和 g1 。然后就是其他的东西了,mysql 最多吧,主要就是索引,锁,mvcc,引擎的区别,然后还有 dubbo,redis,zk 等中间件的一些常用的知识。基本看一段时间就能应付面试了
    echo1937
        32
    echo1937   310 天前
    如果你的一套业务可以用 SpringBoot 全家桶解决,Java 不要太爽。
    tcfenix
        33
    tcfenix   310 天前
    工作五年多, 在之前的工作中写过 Js, Python, PHP, Ruby, C++ , Golang, Java, Scala

    其实我也很喜欢写 Golang, 历史包袱少, 语义简单, 设计的很工程化, 可以说写代码就是一个享受

    但是在你找到下一份工作之前, java 还是值得你花时间投入进去学习的, 整个生态里面很多实现都还挺有学习的意义的

    加油吧
    coderxy
        34
    coderxy   310 天前
    我原来也是 node,现在转 go 了。 打算一直干 go 了,还是要在某个语言尽量深入,不然这儿几年 那儿几年,不太好。 如果你是大佬,建议 Java,毕竟市场大。 如果你不是,建议不要贸然,内卷太严重了,岗位虽多,竞争者更多。
    subpo
        35
    subpo   310 天前
    在工作两年就知道语言和框架都是浮云,看个 2 3 天就能写了
    cloverzrg2
        36
    cloverzrg2   310 天前   ❤️ 1
    我公司业务里写过 node,go,java,只要基础好,换语言没多大问题,但是团队里要有该领域的大牛,不然项目容易变得很乱
    seven123
        37
    seven123   310 天前
    语言只是工具,每个语言都是自己的特点,在合适的场景使用合适的语言。但是在我看来 java 不失为一个不错的选择,可以让你对编程有个系统的认知,当你学习源码时你可能会慢慢理解会什么要这么做,不由感叹设计的精妙,当然前面说的 java70 分力也不敢说略懂吧...这是一条任重而道远的路... 互勉
    kios
        38
    kios   310 天前
    语言都是相通的,学起来很容易
    bk201
        39
    bk201   310 天前
    java 的天花板太高了,东西巨多。
    zhangdawei
        40
    zhangdawei   310 天前
    Java 和 go 都挺好的,其实国内主要看业务,做久了一定是某个方向的技术+业务专家,
    zarte
        41
    zarte   310 天前
    好跳槽,是好事。
    gowk
        42
    gowk   310 天前 via Android   ❤️ 1
    Java 语言规范 1000 多页,Go 顶多 200 页。说实在的,写 Java 我不抵触,抵触的是他概念太多,心累,尤其是现在 Spring 一统天下的情况下,能写 Go 我绝不写 Java,Go 泛型发布后它几乎是新项目的唯一选择
    wysnylc
        43
    wysnylc   310 天前
    @sagaxu #5 现在要问到 jdk14 了
    xcstream
        44
    xcstream   310 天前
    混就是了
    Rob007
        45
    Rob007   310 天前
    语言是为业务服务的
    Leigg
        46
    Leigg   310 天前 via iPhone
    Java 面试机会多,竞争也非常激烈,也就是"卷",go 在发展上还是一门年轻化的语言,前途一片光明,你要考虑好。个人建议,不要随大流,趁年轻,定个方向深耕。
    securityCoding
        47
    securityCoding   310 天前
    @gowk 同意,go 的泛型+错误处理上了后 应该可以大规模上业务项目了
    Jiers
        48
    Jiers   309 天前
    python--->go
    xmsz
        49
    xmsz   72 天前
    我现在的看法就是

    php:如果是小公司(不管规模大不大),或者是个人网站编程爱好者,那非常的合适,简单生态丰富,就是你去捡垃圾拼起来也能跑

    nodejs:前端必备,因为以前很多情况下后端同学是不乐意去做一些非『重要业务』的事情。加上现在 serverless 解决了运维的问题,那对于前端来说简直不要太爽。
    后端呢?性能和线程是大问题,所以大公司肯定是不会用,还是只能拿来个人自己玩玩

    go:还没开始实践之前,我的想法是 go 因为是新语言没有历史包袱,而且很多特性都是非常符合未来发展的。
    当我实践以后,发现这玩意根本满足不了期望
    你说想要简单,你和 java 比,其实其他语言也很简单。语法简单,大家都差不多,方法简单,其他语言封装一下也差不多。所以这个真没什么特别大作用
    你说想要性能,JAVA 肯定更好
    最重要的是生态,Java 一套 Spring 干趴所有人,特别是大公司的需求
    然后 php 有国内无敌的生态,nodejs 有无数造轮子的人,基本上生态也很好
    而 go 生态真的太烂了
    除了 b 站七牛在硬推,真的差强人意。

    详细的说
    对于单体应用
    最重要就 2 个东西,web 框架和 orm 工具
    web 框架就是简易
    orm 工具都不能说简易,gorm 和 xorm 真的都称不上 orm 工具


    对于什么微服务、云原生
    rpc 通信,大家都有啊

    所以 go 的场景真的很尴尬,我觉得很噱头还不如其他语言(各种非主流语言)










    总之,如果你想要当一辈子的程序员,或者想去大厂混几年,那选 Java 肯定没错,毫无疑问

    其他情况的,随便了
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1621 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:45 · PVG 00:45 · LAX 09:45 · JFK 12:45
    ♥ Do have faith in what you're doing.