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 这么火,越来越多的互联网公司用来支撑业务,照理来说生态和体验跟其他小众语言不是一个量级的了,但是用起来还是有些失望。

23364 次点击
所在节点    Java
204 条回复
shunia
2022 年 1 月 22 日
@Livid #62 突然开始不说人话
windseekerjack
2022 年 1 月 22 日
@binbinyouliiii 建议多看看拿 go 做主业务的这些公司的框架组件,基本都开源了或分享了架构设计,你列出来的这些都和语言没半毛钱关系,没有 spring ,java 裸写 web 服务的体验就很好?实际上 web 开发对语言没什么要求,java/python/go/php 写起来都各有优点,不要写个 demo 就对一个语言评论来评论去。
darknoll
2022 年 1 月 22 日
我个人的原则是面对工资编程,钱给够,啥语言不能干啊。
扯什么语言好不好的,要么不会用,要么不成熟。
encro
2022 年 1 月 22 日
当你了解 3 门以上语言的时候,就不会想这些问题了,开发没有银弹。

C:执行效率+底层+兼容性+入门简单
C++:执行效率+底层+面向对象
Rust:执行效率+底层+安全+cargo 生态加分
Php: Web 开发效率+入门简单+composer 生态加分
Python:万能+入门简单+pip 生态加分
Go:并发机制+入门简单+go get 生态
Java:万能+学习曲线平滑
C#:桌面开发+开发效率+学习曲线平滑
Node:客户端运行+入门简单+npm 生态加分

可以看到:

1 ,最近几年能流行的语言都有一个共同点就是包管理生态加分,Java 和 C#虽然万能,但是社区掌握在某些公司且需要虚拟机运行环境,所以发展还是慢了点。

2 ,每门语言都有时代特色:1 代解决的是基础设施问题,这时候主流是 c,c++; 2 代是互联网服务端和客户端蓬勃发展,主流是 PHP,Python,java,C#; 3 代是云计算,科学计算,大数据主流是 C++,Python,Java,Go,Rust
Joker123456789
2022 年 1 月 22 日
go 开发 web 可以试一下这个框架,比较接近 java 的习惯。https://beeruscc.com
vophan1ee
2022 年 1 月 22 日
看到这个帖子让我想起了很久以前看到 c 语言的用户喷使用 c++ 的人:动不动就问语言有没有这个,有没有那个
lesismal
2022 年 1 月 23 日
@iseki #171
很多现象都是一个道理,类似劣币驱逐良币,金字塔结构,水平一般的人总是占据多数,所以一些不好的东西反倒因为用泵众多而更火,最典型的比如 nodejs 。

绝大多数喷 go 的人,都是只会 curd 的初级中级开发者,系统、架构、算法、结构、性能之类的都还没真正懂,稍微大点的项目、要求高点的项目都没做过,自己的技术职级和薪资还没达到高阶的水平比如百万,甚至 java 社区很多伪架构师(比如阿里 p7 甚至 p8 ),只会根据自己多数情况靠 cv 就能解决的业务代码习惯来评价技术栈、喷都喷不到点子上——这也是你另一个帖子里为什么 gopher 反感别人喷,因为绝大多数都是乱喷。
ifhover
2022 年 1 月 23 日
试试 goframe
agagega
2022 年 1 月 23 日
@wdhwg001
说起来,我见过一个作用和 C# LINQ 相似但思路完全相反的东西,就是苹果的 NSPredicate:LINQ 是把 SQL 写成代码,这玩意是把代码写成 SQL ,脑洞贼大。
wdhwg001
2022 年 1 月 23 日
@agagega 其实 LINQ 也是支持 Query 写法的,虽然现在不是很常见,而且糖含量过高,看起来和正常的语法区别过大。

另外你好像被降权了,我收不到你的回复提醒。
gongquanlin
2022 年 1 月 23 日
laravel 和 spring 都写,只是思考模式不一样;
以前也觉着 laravel 对比 spring ,spring 辣鸡的想屎一样,现在发现实际上发现,只要以 aop 的思想去写 spring ,也可以很香; laravel 的路由控制器分离、没有 domain 反而觉着有时候不方便;虽然 laravel8 的路由可以直接写控制器的类,但是还是不如 spring 的注解路由方便;但是 laravel 的 collection 、orm 这一套,就是比 list 、map 和 mybatis 、mybatis plus 用的舒服,不服不行好吗
go 没有 laravel 准备好的的 facade ,没有 spring 的注解,数据库用 gorm ,写起 crud 逻辑就是累,go 本身就适合无状态应用开发,云原生应用,用在并发场景,websocket 、用 grpc 就是舒服。
前端写 vue ,nginx 搞一把,接口负载一把
自己的项目,crud 业务用 laravel ,简单队列用 laravel-queue ,长连接 websocket 用 go ;
公司业务 sping 一把梭哈,实现一把 redis 队列,主要是独立部署给客户的多,什么定时任务、队列都带着了,甲方 restful api 、webserices 、rpc 都能搞

都香得很好吗,各有各的优势
NeoZephyr
2022 年 1 月 24 日
@liuxu 有点素质!谢谢
NeoZephyr
2022 年 1 月 24 日
@windseekerjack b 站的代码,网上又不是没有,感觉真不咋滴
NeoZephyr
2022 年 1 月 24 日
@leeg810312 “世界上最好的编程语言” >>> 好熟悉的声音!果然写 GO 的都是 PHP 转过去的吗
tt0411
2022 年 1 月 24 日
不想在语言上争执太多, Go 有他的适用场景, 但是写过复杂 Web 应用的话如果用过其他语言 (包括但不限于 Java/PHP) 就知道 Go 有多不靠谱, 现在微服务架构让单个模块的代码层次很简单, 一定程度上缓解了 Go 的这方面毛病. 话说 Go 也开始考虑支持泛型了, 我记得我写 Go 那会, 官方似乎对泛型很不屑... 没准过个一两年 Go 也会支持异常的 hhh
windseekerjack
2022 年 1 月 24 日
@NeoZephyr #191 不知道你看的是泄漏出来的源码还是开源的组件。代码和目录规范性,代码生成工具都不错,对新人友好,新入职的估计 1-2 天就能进入开发,除了全部业务放一个仓库外我没看出什么别的问题,不是很清楚你觉得不咋滴是哪些方面?
thtznet
2022 年 1 月 24 日
很多年前写前端的人嫌 手动操作 DOM 太随意,BUG 到处飞,于是出现了 jQuery 库规范基础的操作,jQuery 写多了又觉得代码设计不够优雅,于是出现了框架将 DOM 操作封装隐藏起来,老外软件工程起步早,一来就意识到了问题核心,搞了个 Angular ,把前端衍化体系一下子快进到和后端一样,这时候国内的前端人刚刚脱离切图仔的标签,jQuery 还没捂熟哪见过这么体系化的技术,纷纷表示这玩意太复杂太重了,发展不开。寻了 N 久找到一个模仿并简化 Angular 的 Vue 框架, 就是它了,最适合国内的行情,带着点设计模式比 jQuery 高得不知道哪里去了,又比 Angular 简单啊,那么多代码堆一个组件里一把梭齐活,搞着搞着,就成了江湖。
NeoZephyr
2022 年 1 月 24 日
@windseekerjack 代码和目录规范性不是基本的要求吗?至于 1-2 天是否能进入开发,这个变量影响太多了,不一定跟代码质量有关系。我觉得可读性一般,很多命名很离谱,封装性也不好,有很多重复的代码。有一些代码实现,感觉很奇怪,我接触到的一般也不会那么写
windseekerjack
2022 年 1 月 24 日
@NeoZephyr #196 为什么关注代码质量,业务代码哪家公司都是一堆屎,更别说经手那么多人。关注项目结构,开源组件怎么引入工程,生成工具。
还有,我举例 b 站只想告诉楼主,不要随意写个 demo 就出来谈感受,楼主说的这些问题,b 站开源的 Kratos/或者其他开源组件都能快速解决,但是楼主没有想过去了解,讨论规范,spring 基于 servlet 规范,go 除了 fasthttp 都基于 net 包,这就不规范了?输出一堆情绪,拿楼主说的套一个新人写 java/c#有什么区别?
xinQing
2022 年 1 月 28 日
web 项目用 go 不是搞人心态么,事务处理起来不难受么。。interface{}、err 满天飞。

go 搞一些基础组件,网络中间件啥的挺好的。

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

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

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

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

© 2021 V2EX