转 go 半年,初期痛不欲生,难以想象 go 的 web 开发生态如此简陋
写了半年感觉慢慢适应了,虽然很多东西都要手写(之前写 java 的)但感觉好像写啥都是一把梭,很快都能写完了。。。
难道这就是「大道至简」,我悟了。。。
(纯调侃)
1
Maboroshii 2022-05-09 02:36:18 +08:00 via Android 3
我第一份工作就是用 go 写 web 服务,之前也没系统的学习过别的语言写法,反正觉得挺舒服。
但是遇到几个 Java 转 go 的同事写出来确实很啰嗦。。没错,,开战吧! |
2
i3x 2022-05-09 04:17:16 +08:00 via Android
萌新不懂就问。web 不是 php 的活么?
不是很懂 ruby go python 的 web 后端代码是如何维持一个庞大的体量后还能维持更新的。 java 都感觉比较麻烦了。 虽然我也用过 django 之类的。但是感觉没什么先进性? |
3
drackzy 2022-05-09 04:41:36 +08:00
写的痛快舒服不一定钱多,比如 Python web 。
|
4
asuraa 2022-05-09 04:48:12 +08:00 via iPhone 1
工作中同时用 spring boot 和 asp.net core 前一个库多 写起来啰嗦,后一个库没前面多,写起来舒服 。每次自己想用 go 做点东西,ide 啥的弄好开始写,非常痛苦跟难受,然后不了了之。。。
|
5
chendy 2022-05-09 08:05:38 +08:00
前几天接了个 php 的小活,啥都没有$一把梭是真的快乐啊
|
6
nine 2022-05-09 08:21:00 +08:00 1
啥?写 Java 都成幸福的事了?
用 Ruby 你不是爽到飞上天。 |
7
herozzm 2022-05-09 08:29:10 +08:00 via Android
是的写 api 舒服,但如果要写 web 比如 html 模板啥的,痛苦的一 p ,最后还是换成 php
|
9
fiypig 2022-05-09 08:45:27 +08:00
需要什么 ,就造什么 ,多好啊, 有时候越复杂不一定好
|
10
echo1937 2022-05-09 08:46:12 +08:00
别和我说大道至简,真的过敏。
老 Django 项目,FBV 写法,几乎不用什么第三方生态库, 甚至操作数据库都不用 Django ORM ,够大道至简了吧? 然后一堆类似功能复制来复制去的,就算是 Flask 也不会写成这样啊。 |
11
darkengine 2022-05-09 08:47:51 +08:00
@echo1937 那是人的问题
|
12
echo1937 2022-05-09 08:51:35 +08:00 1
@darkengine #11 换个大神来,把通用功能抽取出来,层次分清,代码通用,不又是一个新轮子(框架)吗,功能越强大,免不了就越重。
|
13
yl20181003 2022-05-09 08:52:02 +08:00 via Android
月经贴
|
14
RickyC 2022-05-09 08:54:57 +08:00
不太懂 go; go 能用来开发 web?
web 不是前端吗? 前端不是 JS, vue, react 这些吗? 后端不是写接口的吗? |
15
cityboy 2022-05-09 08:55:47 +08:00
我是从 java 转 go 的,我感觉写 web 应用 go 和 java 都差不多。主要再写业务架构上面有很大的区别,我们团队的搭建架构都是模仿 java 写的,导致上层基于这个架构写的人很难受。
例如用 go 写 ddd 的架构代码,不复杂的项目还行。复杂的项目,你会发现真的要写死人。 |
16
darkengine 2022-05-09 09:02:08 +08:00
@echo1937 我以为“层次分清,代码通用 ”是一个好项目的基本标准呢
|
18
echo1937 2022-05-09 09:15:25 +08:00
@darkengine #16 我的意思是,简不简是由需求复杂度决定的,靠换个语言起不了大作用。但是把项目搞繁芜却很容易,选个足够复杂的框架轮子就行。所以总结下来,这和人有关系,和语言没啥关系。
|
19
yzbythesea 2022-05-09 09:19:21 +08:00
我是 java 转 go ,这两年效率翻倍(感觉吐嘈 go 的基本都是玩梗,什么 err != nil 这种
|
20
darkengine 2022-05-09 09:19:54 +08:00
@echo1937 嗯,我的意思也是,语言再 NB 用的人没用好也白搭
|
21
acehowxx 2022-05-09 09:22:54 +08:00 via Android 1
go 写 web 的服务是挺好的,适合前后端分离的项目,路由跳转也别管,就接个参数返回个 json 省心的很。配合 copilot 写写注释按按 tab ,编程体验还是很愉快的。
|
22
x1aoYao 2022-05-09 09:49:12 +08:00
我似乎也有过这样的感受,不过现在又开始嫌弃了。
我也是 Java 转 Go ,快 4 年了,准备转 Rust 了 |
23
mknightoy 2022-05-09 09:56:47 +08:00 3
java 整体配合好却不尽兴,可在善解人意这方面没得说
net 与 java 相反挺尽兴的,不过有时候太过于主动很累 js 类似 java 但时间一久就腻了,只能凑合着过 ruby 属于平平淡淡类型 go 它的一切你都可以掌控,就是太过青涩 rust 太超前了,大多人坚持不住 python 非常恐怖,所有人通杀,时间久了就出不来了 c++永远的存在,没有一个人能掌握它之心 与 php 美好的时光,是甜蜜的糖 |
24
unnamedhao 2022-05-09 09:59:14 +08:00
我想咨询一下,有什么东西是 java 不需要手写,golang 需要手写的?
|
25
tianyou666shen 2022-05-09 10:02:28 +08:00
也许这就是为了优化工程复杂度而诞生的语言吧 //狗头
统一的 fmt 带来一种奇妙的体验,看别人的库就像逛自己家一样,里面在干嘛都很直白. |
26
Latin 2022-05-09 10:03:11 +08:00
@unnamedhao 指的是第三方依赖很多 不用自己造轮子
|
27
wanguorui123 2022-05-09 10:07:41 +08:00
新东西肯定要造轮子
|
28
fkdog 2022-05-09 10:25:29 +08:00
java 的三层架构太深入人心了,以至于写 java 的在切到其他语言以后免不了总是会有意无意的弄出这种分层模型。
|
29
nulIptr 2022-05-09 11:09:50 +08:00 2
go 里面 map/reduce/filter 都得写 for 循环让我不能接受。。。
|
30
ojh 2022-05-09 11:34:34 +08:00
@fkdog 这个时候就可以去想为什么存在三层架构,有什么作用,什么时候才用到。部分的人不去深究而是照搬去做或者吐槽 Java 垃圾
|
31
Immortal 2022-05-09 11:42:57 +08:00 1
别说写的爽不爽
光 go 的: 1. 开发环境配置 2. 编译速度 3. 启动速度 就让我爽的嗷嗷叫的,以前配置 php\java\python 的环境,安装依赖那些真的烦 |
32
EscYezi 2022-05-09 12:41:38 +08:00 via iPhone
@nulIptr #29 想回复点错成感谢了……1.18 后可以用 https://github.com/samber/lo
|
33
superfatboy 2022-05-09 13:55:17 +08:00
我作为一个初学者感觉两个不舒服的地方:
1. if err != nill return err 2. 找数组下标(没有范型的时候,很烦) |
34
javaisthebest 2022-05-09 14:28:20 +08:00
@Immortal java 需要安装什么配置?
idea 自带 jdk 下载 自己无非就得配置一个 maven 而已 如果是 mac 的话 brew install maven + 复制别人一个 settings.xml 的事 我是不知道 Java 有啥麻烦的 |
37
Immortal 2022-05-09 15:21:11 +08:00
|
38
kalista 2022-05-09 16:31:08 +08:00 3
我非常喜欢一个二进制就可以运行的感觉
|
39
B1acKy1in 2022-05-09 19:21:03 +08:00
所以 rust 在这里就没有生存空间吗?
|
40
Rwing 2022-05-09 21:04:20 +08:00
用 go 写 web 的都是背离了 go 的设计初衷的,自找麻烦
|
41
Leviathann 2022-05-09 21:05:36 +08:00
有没有 show case 可以对比一下?
|
42
hsuyeung 2022-05-09 23:07:26 +08:00
Spring Boot Boy ,接触 Go 的第一天就爱上了!
|
43
vchroc 2022-05-10 00:01:13 +08:00 via iPhone
连个像样的枚举都没有,真的是语法糖太少,味道特苦
|
45
dzdh 2022-05-10 00:50:20 +08:00
感觉 go/rust 更能考验一个 coder 的代码组织能力和思考能力
一个不小心就一大坨冗余代码。再一看标准库的各种封装。io 、net 等接口的配合就想说鹅妹嘤。 |
46
foursevenlove 2022-05-10 09:12:30 +08:00
做 java 开发的现在转向 go ,感觉除了少了一些轮子但其他还是很爽的。
|
47
chengxiao 2022-05-10 09:45:39 +08:00
写其他语言的时候,有一种心理负担就是”这个方法用的对不对?这个方法性能怎么样“,但是到 Golang 这里就没这么多逼事,循环一把梭
|
48
Johnming 2022-05-10 10:58:42 +08:00
go 语言还挺好的,有点麻烦
|
49
ZeroDu 2022-05-10 11:30:48 +08:00
go 很多都要造轮子吧,可能是我的错觉
|
50
ikdata4 2022-05-10 15:47:23 +08:00
说的是接口吧,写网页还得是术业有专攻,一个语言可能什么都能干,但在一些方面可能就比不过其他语言了
|
51
Joker123456789 2022-05-10 18:17:07 +08:00
@Immortal 啥? 装 jdk 比装 go 编译器 慢很多很多? 你别骗我,我读书少。
编译速度? 启动速度? 那不是 spring 太大了导致的吗? 要不要换个 框架? 这个锅 java 不背。 |
52
Joker123456789 2022-05-10 18:18:13 +08:00
@kalista 相信我,一个 jar 就可以运行的感觉 是一模一样的。 jdk 是一次性安装,不麻烦的。 而且 linux 基本上自带 openjdk 。
|
53
Joker123456789 2022-05-10 18:19:17 +08:00
@chengxiao 这只能说,go 的规范少,你写 java 不管规范 也是一把梭。 语言的锅 , 规范的锅,框架的锅,你好像一点都分不清楚啊。
|
54
zhaoyihuaer 2022-05-10 18:21:50 +08:00
@Immortal 雀实 环境是真的方便
|
55
Immortal 2022-05-10 19:10:02 +08:00
@Joker123456789 #51
- " 装 jdk 比装 go 编译器" - 这个我没有理解 - "那不是 spring 太大了导致的吗? 要不要换个 框架? 这个锅 java 不背" - 确实是框架,但是现在我们所说的 java 多少能摆脱 spring,主流市场说 java 等于 spring 有点太过分,说个约等于我觉得也没很离谱 |
56
mmdsun 2022-05-10 19:13:33 +08:00 via iPhone
我们以前花大力气把一项目从 Java 迁移 go ,结果代码多了,时间成本多了,性能只比老项目阻塞 Servlet 那种快。和新项目 spring webflux,vert.X ,netty 那种的反应式项目比相差无几,有时 go 还不如。 个人观点:go 比较适合大厂造轮子,写底层中间件,不适合写业务。唯一 go 优点是云原生这块领先 Java 。 但要是云原生过渡,我估计会选 asp net core,java 程序员好上手。
|
58
SorcererXW 2022-05-10 23:27:07 +08:00
@Joker123456789 比生态就要绑定 Spring ,比轻量又甩锅给框架,这不是双标吗
|
59
Immortal 2022-05-11 10:02:41 +08:00
@ojh #57
因为没有完全相同功能的项目来对比两者 你可以参考下国内知乎从 python => go 重构后的结果,随手搜的文章 https://www.infoq.cn/article/gjmlvcxl*r3jmj26jhbf 本来想找下以前 uber 的一个相关 blog,一时没找到.uber 也是个重度使用 golang 的公司,而且技术输出做的不错,可以关注下 综合来说 golang 写业务并没有什么优势,中规中矩. 网络数据 /协议处理,基建应用上才是发挥最大能力的地方. |
62
LDa 2022-05-11 17:47:41 +08:00
不懂就问 Go 写业务代码的爽点在哪里?
|
63
YUyu101 2022-05-11 18:47:10 +08:00
go 能一把梭说明业务不复杂,业务不复杂我连后端都不想写,什么 spring rest crud 还要写实体我都嫌麻烦,直接 graphql 、postgrest 套上完事,前端爽的飞起,数据库就是实体。
|
64
B1acKy1in 2022-05-11 19:14:04 +08:00
@roundgis 个人没有用 rust 去做过 web 开发,没有这方面的感受,不过用来写一些计算功能是真的爽。原同事之前安利过 rust 的 wasm ,还没有尝试
|
65
349865361 2022-05-19 10:50:25 +08:00
php 转 go 1 天入门 2 天开写 1 个月成功搞定一个项目 目前开发效率和 php 一样 感觉啥语言都大同小异 有方便的地方也有麻烦的地方 平均下来差不多 终于不用再担心 php 的协程扩展难用的问题了 性能高一大截
|