Javaer 用了一下 Go web 开发,感觉开发体验倒退了

2022 年 1 月 21 日
 binbinyouliiii

之前一直用的 java 写 crud ,最近有项目要用 Go 写,然后我就用了 Go 尝试写了一个 web 程序

但是体验下来,其实开发体验并不怎么高,比如脚手架,虽然有很多现成的,但是我更希望有一种规范或者 interface ,就算是 java 多年前的纯 spring+servlet ,也会提供各种 interface 去规范。这样起码可以保证接手或者同时维护的人能够更快的理解和上手。

开发体验类似写命令行程序,从 main 函数一点点往上加功能,写了一天,看了一天文档,我才把 gin+gorm+zap+viper 配置好,花时间去组合。

crud 方面就不说了,还是比较原始,或者有什么奇淫巧计我不知道的。

上面说的几点只是我简单用了几天,感知比较大的几点。

其实上面说的同样可以放在其他语言上,我也不是对 Go 有什么偏见,而是觉得 GO 这么火,越来越多的互联网公司用来支撑业务,照理来说生态和体验跟其他小众语言不是一个量级的了,但是用起来还是有些失望。

23363 次点击
所在节点    Java
204 条回复
xsen
2022 年 1 月 21 日
但是相对 Go 带来的好的地方,要造轮子是属于可以接受的;选择某个语言或技术栈,都是要综合考量的
起码对我们来说,要造轮子属于可以接受的

个人就是从 C/C++/Java ( Springboot-微服务那套)一路过来的,只能说最终选择了 go 这个方向;而不是继续停留在 Java/Springboot 那套
xsen
2022 年 1 月 21 日
而且 OP 本身对比就有问题,你拿 gin+gorm+zap+viper 与 springboot 这样的大一统框架做对别
若可以,不妨这样对比,
Java:netty + mybatis + log4j +*,
Go:gin+gorm+zap+*

Go 现在相对比较正确的姿势是,找相对成熟的、主流的 go 的微服务框架(相对大一统的框架)来做比较
比如,我们目前用的是好未来的 go-zero ,做法基本就是定义 api+表,然后通过工具生成 model 与接口的代码
jsjjdzg
2022 年 1 月 21 日
说白了就是一个语言还没有搞成规范化,以后 Go 规范化了不知道会不会打一堆人的脸。。。
tt0411
2022 年 1 月 21 日
有一说一, Go 写 Web 系统是真不行, 和框架无关, 主要还是语言特性 (比如缺少异常)
utodea
2022 年 1 月 21 日
Java/Go/Node/Python 都写过生产环境的 web 类产品,你感觉没错。

说难听点,说 Go 的 web 开发体验比 Spring 体系好的人(特别是多人体系的大项目),要么是他们没脑子且自负,要么是 Spring 社区过去整整 19 年里都在摸鱼。
PDX
2022 年 1 月 21 日
用过很多种语言,最后发现还是 java 用着最安心。
kkocdko
2022 年 1 月 22 日
@livid

@liuxu #62 口吐芬芳
xinzhanghello
2022 年 1 月 22 日
你可以了解下.net 开发学习起来是真的快 。go 不适合写业务
liuxu
2022 年 1 月 22 日
@kkocdko #127 我确实只教儿子,没精力教别人
wdhwg001
2022 年 1 月 22 日
c#是真的惨,到了第二页才有人提起它,甚至第一页的共识都是 spring 孤独求败,对比对象从起初的 go 到 php 到 js 到 py 再到 ruby ,最后竟只有一个老哥提起 .net 。

我就在想,你们那些用过各种语言依旧觉得 spring 孤独求败的人,要不要试着用.net mvc 写一下 crud ?至少我是觉得 c#的 linq 过了这么多年依旧完全没有对手。

顺便…甚至 php 都有 PSR 来约束和规范化 web 开发,大道至简的 go 呢。一把梭要是真的这么灵,也不会有 psr 这种东西出现了,毕竟 php 比 go 一把梭多了。
wdhwg001
2022 年 1 月 22 日
@Livid 我觉得 @liuxu 这个账号在拉低讨论层次和人身攻击方面多少有点过火了。
liuxu
2022 年 1 月 22 日
@wdhwg001 @Livid 楼主带语言的节奏,月经贴,故意挑,水深火热了
ajaxfunction
2022 年 1 月 22 日
恕我直言,在 web 开发领域,特别是 curd 方面,所有框架语言和 php 都是辣鸡,没有例外。
lesismal
2022 年 1 月 22 日
对性能没要求的开发者多数都觉得体验倒退。

所以隔三差五就会看到这种需求只有几天一次的小白吐槽正在天天七次的猛男的引战帖。
Dockerfile
2022 年 1 月 22 日
@liuxu laravel 。。我亲眼见到知乎一个 laravel 的布道者转了其他语言。。还是挺搞笑的
Samuelcc
2022 年 1 月 22 日
op 说的都是自己的体验,也确实是事实不是么?
部分 Goer 是否过于狂热了。。
我的喜好来说业务开发用 Java ,底层开发用 Rust ,Go 的应用场景比较少,语言特性也不太喜欢。在并发上可能编写起来对比 Java 有优势,总体性能还真未必。
看过 Influxdb 的代码,用 go 写一些文件和缓存操作确实挺香,不过即便如此,由于缺少泛型也用工具生成了大量的重复代码。
clouddd
2022 年 1 月 22 日
什么 Go 啊 Node 啊 写的不好确实容易写成💩山 我能理解楼主的苦
charlie21
2022 年 1 月 22 日
golang 还没到那个层次。预言之中会有一个大英雄,一个盖世英雄,我知道有一天他会身披金甲圣衣,脚踏七彩祥云,在一个万众瞩目的场合来将 golang 宇宙发展成 java 宇宙,就像 Taylor Otwell 为 php 宇宙带来了 laravel 一样

web 开发就这么点事情

高性能的部分都做了,做个(像 laravel 一样,有 ORM ,有 Router ,有 composer 这样完备的解耦的模块管理,有 artisan 这样的命令行工具可以用来做代码生成器,有自己的或者第三方的模板语言。有成熟庞大的社区和用户数量支撑)还困难吗?

在功能方面 早期的 laravel 只能发送 zip 文档,但这并不阻碍在沟通方面 php 作为业务语言已经用很不方便沟通的方式堆了那么多 CRUD 了
cassyfar
2022 年 1 月 22 日
能力差怨语言烂。话说没 spring 你也写不来 java 了吧?
dream4ever
2022 年 1 月 22 日
@gouflv 后来是怎么解决这个问题的?换框架么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/829692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX