Golang Go语言中 不要再拿与Java作比较
Golang Go语言中 不要再拿与Java作比较
以下是我从《 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 语言毫无关系,再拿来作比较就有点牵强附会了。
更多关于Golang Go语言中 不要再拿与Java作比较的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
既然很多人拿 Go 做 web 业务,为什么不能比
更多关于Golang Go语言中 不要再拿与Java作比较的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
初衷(指某种主观意愿而非客观事实
尽信书则不如…
应该比不过 java
一般中小型 curd 应用 go 大概占用内存是多少
做 Web 业务的又不是只有这 2 个语言,几乎所有的语言都可以拿来做 web 吧,语言做比较得看他们的相似性。
js 的设计初衷还是解决’简单’的网页互动呢…
python 的设计初衷是为了打发无聊的时间,继承 ABC…
初衷不能说明什么问题
确实
抛开初衷不讲,Go 语言更像 c 语言吧,除了使用 gc,就这点和 Java 类似,其他的地方好真没什么相似点。
可能 Go 语言的目标是占领一部分 c 和 c++的市场,初衷是成为系统级编程语言,
https://www.imooc.com/read/87/article/2320
但实际上这个“系统级”慢慢从“(操作)系统级”变成了“平台系统级”,
到现在又变成了“应用系统级”,总体上是在往上层走,目标开始占领 Python 、Java 的一部分市场。
有 gc 的语言,操作系统级不太可能,平台系统级我是赞成的,但写业务应用还真不是 Go 的强项,有这需求就用 Java 去了。
#10 我也认同你的看法,但是社区里最多的就是 中小型开源 Web 应用二次开发者,自然有大量的人拿来写业务。GO 最合适的场景应该是用来写“平台系统级”的中间件。
网络和多核的 c, 一种文艺复兴,go 的流行是有相当大一部分开发者已经无法忍受无穷无尽的语法糖,封装,特性和黑魔法而选择直接用 c 的思想去开发应用,less is more, 另外我坚决反对泛型,如果 1.18 后 go 像 rust 那样出现滥用泛型的趋势会考虑选择新的语言
感觉没多少人从 c/c++转到 go
大部分都是从 python,php,java 转的
谁在用 c 写服务端后台啊?
除了历史遗留项目,现在哪家公司在用 C/C++ 写 web 后端?用 Go 来写的公司却有很多。所以为啥不能和 Java 比?
大胆一点。golang 带来的革命性 … 编程语言就是工具 …
屠刀也是工具 那么要图图谁呢 这掌握在拿工具的人的头脑里,不掌握在被图图的人的手里
go 并不适合写 web 应用,更适合写平台系统级的中间件,你可以看我的回复。
你觉得不合适,可还是有公司这么干了。所以有人拿来比较也是很正常的
之前看到过一句话 java 的最大优势就是让良莠不齐的人也能写出差不多的代码 这是作为企业级开发无可替代的 能大大降低你的成本。其他的一切都是围绕这个点展开的 无论是完善的生态 还是各种各样的设计模式、架构和范式。
至于对比之下的那些缺点 比如速度慢 编译慢、工具链复杂 优化有限 不够优雅 这些差距再大也不至于让一整个团队乃至公司切换语言 反而会因为越来越完善的生态 说不定某个框架的版本号改一下就可以缩小。
毕竟 21 世纪 PHP
什么叫滥用泛型,go 的泛型提案看起来还是蛮简单的吧,不像其他语言还要纠结什么逆变协变
我觉得你误解了上面那段话
「设计网络和多核时代的 C 语言」不代表对标 C 语言,更多的是表达希望在网络时代取得 C 语言在「旧时代」(姑且这么称呼)的地位
真和 C/C++ 语言对标那不自找没趣吗,请问 Go 占领了多少 C/C++ 的市场?
哈哈哈,有点 PHP 的意思了,反正我全部语言就喜欢 go,但 Java 是我未完成的梦,我尊敬 Java 。
不要再拿 Java 与 PHP 作比较了,PHP 毫无疑问是目前主流语言中写业务是最快的。
主要还是生态的问题, 语言从来不是问题
确实,Go 取代的应该是某些场景下的 C,而不是动不动就搞 CURD 的 Web
我指第三方库,泛型滥用 /模板地狱都是这种类型语言的老问题了
不成熟的一点见解,两者在 web 开发的比较,
Go 的优势是快,运行快、开发快、控制力强
Java 的优势是稳,性能稳、架构稳、工具多、黑盒多、设计多
至于两者的优劣对比嘛。。。
倒不如说是根据开发人员来做选择,
老手开发的新项目、短期项目可以考虑 Go,
新手但又需要长时间迭代开发、复杂功能多可以准备 Java
如果有不同意见默认你对:-)
巧了,Java 的目标也是占领一部分 C++的市场
为啥要比???比也是 Javaer 在比,正经的 Gör,眼里没有 Java 的,目中无人的那种状态,懂吧
实际运用中还是占了不少的。。。比如大厂里面 C/C++的腾讯转了大量的 Go 吧
至少在 Docker 这种云计算场景,和区块链场景,它是确确实实侵蚀了一部分 C/C++ 的应用场景。
比特币的代码是 C++,但新的山寨币几乎没有是用 C++ 实现的,基本都是 Go 和 Rust 。
平台系统级中间件指的是?类似 SSO 这种?
带 GC 的语言,怎么可能替代 c,Rust 还差不多
lz 能发出这样的内容,说明自己已经比较过了,那为啥也不用别人的比较,有点迷 0.0
分享分辨 Go 吹的一个方法:声称 Go Web 开发快。
要么压根没写过 Go,要么只写过 Go 。
其实大部分用 Go 写 Web 的,都是 Java 卷不动去卷 Go 了,认为自己用 Go 就能和大神一样的起跑线(因为 Java 大神太多了,起步就晚了)。
因为应用,才会比较。
谁管你初衷是什么。。。
go web 开发感觉还是挺好的呀
如果就谈业务逻辑的话,公司小、业务简单、架构不复杂,你用 go java php python ruby node 甚至 asp 都没问题。
如果业务复杂、人员多、流动性强、架构需求稳定,我觉得时间自然会说明一切,各大公司都会用脚投票选择什么语言。
前几年淘系的人很喜欢在网上布道 nodejs,nodejs 也的确是火了一阵。2021 nodejs 怕是基本已经萎缩成 webpack 、npm 一类的平台工具了。
想要占领 C/C++也轮不到 Golang,Rust 还在排队等着呢
#41
确实,估计是尝试了一波 nodejs 之后,发现还是 Java 、Spring 最成熟。
话说现在“大前端”这个概念还火吗?
#43 你们觉得 node 缺了什么使得不如 spring. 有用上 ts 吗?
Java 强大的是 JSR 那套社区规范,规范成就生态,尽量避免重复造轮子,即使重复造的轮子共用一套规范也能无缝切换。
小孩子才争论语言优劣,成年人只选择赚钱多的语言
web 选 java php 等
运维级,小工具,爬虫类,轻量级 api 选 golang
完事了
起码 Golang 看起来没那么啰里啰唆… Java 看起来真的太罗嗦了.
那我觉得你很可能找不到适合的语言,主流语言里除了 Go 现在似乎没有不支持泛型的得了。
哪个能赚到更多的钱用哪个,争论个毛线。
薪资才是王道
Java 也可以写得一点都不啰嗦。
然而结果是, Go 就是在抢占 Java, Python, Ruby, Node 等等的市场
Go 带 GC,,只能干 Java 的工作,,C/C++的工作 Go 干不了
本来我并不觉得 Go 和 Java 有啥好放一起比较的
但是楼主从设计最初目的是对 C++ 的不满而认为,Go 应该是对标 C 和 C++。
那么楼主可以看看 Java 的设计目的,巧了,Java 的设计目的也是对 C 和 C++ 的不满,甚至不止是 Java,市面上大部分的语言设计之初都是因为出于对 C 和 C++ 的不满。
都是处于对 C 和 C++ 的不满设计出来的语言,互相之间比较一下也正常吧。
有人比就是因为两个语言在同一个使用场景之中出现了,你硬说两者毫无关系,感觉你的说法比较牵强。
PHP:这个时候我声都不敢奏
#56 PHP:“我始终是最好的语言”
然而 go 一直到 1.5 才支持编译成动态链接库
现阶段 go 对比的就是 java php 的传统后端语言吧
Rust 对比 c/c++更为合理一些
如果 Go 语言没有诞生现在大部分云原生项目( K8s…)可能就是 Java 写的,如果 Go 语言没有诞生 Docker 可能就是 Python 写的。
如果没有 Go 语言国内一些厂家( B 站,头条…)说不定就用 Java 做服务端语言了。
所以不要再拿 Golang 与 Java 作比较了,Go 跟 Java 毫无关系。
因为用了 Go 就没 Java 什么事了。
先抛开语言特性与语言生态层面,
单讲背后的 Google,Sun 和 Oracle,就必定会有故事,
并且你发的帖子里有 Golang 的几个时间点,有趣的是对应时间 Java 阵营都发生了些什么?
Google 缺少一种自家主导的主流编程语言,那时那刻那情形下 Golang 诞生,两者便避不开要被"比较".
然而事实上就是 Go 已经在和 Java 交火……
字节服务端招聘,Java 比 Go 多
我总感觉是 go 的使用者在和 java 比较。。。
java 程序员都在专心 crud 。。
能撼动 Java 地位的,只有生态和 Java 的新特性。
我当初还想学 rust 呢,不比这个 java 强多了,最后还是学了 go,要吃饭啊
纯粹语言之间的对比,确实没意思。但是考虑到需求、开发、部署等场景进行技术选型,为什么不能对比?
比如开发后端 api,可以选择 Java 、Go 、PHP 、Python 等等。要采用哪个语言,就要从各方面做对比吧?
别拿初衷说事,我的初衷还是瑟辉逐一接班人呢,
go 写 crud 也很容易啊,为什么总有人说不适合呢?现成的 web 框架、orm 库直接拿来用就是了。
JAVA 天下无敌, 但是选择 go
语言很多, 就看你有没有决定权,决定在公司用什么语言进行开发, 每个人都有自己的考量
最近我在找工作,看了不少面试题
我发现了一个问题
Java 因为生态丰富,组件甚多, 所以,java 面试题很多都会在自己的圈子里卷, 不断的内卷,比如 java io, jvm 调优 等等, 更有甚者, 还得考 协议,网络,操作系统,算法,设计模式等等
而 go 语言,因为简单,生态不够丰富, 所以 go 语言的面试题 考自己本身的 很少, 无非 gmp, 切片,map, 锁机制,管道 这几项而已, 问的问题绝对不超过十分钟, 剩下的 就会问到 协议 网络 操作系统 算法, 基本没有考设计模式的
就面试这点, 越简单越好…
go 都能吹开发快的吗
go 吹别往脸上贴金了
go 替代 c 和 cpp,真是笑了
然而更多的 PHP 市场被 Go 取代了
都是语言,为什么不能比较?
如何获得流量?
微博: 男女撕逼
V 站: 语言圣战, 系统对比
替代也是事实。“Java 把 C/C++从业务逻辑的领域彻底赶出去了,而在中间件控制逻辑的领域,Java 也把 C/C++也赶到了还有一丝需要高性能的地方,然而 Go 语言的进入,带着 Docker 和 K8s 的云原生的大旗,把 C/C++在高性能中间件的这一块领域也吞噬的所剩无几了。C/C++被赶到了最后一块阵地——系统底层。然而,Rust 的出现可能要把最后这一块 C/C++还有存在感的地方也要收走——Linux 内核开始支持 Rust 了,而且 Android 项目指定 Rust 成为 C/C++的替代方案……”
记得之前有句话:王老吉和加多宝打架,然后和其正消失了
这是一个悲伤的故事,神仙打架,凡人遭殃
用 Go 去取代 PHP 的很多都是小公司瞎折腾,你说你开发个 SAAS 系统为啥用 Go ? 平滑重启都没做? Panic 后进程都没了? SQL 你写原生 SQL? Gorm,xorm,xo? 真有 laravel 好用么? fpm+opcache 满足不了并发么? 你要是说换 Java 我倒啥都不想说了。
上面就是我看到一些小公司瞎折腾的结果,就像前几年折腾 nodejs 一样。你说你要是大公司有人力就算了,就那几个人还 BB 搞“微服务”
没说代替,只是说占领一部分市场
#4 几十 mb,多的上百
我最喜欢的 if err!=nil 环节怎么还没开始
个人认为 Go 语言的特性,其实更适合做工业嵌入式这块这块,毕竟下位机大部分都是用 C 或者 C++写的,Go 语言去构建边缘计算、工业网关我觉得比 python 、java 更适合
但不知道为啥大家都用来对标 java 做后台?
可能是个人小型项目或者中间件之类的用 Go 可能更好,但是多人大型项目和企业级的业务平台用 Go 似乎不是个好选择。
前端要做后台,搞了 node.js
系统、嵌入式要做后台,搞了 go
写算法的要做后台,搞了 python
= =为啥所有语言发明了都要用来写后台服务?
大学毕业前选择培训,C++ 或者 Java,我选择了 C++,进入的公司我也是极其幸运,做的是游戏服务端,工作四年后,回老家西安进入另外一家公司负责游戏后端工作。但是在西安的确招不到合适的 C++ 职位,即使是毕业生也很难招到,而且即使招到了,C++ 的开发效率不高。如今我们已经全面使用 Go 语言了,开发效率相比 C++ 肯定是提升很大的,Java 从来没有在工作中遇到过,不做评价。如今 Go 用了三年,我又想换成 Rust 了。生命不息,折腾不止。
因为有 GC… 怎么嵌?
我觉得楼主的阅读理解能力稍微有点问题
两个语言都写过,现在在写 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 的问题
Go 其实就是想蹭一蹭 Java 的热度,提高下自己的知名度。
go 只是继承了许多 c 和 cpp 的优点。最重要的一点,个人觉得,不盲目迷恋 oop,另外对多线程支持非常好。特别适合现在微服务,分布式的格局。易上手,出活快,对码农本身素质要求比 java 或 cpp 低了太多。
所以目前蚕食了很多微服务的市场,经典就是 go + protobuf 写 rpc service 。但是 go 无法取代 java + spring,go 也无法取代任何对性能要求极高的部件,比如 load balancer 。
然后抢了 PHP 的饭碗
PHP 表示你们先抢,我再躺会儿
你说的没错,应该拿 C#比
这就有一位从 PHP 转 Go 的大佬
因为很多蠢猪头强行写 web,其实不是特别适合写业务,python,nodejs, php 都适合。java 也适合。go 相对这几个语言没有太多的优势。
所以类似 C 语言的 go 语言不应该去写服务端后台,写业务不太适合
但是不稳,容易乱。虽然 java 也容易乱。
这个跟 php 一样,跟 nodejs 一样,因为入门简单,随手就可以写一套系统,所以喜欢它。
赞同。我还是挺喜欢 nodejs,写的点玩具简直不要太爽。go 也是不错,单独部署无依赖 也是更爽的。
应该是生态比不上 java,不是 TS 比不上 java,既然都用 TS 了,我为啥不直接上 java,一样啰嗦。
是的,go nodejs 都适合写轮子,写轮子成就高,所以大部分人都喜欢 go,我也是 nodejs 。
不就是 没个全家桶框架么,java 生下来 spring 就坐在旁边看着么
再添加个 游戏开发领域 C#; 游戏服务器 c++
java 快入土为安了,是没有啥可比的