粗大事了:花两天时间学习了 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 ?

54090 次点击
所在节点    Node.js
197 条回复
shierji
2016-04-03 16:23:37 +08:00
回答最后一个问题 因为人生苦短我用 python ! 哈哈
tracyone
2016-04-03 16:25:37 +08:00
为啥不是 go 比 javascript 高不知多少去?
xhowhy
2016-04-03 16:25:56 +08:00
Go 安装的时候需要手动配置 $GOPATH 和 $GOROOT ,在这种类似的地方,让开发者手动操作一下,反而有利于开发者理解整个体系, iOS 上的包管理工具 Carthage 似乎也是从中得到启发,才做了一个与 Cocospod 不一样的东西。
另外想想 npm 的多版本包管理机制,实在是宝宝心里苦,想想 node_modules 下各级子目录存在多个版本的相同模块,这样的代码运行到线上,是该多么心惊胆战的事情, node.js 搞 web 可能还是不太专业。。
xhowhy
2016-04-03 16:28:12 +08:00
@tracyone 我这里说的 go 是一个开发工具,功能上约等于 node.js + npm + ...一系列第三方模块
loading
2016-04-03 16:30:19 +08:00
go 没有 Eletron
xhowhy
2016-04-03 16:34:07 +08:00
@shierji 感觉 python 运维起来会挺苦的, pip setuptools easy_install …而且 GIL 存在也实现不了真正的多线程。。
timothyye
2016-04-03 16:35:42 +08:00
恭喜 lz 入坑……
xhowhy
2016-04-03 16:36:22 +08:00
@loading 嗯, Go 是服务端语言,暂时写不了客户端。。不过 electron 严格上来说不是 node.js 平台上独享的,毕竟还有 webkit 。
我自我纠正一下,这里只比较服务端编程,不 PK 其他领域。
xhowhy
2016-04-03 16:36:47 +08:00
@timothyye 入坑啥意思? Go 很坑还是咋地?
zonghua
2016-04-03 16:36:48 +08:00
@xhowhy 然而 python 就是运维用来编工具的。不支持动态 lian   jie   ku
21grams
2016-04-03 16:41:50 +08:00
谷歌自己都不用
for4
2016-04-03 16:45:03 +08:00
受不了 gofmt , 弃
pathletboy
2016-04-03 16:45:05 +08:00
@21grams 那是你没看到谷歌在用,其实后台用的非常多,应该仅次于 python ,当然,我也可以举个在用的例子, GAE 。国内厂商也大量在使用,只是都非常低调。
TangMonk
2016-04-03 16:47:52 +08:00
试试 elixir
aszxqw
2016-04-03 16:49:38 +08:00
nodejs 的包管理 npm 完爆 go get
RqPS6rhmP3Nyn3Tm
2016-04-03 16:50:08 +08:00
C 语法很简洁吗……真的吗……楼主你确定……
xhowhy
2016-04-03 16:50:35 +08:00
@21grams 在用的: https://golang.org/doc/faq#Is_Google_using_go_internally

Is Google using Go internally?

Yes. There are now several Go programs deployed in production inside Google. A public example is the server behind golang.org. It's just the godoc document server running in a production configuration on Google App Engine.

Other examples include the Vitess system for large-scale SQL installations and Google's download server, dl.google.com, which delivers Chrome binaries and other large installables such as apt-get packages.
aszxqw
2016-04-03 16:50:36 +08:00
你现在可能觉得 go get 很好用,等你被各种依赖版本不一致折腾的欲仙欲死的时候,你就知道 npm 的版本管理多么好了。
xhowhy
2016-04-03 16:55:04 +08:00
@aszxqw 请教如何完爆
xhowhy
2016-04-03 16:56:41 +08:00
@BXIA C 的语法全世界最简洁啊。。这你都不知道

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

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

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

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

© 2021 V2EX