golang 是代替 java 的,因为两个都是 GC 语言 java 是 c++替代者第一代 golang 是 c++替代者第二代 (rust 无有 GC 所以真正进入了 linux windows kernel 而 golang 不能进入)
做项目选择 golang 而不是 java 的理由? 并发来说,估计 java 的库也不错 选择 go 唯一的理由是没有 vm 所以节省内存?
104
lyz1990 288 天前 1
很有道理
我选 PHP |
105
Makabaka01 287 天前
从招聘角度来说,Go 招人更方便,不管什么语言都能拉来写 Go ,Go 生态没有 Java 那种一个项目用一万个第三方库的习惯。
Java 现在的生态太好了,但是很多东西做的都很重,绝大多数项目根本用不到那么多东西,然后又喜欢用,搞得心智负担很重。如果招聘没有学习过 Java 这些库的人来做项目,估计得懵逼很久很久,勉强写起来心智负担也很重,会很难受。 虽然 Go 这边说白了就是有点糙,但奈何大部分项目其实都是一个赛一个糙,搞那么精细就是自找麻烦。 |
106
kingcanfish 280 天前
不想看到 xml 那屎片一样的东西,就这么简单
|
107
xiaocaiji111 280 天前
看一帮评论都是没做过大项目的半吊子吧,语气还那么冲。
|
111
slideclick OP @jim9606 接着您说的 goproxy 请教两个问题 1)golang 只能源码共享库么? 能不能像 java 的 jar 一样发布二进制共享库被人使用 2) 墙内访问 github 很麻烦,这个解决起来轻松么?是不是类似 pip 等等需要一个国内镜像?
|
112
slideclick OP |
113
gamexg 271 天前
@slideclick #112
go 可以编译成静态库或动态库(dll),允许其它语言程序使用. 也可以加载其他语言编译出来的 dll. 但是之前不能加载多个 golang 的 dll,因为多个 dll 的 go 运行时会冲突,现在不知道解决了没. 另外还有个 Go Plugin , 应该类似于 jar 我没用过. go 有国内镜像 ( https://goproxy.cn/ https://goproxy.io/zh/ ), 设置个环境变量 go 就会从镜像代替 github 下载源码. |
114
gamexg 271 天前
@ZZ74 #40 go 的 几 M 大小运行时相对于换成 c 开发成本来讲,是可以接受的.
我没用 java 开发过 windows/linux 平台, 但是看资料,运行时需要几十 M,相对于软件体积有点大. |
116
jim9606 271 天前
@slideclick
关于二进制包,曾经支持的,现在不支持了,因为较难维持 ABI 稳定。 https://github.com/golang/go/issues/28152 @gamexg 说的那种是 interprop ,这种其实用在任意语言 runtime 之间的互操作,runtime 是各自独立的,通信只能用 C 风格接口,通常也不能称作二进制库。 |
117
gamexg 271 天前
@jim9606 #116 官方的 Go Plugin 倒是类似于其它语言的二进制包,能够提供 go 语言的函数导出 ,但是缺点是必须是完全一致的编译器编译的,不然可能会崩掉,而且不支持 windows. 我记得也只能加载,不允许卸载. 我没用过这个, 看起来不太符合二进制发布需求.
另外还有个第三方实现的 https://github.com/hashicorp/go-plugin ,但是这个其实不是 dll 那种加载到同一进程空间的方式,而是将库作为独立程序运行,然后 grpc 通信. 但是这个封装的挺好, 用起来和单个程序内区别不大,甚至支持参数传递接口. 不过我也没实际在项目中用过. |
118
lysShub 270 天前
@slideclick 1 ,你说的就是动态库,当然可以 2. 不是有 goproxy, 有几个都很可靠关键是免费的
|
119
slideclick OP @gamexg #113 谢谢, 国内镜像 不需要开发者源码级别改代码么
比如 import github.com/auther/libname 这个 github.com 在代码里面不改动,可以透明工作?感谢 |
120
gamexg 268 天前
@slideclick #119
不需要代码/项目做任何修改,只要设置环境变量, go 会自动使用环境变量指定的源码镜像. 而且镜像支持不同站点的源码,不用管库的源码是在 github / gitlab 还是 google ,只要是公开的 git 库都可以自动处理. |
121
nooneanyone 217 天前
为啥老局限在后端赛道来比啊。
cpp 本来就不在这个赛道竞争。 |
122
yb2313 120 天前
@slideclick #11 看到了, java 写多了确实会伤到什么地方
|
123
higker 73 天前
@cstj0505 赞成,有本事自己设计一门编程语言;不过我建议如果要设计编程语言可以考虑基于 JVM ,基于 JVM 设计编程语言好处是直接开发 AST 前端转换器,编译为字节码就可以,其他工作都交给 JVM 去做。Java 这么语言为个人感觉最大好处就是自定义,JVM 可以自定义,GC 也可以自定义,而且 JVM 生态也不错。
|
124
higker 73 天前
@dcsuibian 写多了确实有这种感觉,graalvm.org 也不错
|
125
joseph1994 16 天前
@totoro52 你对 go module 特性一知半解就搁这质疑...,谁告诉你都要从 github 拉库
|
126
totoro52 23 小时 52 分钟前
@joseph1994 那你的意思是不用从 github 拉了是吧
|