• 请不要在回答技术问题时复制粘贴 AI 生成的内容
javaisthebest
V2EX  ›  程序员

在虾皮做业务被 go 恶心到了。

  •  
  •   javaisthebest · Nov 24, 2021 · 29254 views
    This topic created in 1804 days ago, the information mentioned may be changed or developed.
    之前主要是在中厂用 java 做业务
    目前进了虾皮用 go 做业务。
    这一对比,感觉搞不懂 是脑抽了用 go 了吗?

    接手的前几天就被无边无际的 json 属性文件恶心到了
    和 java 一对比 加载简直就是原始人的烧火棍
    写了 json 内容后 还需要自己去写对应的 config.go 文件 在里面增加对应的结构体
    还得在代码里通过 io 去加载各种资源。

    这个过程 ide 是感知不到的。你想通过属性文件看源码。。还得自己去手动搜索关键字
    简直要人命。这都 21 世纪了 我感觉工具退回去到 20 世纪了。

    包管理更是别说了
    golang 设计者以 git 为包平台
    我现在想找一些封装的 http 或者其他工具类
    由于不像 maven 和 npm 有一个统一的平台打包

    你想去搜 如果没有人在内部写对应的文档。根本找不到你想要的东西

    更气的是 隔几行就出了一个 error.
    也没有全局捕捉。。


    准备明年溜了 人生苦短。我不适合用 go ,
    现在才明白 java 真的不愧是世界第一语言
    190 replies  •  2022-12-01 18:04:35 +08:00
    1  2  
    ❮ ❯
    akira
    akira
    Nov 25, 2021
    101
    只要给的足够多,你让我那汇编写业务代码都行。。。
    hst001
    hst001
    Nov 25, 2021 via Android❤️1
    102
    你喷的这些东西跟 go 语言本身一点关系都没有,只不过没人给你造这些工具而已。
    zjyl1994
    zjyl1994
    Nov 25, 2021 via iPhone
    103
    建议立刻离职去 java 公司,别为难自己
    felixcode
    felixcode
    PRO
    Nov 25, 2021 via Android❤️9
    104
    接受不了新事物,学不了新东西,哪怕用回 java ,换个框架或换个版本,离开了舒适区,照样会到处喷。
    xjlnjut730
    xjlnjut730
    Nov 25, 2021
    105
    我跟楼主同样的想法
    dayeye2006199
    dayeye2006199
    Nov 25, 2021
    106
    这个不是 go 的问题;是缺乏像 spring 这样的杀手级框架。
    SurfaceView
    SurfaceView
    Nov 25, 2021
    107
    @Mirage09 他那句才真是纯反智发言把。。。确实极端 JAVA hater
    ly020044
    ly020044
    Nov 25, 2021
    108
    xd, 看你的 ID 我就知道你是几个意思了
    sxfscool
    sxfscool
    Nov 25, 2021❤️2
    109
    这 id ,还真是 java boy
    TarotVoyager
    TarotVoyager
    Nov 25, 2021❤️8
    110
    看淡点,全国吹 go 的都在 V2EX 了
    lower
    lower
    Nov 25, 2021
    111
    我记得之前看到过一个开源项目,是按照 springboot 的方式用 go 语言实现了一套
    记得作者好像还是某个大厂的
    hidemyself
    hidemyself
    Nov 25, 2021
    112
    @lower 滴滴
    Saxton
    Saxton
    Nov 25, 2021
    113
    @Amit 所以我加了个前提
    x7DnVcd9bA706oWp
    x7DnVcd9bA706oWp
    Nov 25, 2021
    114
    是你太拉垮,不是 go 不行
    LessonOne
    LessonOne
    Nov 25, 2021❤️2
    115
    @JudyHal 我笑了 Java 每年排行都是前三 很多开源的框架都是国外开源的 说只有中国在用你 4 不 4 小学没毕业
    stevenbipt
    stevenbipt
    Nov 25, 2021❤️1
    116
    json 这个强类型语言不都得定义好对应的数据结构?
    error 这个开始觉得挺烦的,但是处理好了基本上程序就不会出现一些奇奇怪怪的问题对于后期维护和排查问题也挺友好的,没想象中的那么烂.
    个人感觉最难受的还是因为没有范性,导致标准库提供的数据结构确实比较蛋疼,连一个 slice 转 map 都要自己去写,业务逻辑多了以后这个还蛮烦人的.
    BeijingBaby
    BeijingBaby
    PRO
    Nov 25, 2021
    117
    怎么说呢,Java 用了很多年,但是你用 Go 基本就是菜鸟。不要以为掌握了其他一门语言就能用好 Go
    cppc
    cppc
    Nov 25, 2021
    118
    GO 输在了 spring 上~
    mosfet
    mosfet
    Nov 25, 2021
    119
    国内生态别具一格
    java go 比例特别高
    php c#比例特别低
    kerro1990
    kerro1990
    Nov 25, 2021❤️2
    120
    难怪虾皮用起来这么垃圾,原来是你们开发的
    jsjjdzg
    jsjjdzg
    Nov 25, 2021❤️1
    121
    说 Go 不行有问题嘛?有 Spring SpringBoot 这样的框架嘛?唉,虽然每次碰到 XX 语言好,XX 语言不行都会战起来,不过理性来看。。。这次楼主没喷错
    zmqiang
    zmqiang
    Nov 25, 2021❤️1
    122
    也写了一段时间 go 了,有种 go 不是面向编写者的语言,是面向工程的语言,是面向维护者的语言。对于抱怨了那些,如果以维护者的角度来看,其实是挺好的,所有的东西都摆在明面上,没有看不到的流程,会让代码非常的好阅读和维护。
    wzy44944
    wzy44944
    Nov 25, 2021
    123
    听下来和语言没什么关系,是这个工程设计上的问题?好奇这个 json 属性文件是干什么用的?是类似 idl 吗?要是有个属性文件,还需要写 go ,不是应该有个代码生成器负责这个事情吗?
    xz410236056
    xz410236056
    Nov 25, 2021
    124
    “写了 json 内容后 还需要自己去写对应的 config.go 文件 在里面增加对应的结构体”

    这不是标准规范吗?哪个语言直接操作 json ? 你这种是怎么进入 shopee 的。
    fengyj
    fengyj
    Nov 25, 2021
    125
    啊? Java 还好意思嘲讽别的语言呢?
    RedisMasterNode
    RedisMasterNode
    Nov 25, 2021
    126
    @sadfQED2 别别别大哥,我司没有什么特别全面的框架,要我说还是使用者自己的问题;框架一般只负责接入一些全局通用的东西,例如监控、日志等等。逻辑代码就是原汁原味的 Go ,这种 case 基本上 99%的问题都是使用者的。

    另外 To 主楼,写 Java 的人也应该想清楚 go 再来写,不要无脑把你们 Java 那套破烂带过来。
    fengyj
    fengyj
    Nov 25, 2021
    127
    用写 Java 的思维写 Go 本身就够离谱的,JSON 写起来方便你咋不用 Nodejs 呢?包管理方便你咋不用 rust...这些突出并没说明 Java 多好,更多还是自己思维固定了
    cenbiq
    cenbiq
    Nov 25, 2021❤️5
    128
    可怜我 C#,吵都没人吵呀
    leeg810312
    leeg810312
    Nov 25, 2021 via Android
    129
    吵了半天就是 go 生态写业务太烂,go 还不适合,是不是一个公司只能用一种技术栈?
    ryan961
    ryan961
    Nov 25, 2021
    130
    毫无意义的吐槽贴,看完就想笑。json 有自动转化工具 https://mholt.github.io/json-to-go/不会去用,读取配置文件有强大的 https://github.com/spf13/viper ,自己还可以根据自己喜好封装下,go 的 error 处理方式你可以不喜欢,但在代码逻辑层面他又是必不可少的一部分,就算 java 有强大的全局捕捉,但相信每一步的错误判断也少不了吧。与其在这儿做毫无意义的吐槽、贬低,不如去深入研究下语言,go 既然能走到今天的地位,那肯定有他吸引人的地方,毕竟使用它的大厂也不再少数。当然,如果你纯粹的就是不喜欢 go ,那就别碰它
    manami
    manami
    Nov 25, 2021
    131
    java forever
    xxxxware
    xxxxware
    Nov 25, 2021
    132
    .... 各有各的好, 要方便怎么不去写 py 呢。 写了 py 又会骂 py 维护火葬场
    TomatoCLI
    TomatoCLI
    Nov 25, 2021
    133
    哈哈哈,我刚开始 JAVA 转 GO 的时候也是这样的,后来想了想,面向工资编程。
    redvoilin
    redvoilin
    Nov 25, 2021
    134
    go 适合写写基础组件,用来写业务代码真的很不舒服
    28Sv0ngQfIE7Yloe
    28Sv0ngQfIE7Yloe
    Nov 25, 2021
    135
    @BeijingBaby #117


    是的 ,我三年 java 转 go 就是这样,
    JoeBreeze
    JoeBreeze
    Nov 25, 2021❤️1
    136
    等一个大佬出一个集大成的语言, 浑身上下只有优点, 一统江湖
    james2013
    james2013
    Nov 25, 2021
    137
    Java 已经是非常成熟的后端开发生态了
    Spring Boot 开箱即用,1 个小时内创建项目,并编写出从 Mysql 查询,Redis 缓存的接口

    这几种语言用的比较多:Java,JS,Kotlin,Python
    Go 只简单用过,不发表意见
    发现 Kotlin 最舒服,其次是 Java,Python 最恶心
    Python 代码写错了,编译过程不报错,有时不小心多打或者少打字符,当时也发现不了
    Python 没有强约束,传值,返回值,太灵活了,逻辑写复杂点,自己的代码过段时间都不知道怎么看了
    PyCharm 支持明显比 Java 差,Idea 点击方法调用的地方,只会跳到唯一的地方,而 Python 不一样,会提示很多方法
    nash
    nash
    Nov 25, 2021
    138
    java 离开了 spring 估计也会被喷成狗 作为一个程序员以语言引战就是心智不全的表现
    fregie
    fregie
    Nov 25, 2021
    139
    哈哈,被恶心到就对了,go 本身就是一门对开发者不友好,对架构师友好的语言。开发者用起来很多地方不方便,要写很多错误处理代码,强类型,不面向对象要写很多结构体。但是这些麻烦对于提升项目整体质量来说非常有效。
    getcodex
    getcodex
    Nov 25, 2021
    140
    额.... ,你可以试试 github.com/tidwall/gjson 这个包,解析 json 还是比较好用的,非这个包的开发者,只是我目前用的比较多的


    ```
    respJson := gjson.Parse(string(response))

    respJson.Array()

    respJson.Get("0.data.id")
    ```
    sgissb1
    sgissb1
    Nov 25, 2021❤️8
    141
    go 的好处就是降低了程序员准入门槛,任何一个人都可以抱着 go 说自己是高性能,高并发程序员。其本质还是 go 在背后解决了携程和线程调度的问题,当然也有不少开源的作用,不过遇到不会用的,还是一堆坑,没错! go 的坑也不少。

    java 的好处就是,让很多人在以前装了一把 oo 概念,实际上软件模型设计就没有那么多玄学的东西,关键要适用要好用,各种 pk 设计模式,那就是认为复杂化问题的前提,所以一些 java 程序员也很能把一个很小的需求让软件规模变大

    c#的好处就是他的语法接近 delphi 、c 、c++,有着类似 delphi 年代的边界和相对低门槛,又有 M$作为后盾,在里面增加很多和系统有关的易用 API ,而且 vb 程序员也能相对容易的转 C#,基本就是 java 的一个翻版,可以写 native app 、网页等等。但 framework 也是让人比较难受,更何况现在都是预装,让系统体积变大了不少,还有不少预加载在后台等着运行 c#写的东西,不利于一些相对低功耗方案的硬件。

    c++的好处就是划时代的解决了 c 写一个程序时的抽象问题,让大家写起来和阅读起来更加自然,也增加不少花样和奇 X 技巧。但是弊端也很明显的,首先方言版本太多,另外还是需要了解一些底层的东西,如果写代码的人掌握的不到位,很容易分分钟 crash 或者出不可预知的问题。这也造就了刚刚普及当年,很多人看过的《 XXX 天精通 c++》这篇文章。另外语言存在较强的灵活性(低情商说法:语言不规范)。面试的时候,大家都很喜欢用指针、sizeof(XXX)之类的进行考,还有各种复杂的运算符,类似+++++i++++等。

    c 的好处就是不用再写汇编了,也可以从其他语言脱离出来安心写逻辑了(比如 fortran 等等),但还是时代产物,也有不少特定场景的用法(不该说是方言,应该是应用方向),比如在嵌入式里写的 C 和 PC 上写的 C 就有一定细微的差距,当然每年更新的标准让 C 和 C++这两个庞然大物改变较大。


    作为一个上面几个语言都接触过,而且 90%的时间都在写 c++的人来说,开发语言真是没什么好辩论的。主要是现在这个年代不值得这样做,另外也是不成熟的做法。合适的地方用合适的语言,这才是真正资深程序员的做法,而不是那种完成 KPI 的“资深”程序员的做法
    mikulch
    mikulch
    Nov 25, 2021
    142
    @chi1st 虾皮的话听说可以去新加坡,不考虑考虑吗 lz 。
    seakingii
    seakingii
    Nov 25, 2021
    143
    c# 躺平,不参与比较
    xfun
    xfun
    Nov 25, 2021
    144
    那这样一看 javascript 更符合你的要求。233
    zagfai
    zagfai
    Nov 25, 2021
    145
    为啥不来用 Python 呢?用了 10 年依然觉得 Python 是抽象程度最高的语言,代码量最少。
    lap510200
    lap510200
    Nov 25, 2021
    146
    @tabris17 你这带有鄙视链了 nodejs php 就意味着开发者水平差吗 写 java 的也大把的人只会框架
    stach
    stach
    Nov 25, 2021
    147
    人生苦短,我用 Python ,不掉头发。
    stach
    stach
    Nov 25, 2021❤️1
    148
    高低搭配: python 写业务, go 写中间件
    libook
    libook
    Nov 25, 2021❤️5
    149
    好家伙,竟然还没进水深火热。

    Go 只有在国内这么火,海外其他地方还是比较百花齐放的,到现在不少人用 PHP 、Ruby 也没见人鄙视。

    国内普遍从众,而且危机感过强,以至于一门技术只要有较大的宣传力度都可以有不错的普及率,因为很多人都觉得某技术栈火了,自己不换就很快会被淘汰了。

    Go 一开始的宣传定位是系统开发,也确实有 Docker 这种杀手级应用,甚至扬言要取代 C++(后面就知道了这完全是夸大宣传,至少 Google 自己的工程师不买账),最终只在微服务架构中找到了自己的市场(这个领域确实做得挺好),整个技术栈生态也朝这个方向发展,如果要做的项目不是这个方向的,那么很可能选其他技术栈会更游刃有余一些。

    我个人的感受就是被其他技术栈的现代化特性惯坏之后,Go 用起来实在难受,说技术倒退是一点都不过分的。

    但企业生产从来都不是看这些方面。
    当今企业生产有些比较头痛的问题需要解决,如人才紧缺、协作问题、代码维护问题。
    而 Go 恰好是一款精准 Hack 企业生产问题的“产品”,从个人角度来看,Go 很简陋,但正是这种简陋,产生了较高程度的统一化,当一个需求只有一种解决方案,或者不同人写出来的代码都是一样的时候,不少企业生产问题也都自然解决了。

    Go 很烂,但不得不说,特别适合当下的生产需要。
    liyhu
    liyhu
    Nov 25, 2021
    150
    有钱就行,管它什么鬼
    JohnSmith
    JohnSmith
    Nov 25, 2021
    151
    以前都是争论 “php 是最好的语言” 🙄 ,时代变了
    bk201
    bk201
    Nov 25, 2021
    152
    我猜如果不是 k8s ,go 也发展不起来。
    liuxu
    liuxu
    Nov 25, 2021
    153
    @JohnSmith 已经争论完了,php 确实是最好的语言,现在笑看其他语言,吃瓜看戏
    leafre
    leafre
    Nov 25, 2021
    154
    非要加最后一句就是找骂嘛
    charmToby
    charmToby
    Nov 25, 2021
    155
    Code is cheap, show me the money.
    xiparos
    xiparos
    Nov 25, 2021
    156
    @JudyHal 都懒得喷你,一看就是个喷子
    gowk
    gowk
    Nov 25, 2021❤️6
    157
    「 Java is the best 」
    tbxark
    tbxark
    Nov 25, 2021
    158
    写个自己玩的小后台用 go 还是挺好的,用 springboot 随便就几百兆内存,一下子给我的小服务器挤爆了
    byte10
    byte10
    Nov 25, 2021
    159
    @Saxton 是的,随便拉一个大学生都可以写。
    @azkaban 其实性能差不多的,java 的 jit 也不会很差。java 也有 netty ,单针对特殊的高并发业务可以使用,虽然异步编程不是很舒服,但是可以小规模使用。
    @JudyHal 。。java 国内外都很火把?排名很是很靠前的。
    @felixcode 楼主是吐槽 go 不适合写业务,实际上写业务确实一般。
    @xfun js 搞 json 数据方便呀,233
    @bk201 就是微服务,云服务 K8S 带动起来,实际上一般般,不过直接编译成可执行文件,倒是小优势。从开发角度看,真的一般般,比啥都不行。
    wellsc
    wellsc
    Nov 25, 2021
    160
    @chouchoui V2EX 还在吹 python 呢,吹 go 的都在知乎呢
    intmax2147483647
    intmax2147483647
    Nov 25, 2021
    161
    @lianghuan 经典
    ScepterZ
    ScepterZ
    Nov 25, 2021
    162
    1 、可以用工具转一下,ide 确实没法对应,不过一般反正 json/yaml 也是在配置平台上,ide 里怎么也看不见
    2 、找包这个应该只是习惯问题,go 是包少,但是搜的方法没觉得和 java 有啥区别
    3 、err 确实一堆代码,忍吧
    gowk
    gowk
    Nov 25, 2021
    163
    cloud107202
    cloud107202
    Nov 25, 2021❤️1
    164
    看淡点,这跟 13-14 年 v 站吹 python 踩 Java 的画风不是完全一样么
    历史不是简单的重复,但却有惊人的相似
    用着公司的语言挣钱,用自己喜欢的语言写业余项目,没什么好吵的
    ykrank
    ykrank
    Nov 25, 2021❤️1
    165
    说到底不还是 go 的生态不大行么,甚至这个帖子里的 go 吹都承认这一点,只能想着怎么把它包装成不值一提的小缺点。
    不过对 go 的印象最深的还是最开始听 go 是可以脚踩 C++,不知道为什么现在要自降身份,来和 java boy 干饭吃了。
    现在和 c++干起来的还有个 rust ,不知道 go 要不要和这兄弟 PK 下
    snowlyg
    snowlyg
    Nov 25, 2021
    166
    就像骑自行车的人,嘲笑开汽车的人:他们的车竟然还要定期加油,定期保养。容易堵车不说,路况不要小于一米五的路面就过不去。汽车真的太恶心了,特别是超级跑车更恶心,一个减速带的过不去。人生苦短,我是不适合开超跑了。
    matrix1010
    matrix1010
    Nov 25, 2021
    167
    Go 这个语言写个能用的东西很快。得益于 goroutine 的强大性能,甚至说写个能支持高并发的东西也挺快。但是要想写一个对别的开发者友好,具有一定通用性,方便扩展,易于维护且方便测试的东西,就需要很高的设计能力与品味了,而且很多时候必须要依赖代码生成,又进一步提高了门槛
    pokeyou
    pokeyou
    Nov 25, 2021
    168
    也就 sprinboot 出来之后 java 才感觉好用的吧。 大学那会自学 ssh ,被一堆 xml 搞伤了,完全不想碰 java 。
    dongsoso
    dongsoso
    Nov 25, 2021
    169
    结论:go 不如 spring
    morty0
    morty0
    Nov 25, 2021
    170
    go 的优势是云原生啊, 跟 k8s, docker 很契合, 加上 goroutine 的并发能力不错
    skiy
    skiy
    Nov 25, 2021
    171
    各语言有其特点。GO 写高并发很不错,写服务也不错。写 WEB 和别的系统层的话,我觉得还是别的语言好些。
    FightPig
    FightPig
    Nov 25, 2021
    172
    虽然我从大学就一直写 java ,但现在好多年不写了,太啰嗦了,go 的 err 是不舒服,但也算清晰,编译也快,
    sherlock1122
    sherlock1122
    Nov 25, 2021
    173
    完了,我从来不用 JAVA ,也是 JAVA 黑。
    就那高内存占用,代码臭长,运行麻烦,就不会用。
    littlewing
    littlewing
    Nov 25, 2021
    174
    来,用 C++ 吧
    seakingii
    seakingii
    Nov 25, 2021
    175
    来吧,RUST,明日之星
    RuLaiFo
    RuLaiFo
    Nov 26, 2021
    176
    投 JAVA 一票
    holulu
    holulu
    Nov 26, 2021
    177
    只要钱够,不怕恶心
    Nich0la5
    Nich0la5
    Nov 26, 2021 via Android
    178
    前面说 Python 的兄弟们,虾皮其实就是从 py 刚转的 go
    yjd
    yjd
    Nov 26, 2021
    179
    java 看着代码又长又臃肿,只是感觉。
    simo
    simo
    Nov 26, 2021
    180
    有没可能,多年后,两种语言甚至多种语言都熟悉了,看法可能会不同呢?
    vincent7245
    vincent7245
    Nov 26, 2021
    181
    哈哈哈哈哈哈哈,语言都是工具,只要钱给够了让我汇编撸一个电商我都干
    Maxwellwenjie
    Maxwellwenjie
    Nov 26, 2021
    182
    go 以前碰瓷 4,5 年前 C++,现在碰瓷 Java ,再过几年碰瓷哪个呢--PHP 、JavaScript 。。。?
    INCerry
    INCerry
    Nov 26, 2021
    183
    @sgissb1 不过.net framework 已经是过去式了 现在都是.NET Core 或者.NET5 、6 publish 的时候也可以选择自带运行时 目标机也不用装.net framwork
    gollwang
    gollwang
    Nov 26, 2021
    184
    习惯了什么都是伸手就来,当然会觉得从头开始繁琐且别扭,语言本身没啥问题
    mintchiu
    mintchiu
    Nov 26, 2021
    185
    那也只是 java 牛逼,不是你牛逼。你怼 go 干啥呢?你觉得你一个小白有资格评价吗?
    ncepuzs
    ncepuzs
    Nov 27, 2021
    186
    @LessonOne 大概半年前发帖 /t/781416 为双非二本在读,感觉此人目光狭隘、思想偏激。我曾经也怼过,上一贴吹 go 如何如何,下一贴为了踩 java 连带 go 也踩了。 /t/814129 #53
    xumng123
    xumng123
    Nov 28, 2021 via iPhone
    187
    一堆傻冒所谓的架构师
    flynaj
    flynaj
    Dec 1, 2021 via Android
    188
    把 go 当 Java 用肯定累死,要找 go 的方法,包。
    go 的包管理比 Java 要先进很多,前提是你要回用。
    2NUT
    2NUT
    Mar 22, 2022
    189
    @stevenbipt #116 json 这个强类型语言不都得定义好对应的数据结构?

    json 动态加载, 静态语言都得定义好对应的数据结构
    allgy
    allgy
    Dec 1, 2022
    190
    厨师不行怪灶台不好
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3463 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 242ms · UTC 04:20 · PVG 12:20 · LAX 20:20 · JFK 23:20
    ♥ Do have faith in what you're doing.