不要再拿 Golang 与 Java 作比较

2021-09-12 11:55:56 +08:00
 josephok
以下是我从《 Go 语言高级编程》一书中摘录的部分内容,简述了 Go 语言开发的初衷。

Go 语言最初由谷歌公司的 Robert Griesemer 、Ken Thompson 和 Rob Pike 这 3 位技术大咖于 2007 年开始设计发明,设计新语言的最初动力来自对超级复杂的 C++11 特性的吹捧报告的鄙视,最终的目标是设计网络和多核时代的 C 语言。到 2008 年中期,在语言的大部分特性设计已经完成并开始着手实现编译器和运行时,Russ Cox 作为主力开发者加入。到 2010 年,Go 语言已经逐步趋于稳定,并在 9 月正式发布并开源了代码。
Go 语言很多时候被描述为“类 C 语言”,或者“21 世纪的 C 语言”。从各种角度看,Go 语言确实是从 C 语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等诸多编程思想,并彻底继承和发扬了 C 语言简单直接的暴力编程哲学等。


从上面的描述可以看出,Go 语言的目标是占领一部分 c 和 c++的市场,和 Java 语言毫无关系,再拿来作比较就有点牵强附会了。
18422 次点击
所在节点    Go 编程语言
102 条回复
qbhy
2021-09-13 10:31:39 +08:00
@yamasa 没说代替,只是说占领一部分市场
zoharSoul
2021-09-13 10:32:34 +08:00
@momowei #4 几十 mb,多的上百
MoYi123
2021-09-13 10:39:36 +08:00
我最喜欢的 if err!=nil 环节怎么还没开始
Torpedo
2021-09-13 10:41:22 +08:00
说白了,选 java 和选 go 的基本是两种人。

go 的市场基本是吃掉了 python 和 php 的。毕竟 php 太随意,py 性能有瓶颈
dinfeo
2021-09-13 10:45:00 +08:00
个人认为 Go 语言的特性,其实更适合做工业嵌入式这块这块,毕竟下位机大部分都是用 C 或者 C++写的,Go 语言去构建边缘计算、工业网关我觉得比 python 、java 更适合
但不知道为啥大家都用来对标 java 做后台?
可能是个人小型项目或者中间件之类的用 Go 可能更好,但是多人大型项目和企业级的业务平台用 Go 似乎不是个好选择。
前端要做后台,搞了 node.js
系统、嵌入式要做后台,搞了 go
写算法的要做后台,搞了 python
= =为啥所有语言发明了都要用来写后台服务?
Rooger
2021-09-13 10:45:21 +08:00
大学毕业前选择培训,C++ 或者 Java,我选择了 C++,进入的公司我也是极其幸运,做的是游戏服务端,工作四年后,回老家西安进入另外一家公司负责游戏后端工作。但是在西安的确招不到合适的 C++ 职位,即使是毕业生也很难招到,而且即使招到了,C++ 的开发效率不高。如今我们已经全面使用 Go 语言了,开发效率相比 C++ 肯定是提升很大的,Java 从来没有在工作中遇到过,不做评价。如今 Go 用了三年,我又想换成 Rust 了。生命不息,折腾不止。
araraloren
2021-09-13 10:58:28 +08:00
@dinfeo 因为有 GC.. 怎么嵌?
fovecifer
2021-09-13 11:01:00 +08:00
我觉得楼主的阅读理解能力稍微有点问题
yuchenyang1994
2021-09-13 11:01:45 +08:00
两个语言都写过,现在在写 go,我就随便说说了。
1. 有关 go 与 java 的比较
首先,u1s1,从语言设计上,go 其实是开历史倒车的,java 基本没啥大毛病,所以如果单论语言本身的话,java 是比 go 好的,这毋庸置疑。
2. 为啥 go 跟 java 交火
首先,现在 go 开始慢慢动了 java 的部分利益了,很多公司业务开发都转向 go,势必有反弹啊。这很正常
3. go 这么破为啥不用 java
这就有得说了,80% java 的特性大部分都被人滥用,还有莫名其妙的设计,譬如 xml,又比如说繁琐的设计模式,没了 idea,写代码都困难,与其大部分人用不明白,不如用 go 了,就这么简单。问 go 哪里强了,就是简单,一共 24 个关键字。就比如搞多线程吧,就算写的再烂,go 也不会出太大篓子。java 就不一样了,经常陷入 to be or not to be 的问题
James369
2021-09-13 11:05:06 +08:00
Go 其实就是想蹭一蹭 Java 的热度,提高下自己的知名度。
cassyfar
2021-09-13 11:06:39 +08:00
go 只是继承了许多 c 和 cpp 的优点。最重要的一点,个人觉得,不盲目迷恋 oop,另外对多线程支持非常好。特别适合现在微服务,分布式的格局。易上手,出活快,对码农本身素质要求比 java 或 cpp 低了太多。

所以目前蚕食了很多微服务的市场,经典就是 go + protobuf 写 rpc service 。但是 go 无法取代 java + spring,go 也无法取代任何对性能要求极高的部件,比如 load balancer 。
southsala
2021-09-13 11:14:54 +08:00
然后抢了 PHP 的饭碗
Mac
2021-09-13 14:33:34 +08:00
PHP 表示你们先抢,我再躺会儿
Akiya
2021-09-13 14:55:58 +08:00
你说的没错,应该拿 C#比
YvesX
2021-09-14 00:17:02 +08:00
要把 Zen of Python 当场 import 出来大再表演一次才知道这种初衷是什么含金量吗
makia98
2021-09-14 10:06:45 +08:00
@qbhy 这就有一位从 PHP 转 Go 的大佬
byte10
2021-09-14 10:31:21 +08:00
@Bazingal 因为很多蠢猪头强行写 web,其实不是特别适合写业务,python,nodejs, php 都适合。java 也适合。go 相对这几个语言没有太多的优势。
@Jooooooooo 所以类似 C 语言的 go 语言不应该去写服务端后台,写业务不太适合
@zjsxwc 但是不稳,容易乱。虽然 java 也容易乱。
@x940727 这个跟 php 一样,跟 nodejs 一样,因为入门简单,随手就可以写一套系统,所以喜欢它。
@fkdog 赞同。我还是挺喜欢 nodejs,写的点玩具简直不要太爽。go 也是不错,单独部署无依赖 也是更爽的。
@golangLover 应该是生态比不上 java,不是 TS 比不上 java,既然都用 TS 了,我为啥不直接上 java,一样啰嗦。
@herozzm 是的,go nodejs 都适合写轮子,写轮子成就高,所以大部分人都喜欢 go,我也是 nodejs 。
Rorysky
2021-09-14 14:56:16 +08:00
@lancelock 不就是 没个全家桶框架么,java 生下来 spring 就坐在旁边看着么
Rorysky
2021-09-14 15:43:46 +08:00
再添加个 游戏开发领域 C#; 游戏服务器 c++
lfzyx
2021-09-14 20:23:37 +08:00
java 快入土为安了,是没有啥可比的

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

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

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

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

© 2021 V2EX