之前一直用的 java 写 crud ,最近有项目要用 Go 写,然后我就用了 Go 尝试写了一个 web 程序
但是体验下来,其实开发体验并不怎么高,比如脚手架,虽然有很多现成的,但是我更希望有一种规范或者 interface ,就算是 java 多年前的纯 spring+servlet ,也会提供各种 interface 去规范。这样起码可以保证接手或者同时维护的人能够更快的理解和上手。
开发体验类似写命令行程序,从 main 函数一点点往上加功能,写了一天,看了一天文档,我才把 gin+gorm+zap+viper 配置好,花时间去组合。
crud 方面就不说了,还是比较原始,或者有什么奇淫巧计我不知道的。
上面说的几点只是我简单用了几天,感知比较大的几点。
其实上面说的同样可以放在其他语言上,我也不是对 Go 有什么偏见,而是觉得 GO 这么火,越来越多的互联网公司用来支撑业务,照理来说生态和体验跟其他小众语言不是一个量级的了,但是用起来还是有些失望。
104
dcsuibian 2022-01-21 18:55:04 +08:00
没有用过 go ,稍微尝试过 nodejs 和 python 的 web 框架。
真的不能和 java 的打,感觉楼主被喷是因为指向性太强了,干脆说“在场的各位都是垃圾”算了。 |
105
pigspy 2022-01-21 19:06:04 +08:00
其实我觉得 typescript 的 nestjs 这种框架就不错
当然也可能是我 spring 写多了 |
106
javaisthebest 2022-01-21 19:09:05 +08:00 2
go 所谓的杀手级应用也就 k8s 了
谷歌都不怎么用的语言了 也就国内再捧臭脚 |
107
xsen 2022-01-21 19:16:01 +08:00
@monkeyWie #19 说的好像我没用过 java sprnigboot 一样。按照我们这边的实践,go 写业务除了要造轮子之外,没有多难受。恰恰是毕业 1-2 年的同事,前后维护过 java 与 go 的项目,都说 java 用起来难受
|
108
james122333 2022-01-21 19:16:38 +08:00
楼主只是没有一个大一统框架觉得不舒服
觉得没有规范也不想建立规范 接手的人也就几个 自己建立是可行的 当然可能在这公司写的爽的一逼 在其它的公司就不能 但这状况即便你 java spring 也是一样 有规范不代表不能在业务代码或者小功能上用神奇技巧或者埋雷 一样有机会觉得不舒服 开源本来就没有一定要有一堆人觉得好的生态 生态好码农多 内卷也多 未必就好 |
109
leeg810312 2022-01-21 19:21:12 +08:00 3
go 写中间件是很不错,但写其他就很不适用,可是 go 社区的某种宗教式狂热已经影响到很多不是很懂行的技术决策者,让开发团队用 go 写其他的!!!就差说 go 是世界上最好的编程语言。
写 web 还是得用 web 开发生态比较好得,我们公司用 .net Core/Java 2 个平台,可以随意切换到其中之一。 |
110
x940727 2022-01-21 19:23:24 +08:00
@xsen [除了要造轮子之外,没有多难受。] 这句话真是骚到没话说,你一个 19 寸的轮子(有文档,质量不低),我一个 18 寸的轮子(有文档,质量一般),还有一个同事是个备胎(无文档,代码各种奇淫技巧),还有个 15 寸的轮子是前同事造的(无文档,代码质量一般),目前正常,不确定未来是否正常,你觉得这不难受吗?当然,我见过很多 Gopher 都不觉得难受,毕竟有成就感,自己造轮子多好啊。
|
111
chenxytw 2022-01-21 19:24:13 +08:00
确实语言无关,你这是离开了框架定势就不会写代码了....
|
112
x940727 2022-01-21 19:27:14 +08:00 2
@xsen IT 界或者说程序员界,最伟大的东西就是开源,就是无数优质的轮子积累,可以让开发人员专心的去做自己想做的事情,但是目前来看 Gopher 大多数都没有这种思想,反而是你一个轮子,我一个轮子,这样不单单造成了人力资源的损失,更大的是造成了社区的极端分裂。
|
113
james122333 2022-01-21 19:32:41 +08:00
|
114
adoal 2022-01-21 19:34:48 +08:00 via iPhone
你领导让你们用 go 写进销存,那就怼你领导或者换工作呗。
|
115
monkeyWie 2022-01-21 19:37:39 +08:00
@xsen #107 牛啊,写个业务还要造轮子,应该是大厂程序员吧,我们小公司用 springboot 都是开箱即用太没牌面了
|
116
james122333 2022-01-21 19:39:03 +08:00
|
117
littlewing 2022-01-21 19:46:50 +08:00
web 本来就不是 go 的优势
|
118
tqccc 2022-01-21 19:47:17 +08:00 via Android
丢那马,顶硬上
|
119
xsen 2022-01-21 19:56:12 +08:00
@x940727 #110 不知道是我说的有问题,还是你理解有偏差;我说除了要造轮子——那是因为相对 Java 来说,确实是缺不少成熟的企业应用的中间件;某些情况下没有合适的就要自己造轮子
要造轮子的意思,不是所有都要造轮子 |
121
xsen 2022-01-21 19:59:19 +08:00
但是相对 Go 带来的好的地方,要造轮子是属于可以接受的;选择某个语言或技术栈,都是要综合考量的
起码对我们来说,要造轮子属于可以接受的 个人就是从 C/C++/Java ( Springboot-微服务那套)一路过来的,只能说最终选择了 go 这个方向;而不是继续停留在 Java/Springboot 那套 |
122
xsen 2022-01-21 20:07:52 +08:00
而且 OP 本身对比就有问题,你拿 gin+gorm+zap+viper 与 springboot 这样的大一统框架做对别
若可以,不妨这样对比, Java:netty + mybatis + log4j +*, Go:gin+gorm+zap+* Go 现在相对比较正确的姿势是,找相对成熟的、主流的 go 的微服务框架(相对大一统的框架)来做比较 比如,我们目前用的是好未来的 go-zero ,做法基本就是定义 api+表,然后通过工具生成 model 与接口的代码 |
123
jsjjdzg 2022-01-21 23:23:12 +08:00
说白了就是一个语言还没有搞成规范化,以后 Go 规范化了不知道会不会打一堆人的脸。。。
|
124
tt0411 2022-01-21 23:25:24 +08:00
有一说一, Go 写 Web 系统是真不行, 和框架无关, 主要还是语言特性 (比如缺少异常)
|
125
utodea 2022-01-21 23:35:04 +08:00 1
Java/Go/Node/Python 都写过生产环境的 web 类产品,你感觉没错。
说难听点,说 Go 的 web 开发体验比 Spring 体系好的人(特别是多人体系的大项目),要么是他们没脑子且自负,要么是 Spring 社区过去整整 19 年里都在摸鱼。 |
126
PDX 2022-01-21 23:39:22 +08:00 via iPhone 1
用过很多种语言,最后发现还是 java 用着最安心。
|
128
xinzhanghello 2022-01-22 00:05:17 +08:00
你可以了解下.net 开发学习起来是真的快 。go 不适合写业务
|
130
wdhwg001 2022-01-22 00:27:15 +08:00 via iPhone 2
c#是真的惨,到了第二页才有人提起它,甚至第一页的共识都是 spring 孤独求败,对比对象从起初的 go 到 php 到 js 到 py 再到 ruby ,最后竟只有一个老哥提起 .net 。
我就在想,你们那些用过各种语言依旧觉得 spring 孤独求败的人,要不要试着用.net mvc 写一下 crud ?至少我是觉得 c#的 linq 过了这么多年依旧完全没有对手。 顺便…甚至 php 都有 PSR 来约束和规范化 web 开发,大道至简的 go 呢。一把梭要是真的这么灵,也不会有 psr 这种东西出现了,毕竟 php 比 go 一把梭多了。 |
133
ajaxfunction 2022-01-22 00:44:32 +08:00
恕我直言,在 web 开发领域,特别是 curd 方面,所有框架语言和 php 都是辣鸡,没有例外。
|
134
lesismal 2022-01-22 01:59:03 +08:00 1
对性能没要求的开发者多数都觉得体验倒退。
所以隔三差五就会看到这种需求只有几天一次的小白吐槽正在天天七次的猛男的引战帖。 |
136
Samuelcc 2022-01-22 02:58:52 +08:00 via Android 2
op 说的都是自己的体验,也确实是事实不是么?
部分 Goer 是否过于狂热了。。 我的喜好来说业务开发用 Java ,底层开发用 Rust ,Go 的应用场景比较少,语言特性也不太喜欢。在并发上可能编写起来对比 Java 有优势,总体性能还真未必。 看过 Influxdb 的代码,用 go 写一些文件和缓存操作确实挺香,不过即便如此,由于缺少泛型也用工具生成了大量的重复代码。 |
137
clouddd 2022-01-22 07:15:57 +08:00 via iPhone
什么 Go 啊 Node 啊 写的不好确实容易写成💩山 我能理解楼主的苦
|
138
charlie21 2022-01-22 07:44:02 +08:00 1
golang 还没到那个层次。预言之中会有一个大英雄,一个盖世英雄,我知道有一天他会身披金甲圣衣,脚踏七彩祥云,在一个万众瞩目的场合来将 golang 宇宙发展成 java 宇宙,就像 Taylor Otwell 为 php 宇宙带来了 laravel 一样
web 开发就这么点事情 高性能的部分都做了,做个(像 laravel 一样,有 ORM ,有 Router ,有 composer 这样完备的解耦的模块管理,有 artisan 这样的命令行工具可以用来做代码生成器,有自己的或者第三方的模板语言。有成熟庞大的社区和用户数量支撑)还困难吗? 在功能方面 早期的 laravel 只能发送 zip 文档,但这并不阻碍在沟通方面 php 作为业务语言已经用很不方便沟通的方式堆了那么多 CRUD 了 |
139
cassyfar 2022-01-22 08:53:49 +08:00
能力差怨语言烂。话说没 spring 你也写不来 java 了吧?
|
140
dream4ever 2022-01-22 08:58:26 +08:00 via iPhone
@gouflv 后来是怎么解决这个问题的?换框架么?
|
141
drackzy 2022-01-22 09:13:13 +08:00
不是体验的问题,是 go 不像 java 那样内卷,老人少。
|
142
zhennann 2022-01-22 09:28:54 +08:00
也就很是好奇,都说开发业务系统什么的,也就没说业务系统要有工作流需求的。如果业务系统都是些增删改查+角色权限的功能,那么大多数语言的开发框架不都跟玩似的,有什么好比较的呢?那么,回到工作流引擎的诉求,java 有 activiti ,node 有 cabloy ,而这么多年过去了,go 、php 、python 、ruby 有什么呢?
|
143
winglight2016 2022-01-22 09:33:58 +08:00
go 的确不适合用来做 web crud ,就我看来,在区块链开发上 go 倒是有点一统江湖的意思了,毕竟 geth 是大部分二三代应用的基础了
|
144
goalidea 2022-01-22 09:40:28 +08:00
存在即合理,萝卜青菜各有所爱!
|
145
ZeroDu 2022-01-22 09:42:17 +08:00
go 写业务 crud 确实难受,也没有相关整套框架来搞,是差点意思。写各种中间件、工具类的会比较好吧
|
146
james122333 2022-01-22 09:45:02 +08:00
@tt0411
go 是有异常处理的 只是要封装 例如我就封装成类似 Error.Catch(func() { Error.Throw("error!", func(err error) { fmt.Println(err.Error()) }) }) 捕获错误并根据 Throw 指定的 func 执行 写过 java try catch 会知道 try 内新的变量在外面是取得不到的 这特性如同函数内区域变量 不要动不动就说语言不行 先看一下自己是否行 |
147
zjsxwc 2022-01-22 09:47:09 +08:00 1
|
148
JDog 2022-01-22 09:47:39 +08:00
国内 php 不景气,都转写 golang 了,说话的无非都是利益相关。
|
149
zjsxwc 2022-01-22 09:50:43 +08:00
|
150
sealingpp 2022-01-22 09:53:42 +08:00
有时候是这样子的,你习惯了一门语言给你带来的便利性,换了一种语言就觉得不方便,每个语言诞生的开发的思维流程不一样,不代表他不好,你应该尝试去理解一下其中的道理,而不是总是希望所有东西都跟自己熟悉或者习惯的一样,一来就觉得非常顺手
|
151
flood 2022-01-22 09:55:58 +08:00 1
大道至简......陋
|
152
RuLaiFo 2022-01-22 09:56:28 +08:00 via Android
占 Java 一票
|
153
debuggerx 2022-01-22 09:58:04 +08:00 via Android 1
认同一些人说的,若是没有 spring 等框架,java 开发 web 也是垃圾,但是 go 开发 web 业务,却是连框架都救不了它的,就算有 spring 同等规模、积累、流行度的框架也是一样,这是语言特性决定的
|
154
james122333 2022-01-22 10:13:52 +08:00
|
155
shawnwang340 2022-01-22 10:22:49 +08:00
我是因为公司新项目需要开始搞 go 的,初上手的时候也是感觉哪哪都不习惯,每次写的时候总想着 java 那一套,现在我再写 go 的时候都极力忘记自己之前是写 java 的,哈哈哈,我感觉还是一个思维定势的问题吧,多写写就好了。
|
156
micean 2022-01-22 10:25:49 +08:00 1
|
157
abcbuzhiming 2022-01-22 10:29:22 +08:00 2
@cassyfar 框架存在的意义,就是方便开发。否则程序界孜孜不倦的探索各种模式,各种模型,各种框架,是为了什么?动不动就说别人“能力差怪语言”的,那你干脆倒退回去用纸带打孔机开发好了,我绝对承认你能力超强,我做不到。
编程发展了这么久,一个大方向是没变的,就是想办法把更多的人拉进程序员的行列,哪怕他们能力比起前人来说差。编程整体是变的容易而不是变的困难。 @liuxu go 还是个偏年轻的语言,生态圈还在探索中,不如成熟生态圈,这有什么不可以说的?说两句就是“带节奏?人差怪语言?”。那我作为一个 javaer 天天喷 java 语言特性陈旧,主流生态圈膨胀 spring 快赶上当年 Sun 那套傻大黑粗,算什么?语言不能比较?程序员不准抱怨?抱怨就是带节奏? |
158
zhennann 2022-01-22 10:29:48 +08:00
@zjsxwc 可以看一下 CabloyJS 的工作流引擎文档,就知道差距在哪里了: https://cabloy.com/zh-cn/articles/flow-introduce.html
|
159
iyaozhen 2022-01-22 10:38:39 +08:00
现在写 go 就像之前写 php 一样
期待大统一框架吧 当然你要用 java 的惯性写 go 会很难受 |
160
james122333 2022-01-22 10:38:54 +08:00
@abcbuzhiming
编程语言发展的到现在花的时间是更多 过度堆叠减少某些困难又增加了某些困难 然后出来的东西是增加的 如果没有网络资源 原作者回答 很多人都用不好 自己写的自己知道 如果写的不好是人的问题没错 就算用框架照样可以给你一驼 go 目前状况挺好的 |
161
24bit 2022-01-22 10:40:08 +08:00
Java 运行在虚拟机上,框架利用 JVM 的特性可以将很多的编码成本抽象出来,一个注解就能让你省去很多开发成本。同时支持泛型,语言本身的表达能力也会强很多。
Golang 虽然有 runtime ,但是运行时能够做的操作很有限,性能也差,泛型还要 2 月 1.18 才有,框架能做的事就很有限了。代码复用要么写多份,要么 interface{} 满天飞,要么代码生成。比如 GORM 一堆反射 + interface{} 带来的类型信息丢失就很烦。现在有了 GORM GEN 会好一些,但还是靠的代码生成。 Golang 的优势在于简单,新人几天就可以上手,同时先天异步,打包出来的容器镜像小,启动速度快,天然适配云生态。 |
162
beexu 2022-01-22 10:51:14 +08:00
总结:v 站 gopher > javaer
|
163
abcbuzhiming 2022-01-22 10:52:17 +08:00
@james122333
我从不否认程序员的水平有高有底。但是编程半个多世纪的发展来看,其发展方向就是把更多的人拉进编程界——哪怕看上去他们能力不行(尤其是和前人比起来的时候)。 编程并不是少数 [聪明人] 的玩物。然而现在有少数人觉得,因为 [因为我可以,而你不行,所以你不准抱怨] 。然而只要编程的大方向是像我说的那样:拉更多更“一般水平”的人进来编程。那么抱怨只会多,不会少,听不进抱怨是少数 [聪明人] 自己的问题,指责这些一般水平的人“水平差怪语言”的 [聪明人] ,就像历史车轮前的螳螂。 最后,在应用层领域,所有的语言,都会趋同演化。所以只要给足够的时间,就会发现这些语言在处理同一类型问题上会采用类似的方法。 go 的发展方向,不由我们这些人决定,只取决 google 怎么想,如果它想进入业务领域,我认为它大概率也会变的和那些在业务领域活跃的语言一样,背上同样的包袱。顺便说一下,java 的生态圈历史包袱已经很重了,spring 击败了曾经的 JavaEE ,但是它现在越来越像一个新的恶龙了。 |
164
james122333 2022-01-22 10:57:46 +08:00
@24bit
反射在 go 下确实不好 但保存下其实也还好 至于类型丢失 java 也是一样情况 呼叫共同函数你需要 type interface 不然 Object 还是 Object 然后范型问题其实 cast 一下也还可以 并没有那么急需 |
165
james122333 2022-01-22 11:11:33 +08:00
@abcbuzhiming
不是所有语言都是这种发展方向 而且以打工仔来说更多人就是更容易内卷 这不是指聪明人而是愿意自己造轮子的(理性造轮子) 造不造轮子与聪明没有直接相关 当然聪明造的轮子可能更好 现在就一堆只想吃外食不想自己煮的 golang 应该没讲是为了你们需求而生 |
166
abcbuzhiming 2022-01-22 11:25:45 +08:00
@james122333
语言的发展方向要看语言背后的那波人的想法。其实我可以说 golang 的创始人恐怕压根就不想用 go 去搞业务领域,不然为啥加个泛型要折腾这么久呢,明显是 google 看上了这块肉,逼的。 不想自己煮,天天抱怨没轮子是“普通人”的常态,只要编程界还是试图让更多的“普通人”进来编程,那这就是历史趋势。 造不造轮子确实与聪明没有直接关系,我的 [聪明] 是加引号的,我相信你应该明白我指的是什么。 对“普通人”的抱怨,听听没坏处,可以不理,但是喊打喊杀就很无聊,世界永远是普通人占多数 |
167
hqweay 2022-01-22 11:43:39 +08:00 via iPhone 1
看到这篇帖子加深了我的偏见,现在网上想讨论点问题、表达点东西太难了。即便表达的人加上了各种限定词,总会有凑热闹的观众、只读到几个关键词的观众、不关心内容想发泄上网为了放松的观众……毫无负担地留下一些话就走了,表达的人为了阐释清楚,为了不让后面的人误解,总得一遍又一遍的解释,通过不断的否定把话题拉回正题…
|
168
james122333 2022-01-22 11:48:03 +08:00
@abcbuzhiming
是常态但抱怨也要抱怨在点上 不然不就是一样大家说的喷子 说"是自己的问题"未必是指自己是聪明人 用聪明人调侃就过了 业界如果选 go 那自然是要自己付责 当然喊打喊杀也过了 但可以体会他们的心情 先做功课再来喷应该就不会那么火爆 |
169
iseki 2022-01-22 12:04:20 +08:00 via Android 3
go 缺少 Java 和其他语言上那种大一统框架很大程度上是由于 go 本身的简陋导致的。没有泛型,没有异常,没有现代的 lambda 就注定它是一个 C 风格的语言;本来有的协程 ID 还被刻意隐藏(设计问题),go 很难弄出 Java 上的 ThreadLocal 那种东西,很多东西的实现必然变得复杂…
总而言之 go 是一个完全不适合写业务的语言,缺少的特性将使你不得不把大量精力放在业务逻辑之外的部分…而且很大概率一个项目一套“标准库”,甚至一个人一套“标准库”… |
170
iseki 2022-01-22 12:06:51 +08:00 via Android
任何语言都有其特定场景下的优势,比如最近用 go 写纯 cli 的客户端就觉得确实方便…
但是我真想不明白为什么总有人逼着我用 go 写 Web |
171
iseki 2022-01-22 12:10:46 +08:00 via Android
@lesismal 大部分人写 Web ,对性能其实没这么高要求,需要性能的 javaer 自然会去用 vertx 之流…环境逼着大家用 C 干 php 的活才是越来越爆炸的原因吧。
|
172
mengyx 2022-01-22 12:25:59 +08:00
更喜欢 Go ,是因为它是重工程实践的语言。常用功能标准库中都有很优秀的实现;代码逻辑清清楚楚,没有太多隐含逻辑;如同测试、优化等方面,官方有大量的工具可用
|
173
iseki 2022-01-22 12:31:52 +08:00 via Android
另外我实在不能理解 go 出于什么考虑,让大家自己造 maxInt minInt 这样的东西…
|
174
james122333 2022-01-22 12:40:34 +08:00
|
175
iseki 2022-01-22 12:46:27 +08:00 via Android
@james122333 抱歉,你的评论没标点符号我也只能根据感觉去断句了。
go 有 lambda 和闭包,但从语法角度上说,go 那个充其量算个匿名函数,和其他语言中的 lambda 相比差距还是有点大的。 异常…如果是指 panic 和 recover 你自己也说了,得是 func ,而且由于 go 本身不提供良好的异常标准库(现在那个 errors 没多少人想用吧)导致不得不依赖三方实现。 至于 ThreadLocal ,我只能说很多框架特性需要这个,但是 go 从设计上确实不推崇这个,显式传递上下文也不是不能用,算是个人喜好吧 |
176
EscYezi 2022-01-22 12:47:54 +08:00 via iPhone
@banmuyutian less feature,more code(doge
|
177
james122333 2022-01-22 12:52:57 +08:00
|
178
iseki 2022-01-22 12:54:46 +08:00 via Android
@james122333 emmm 你不觉得“用 go 也不一定非得用它的标准库 如果你想可以自己弄一套出来”这事一点都不工程吗。标准库为什么叫标准库呢,这也是我上条里标准库加引号的原因吧。
|
179
james122333 2022-01-22 13:04:51 +08:00
|
180
windseekerjack 2022-01-22 13:26:51 +08:00
不是很清楚你是在什么场景写 go ,按照我了解的,go 的技术栈一般是基于 grpc+gateway 提供 web 服务,接口定义交给 proto ,业务按照 handel/servicer/model 分开写,常用工具丢 utils 包统一维护,hook 来实现 aop ,不是很懂你们的痛点在哪?
@iseki go 简洁不代表简陋,B 站也公开了自己的架构,自己去参考,有好的实现不去了解,自己立个靶子打 |
182
windseekerjack 2022-01-22 13:37:53 +08:00
@binbinyouliiii 建议多看看拿 go 做主业务的这些公司的框架组件,基本都开源了或分享了架构设计,你列出来的这些都和语言没半毛钱关系,没有 spring ,java 裸写 web 服务的体验就很好?实际上 web 开发对语言没什么要求,java/python/go/php 写起来都各有优点,不要写个 demo 就对一个语言评论来评论去。
|
183
darknoll 2022-01-22 14:16:08 +08:00
我个人的原则是面对工资编程,钱给够,啥语言不能干啊。
扯什么语言好不好的,要么不会用,要么不成熟。 |
184
encro 2022-01-22 14:39:43 +08:00 1
当你了解 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 |
185
Joker123456789 2022-01-22 16:06:38 +08:00
go 开发 web 可以试一下这个框架,比较接近 java 的习惯。https://beeruscc.com
|
186
vophan1ee 2022-01-22 21:41:14 +08:00
看到这个帖子让我想起了很久以前看到 c 语言的用户喷使用 c++ 的人:动不动就问语言有没有这个,有没有那个
|
187
lesismal 2022-01-23 11:36:45 +08:00 1
@iseki #171
很多现象都是一个道理,类似劣币驱逐良币,金字塔结构,水平一般的人总是占据多数,所以一些不好的东西反倒因为用泵众多而更火,最典型的比如 nodejs 。 绝大多数喷 go 的人,都是只会 curd 的初级中级开发者,系统、架构、算法、结构、性能之类的都还没真正懂,稍微大点的项目、要求高点的项目都没做过,自己的技术职级和薪资还没达到高阶的水平比如百万,甚至 java 社区很多伪架构师(比如阿里 p7 甚至 p8 ),只会根据自己多数情况靠 cv 就能解决的业务代码习惯来评价技术栈、喷都喷不到点子上——这也是你另一个帖子里为什么 gopher 反感别人喷,因为绝大多数都是乱喷。 |
188
ifhover 2022-01-23 13:43:02 +08:00
试试 goframe
|
189
agagega 2022-01-23 20:38:48 +08:00
@wdhwg001
说起来,我见过一个作用和 C# LINQ 相似但思路完全相反的东西,就是苹果的 NSPredicate:LINQ 是把 SQL 写成代码,这玩意是把代码写成 SQL ,脑洞贼大。 |
190
wdhwg001 2022-01-23 21:56:22 +08:00
|
191
gongquanlin 2022-01-23 22:19:01 +08:00
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 都能搞 都香得很好吗,各有各的优势 |
193
NeoZephyr 2022-01-24 10:42:11 +08:00
@windseekerjack b 站的代码,网上又不是没有,感觉真不咋滴
|
194
NeoZephyr 2022-01-24 10:44:02 +08:00
@leeg810312 “世界上最好的编程语言” >>> 好熟悉的声音!果然写 GO 的都是 PHP 转过去的吗
|
195
tt0411 2022-01-24 11:08:42 +08:00
不想在语言上争执太多, Go 有他的适用场景, 但是写过复杂 Web 应用的话如果用过其他语言 (包括但不限于 Java/PHP) 就知道 Go 有多不靠谱, 现在微服务架构让单个模块的代码层次很简单, 一定程度上缓解了 Go 的这方面毛病. 话说 Go 也开始考虑支持泛型了, 我记得我写 Go 那会, 官方似乎对泛型很不屑... 没准过个一两年 Go 也会支持异常的 hhh
|
196
windseekerjack 2022-01-24 11:10:58 +08:00
@NeoZephyr #191 不知道你看的是泄漏出来的源码还是开源的组件。代码和目录规范性,代码生成工具都不错,对新人友好,新入职的估计 1-2 天就能进入开发,除了全部业务放一个仓库外我没看出什么别的问题,不是很清楚你觉得不咋滴是哪些方面?
|
197
thtznet 2022-01-24 11:18:39 +08:00 1
很多年前写前端的人嫌 手动操作 DOM 太随意,BUG 到处飞,于是出现了 jQuery 库规范基础的操作,jQuery 写多了又觉得代码设计不够优雅,于是出现了框架将 DOM 操作封装隐藏起来,老外软件工程起步早,一来就意识到了问题核心,搞了个 Angular ,把前端衍化体系一下子快进到和后端一样,这时候国内的前端人刚刚脱离切图仔的标签,jQuery 还没捂熟哪见过这么体系化的技术,纷纷表示这玩意太复杂太重了,发展不开。寻了 N 久找到一个模仿并简化 Angular 的 Vue 框架, 就是它了,最适合国内的行情,带着点设计模式比 jQuery 高得不知道哪里去了,又比 Angular 简单啊,那么多代码堆一个组件里一把梭齐活,搞着搞着,就成了江湖。
|
198
NeoZephyr 2022-01-24 17:36:49 +08:00
@windseekerjack 代码和目录规范性不是基本的要求吗?至于 1-2 天是否能进入开发,这个变量影响太多了,不一定跟代码质量有关系。我觉得可读性一般,很多命名很离谱,封装性也不好,有很多重复的代码。有一些代码实现,感觉很奇怪,我接触到的一般也不会那么写
|
199
windseekerjack 2022-01-24 19:19:22 +08:00
@NeoZephyr #196 为什么关注代码质量,业务代码哪家公司都是一堆屎,更别说经手那么多人。关注项目结构,开源组件怎么引入工程,生成工具。
还有,我举例 b 站只想告诉楼主,不要随意写个 demo 就出来谈感受,楼主说的这些问题,b 站开源的 Kratos/或者其他开源组件都能快速解决,但是楼主没有想过去了解,讨论规范,spring 基于 servlet 规范,go 除了 fasthttp 都基于 net 包,这就不规范了?输出一堆情绪,拿楼主说的套一个新人写 java/c#有什么区别? |
200
xinQing 2022-01-28 16:40:47 +08:00
web 项目用 go 不是搞人心态么,事务处理起来不难受么。。interface{}、err 满天飞。
go 搞一些基础组件,网络中间件啥的挺好的。 |