粗大事了:花两天时间学习了 Go 语言,发现比 Node.js 高不知多少去了

2016-04-03 16:19:20 +08:00
 xhowhy

先说感受到的先进性:

  1. 语法非常简洁,有种在学 C 语言的感觉,学习过程觉得很轻松,没有太陡峭的曲线,但语言也完全够用
  2. 自带工具就非常强大,而且各 IDE 和 Editor 都能集成,开发工具完全不是问题
    • go get = git clone + go install ,从 github 上直接 clone 下源码,编译出 .a 包文件和安装 bin 到 $GOPATH ,就可以本地任意地方使用了。反观 npm ,相信很多人不知道 NODE_PATH 的存在。
    • gofmt 代码风格统一,码农们再也不用为空格与 Tab 争吵了
    • go test 支持 benchmarks 和覆盖率测试
    • godoc 查看文档的工具。支持本地执行 godoc -http=:8080 后就能在浏览器中访问 golang.org 的本地 copy 版,对被墙的同学是个不错的选择
  3. 支持 Github ( Gitlab 等也可以)远程包,不需要发布到类似 npm 那样的地方
  4. 并发用协程和 channel 非常容易写,业务逻辑中可以尽量避免回调
  5. 部署非常简单,可以运行二进制文件,也可以通过 go get 来安装 bin ,运维起来非常方便
  6. API 稳定,据说从发布到现在语法基本没变,只是 Go 内部做了改进和优化
  7. 本人还用 Swift 写过 iOS ,发现 Swift 似乎是从 Go 身上学了不少东西。。

劣势:

  1. G...FF..WWW ,想下个 pkg 安装文件非常困难,最后是通过 brew 下载的
  2. 国内资料少(这么简单的语言,似乎也不需要什么资料)
  3. 社区小不如 npm ,国内想找个工作更是困难

不确定性:

  1. 性能与 Java 比如何,相当于什么水平

综上所述,感觉 Go 确实是一个目前比较理想的开发工具,大家一起讨论讨论,人生苦短,为何不用 go ?

53662 次点击
所在节点    Node.js
197 条回复
xhowhy
2016-04-03 17:27:55 +08:00
@aszxqw
依赖包的源码要不要一起提交到 git 上的问题,其实 cocoapods 也有碰到过:[https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control]( https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control)
至今也是木有结论。

@raincious
另外如果不用 URL ,就不是就意味着需要一个中心节点来记录 alias?
xhowhy
2016-04-03 17:28:14 +08:00
@quix 当我是个标题党吧
rrfeng
2016-04-03 17:28:44 +08:00
不是说中国是世界上 go 最浪的地区么。

别的不知道,反正运维层面上新出的项目基本上都是 go 的了……
jsyangwenjie
2016-04-03 17:30:54 +08:00
感觉你在黑 golang 。。。
xhowhy
2016-04-03 17:31:15 +08:00
@Nixus php 是世界上最好的语言。。我也曾痴迷于它。但现在似乎不是主流了,爱折腾所以写起来比较没动力。
fway
2016-04-03 17:32:47 +08:00
@raincious 这个 " KB gz  "  指的是什么? 文件大小还是内存占用?
dphdjy
2016-04-03 17:33:36 +08:00
t 大都没完全离开 nodejs 。。。
cc7756789
2016-04-03 17:34:33 +08:00
其他的暂且不评论,标准库代码的质量真心好,当然和 Go 语法的简洁有一定关系。
xjp
2016-04-03 17:35:05 +08:00
@quix 同意 +1
xhowhy
2016-04-03 17:35:19 +08:00
@jsyangwenjie 其实俺有三年的 node.js 应用开发经验,我用 node.js 开发网站每天承接上千万的流量,用 node.js 开发的前端开发工具也是部门 50+人的团队都在用。。就是这两天学了点皮毛 Go 之后,发现这东西确有可取之处,想和大家讨论一下,让大家都了解了解嘛
xhowhy
2016-04-03 17:36:24 +08:00
@dphdjy 你们 t 大早就不要你了。。 koa 早就不是他维护了
aszxqw
2016-04-03 17:40:03 +08:00
@xhowhy 我就希望 golang 能出一个模仿 npm 的包管理工具,但是一直等等等都没有等到。
orvice
2016-04-03 17:40:23 +08:00
go get 包管理某些地方是优势吧,然而实际上用起来,还是很多不方便的,虽然第三方有办法解决,但是作为处女座,表示真的还不如 Google 搞个中心和的包管理。
abscon
2016-04-03 17:42:05 +08:00
@xhowhy 说 C 语言的语法全世界最简洁, LISP 笑了
SlipStupig
2016-04-03 17:43:33 +08:00
我这里有 ss 的代理, 128.199.98.86 : 12306 aes-256-cfb pwd : test123sS ,祝愿楼主早日学成
xhowhy
2016-04-03 17:44:12 +08:00
@orvice 去中心化应该是 google 的思路不会变了。。
把依赖的包源码一并提交到仓库是否更符合工程化的开发?因为切 tag 看老代码的时候不用再 install 依赖
dphdjy
2016-04-03 17:44:17 +08:00
@xhowhy 没说维护啊,只是说依然用到 nodejs
抛开语言优势瞎折腾的问题毫无意义
orvice
2016-04-03 17:44:18 +08:00
@ivenlee import 未使用的包,和 var 了未使用变量编译不过。。。
表示刚刚从 动态语言过来写也是这种感觉 233

不过现在习惯了...
xhowhy
2016-04-03 17:45:07 +08:00
@SlipStupig 谢谢 代理我有 我的意思是阻碍了 Go 在国内的推广
orvice
2016-04-03 17:47:39 +08:00
@xhowhy 用过各种包管理, go 的 vendor 特性反正我是不怎么喜欢......虽然貌似解决可以版本的问题,但是感觉真的还不如做个中心化的包管理来的好....

以上建立在强迫症之上...

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

https://www.v2ex.com/t/268296

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

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

© 2021 V2EX