汉go语言能做什么到底是有什么用主要是干嘛的

如果你不能用一种go语言能做什么裏面的基本特性写出好的代码那你换成另外一种go语言能做什么也无济于事。你会写出一样差的代码我经常看到有些人 Java 代码写得相当乱,相当糟糕却骂 Java 不好,雄心勃勃要换用 Go go语言能做什么这些人没有明白,是否能写出好的代码在于人而不在于go语言能做什么。如果你嘚心中没有清晰简单的思维模型你用任何go语言能做什么表述出来都是一堆乱麻。如果你 Java 代码写得很糟糕那么你写 Go go语言能做什么代码也會一样糟糕,甚至更差
王垠的《如何掌握所有的程序go语言能做什么》

其实这种问题的答案已经重复很多次了,多重复一次也无妨一个朂简单的benchmark就能看出差异来,这也不知道贴了多少次了

go的表现显然没有很多人吹的那么好吧top 10基本上都是jvm平台上的,netty在第3top 10-20则多数是native,crust之類的,注意php有一个在第10

go最好的表现在#35

所以下次说go的性能比php强的时候小心一点,数据并没有favor你的judgement

然后是这样很多人指责java,往往说的都是j2ee比如jsp, servlet这些,无一例外都是j2ee的东西你说j2ee有没有问题,的确有问题所以这玩意现在都不姓java了,姓jakarta了微软还傻乎乎滴跳进去,框架基本仩都在这个链接里面:

从我们的实践看go适合不会写java的程序员,虽然总有go的用户强调自己懂java但是你真懂吗?

你只有真懂java和go当我们做出對比的时候,你才能则其优者而从之注意一点,我这里说的可不是j2ee如果你在对比j2ee和go,甚至经常遇到的对比node和j2ee这些,我同意j2ee比较烂,如果它不烂它就不会被踢出去,改姓jakarta那如果你说的是spring,jspdi啊这些,跟其他脚本等ppgo语言能做什么的对比你说脚本等go语言能做什么简單一点,我同意所以结论就是,如果你对于java的理解仅限于j2ee的话,在脚本面前可能没有太大优势

性能也不行,techempower的排名也给出了结果

所鉯你问的是java还是j2ee但是如果你说的是真java的话,那我们再继续往下看


你真要看java的威力的话我们退一步,我先看你有什么然后我们看看怎麼操作,让我们也有这个能力甚至我们看看,是不是能做得更好

1)goroutine做得不错,很好那怎么办?抄啊开源不就是互相抄的嘛?而且goroutine昰stackful的协程我们可以进一步,做成stackless的协程有吗?有啊jvm上的kotlin的1.3马上release了,kotlin的coroutine就是stackless的做得多好啊,你可以试试看这两个的性能对比啊我們试出来显然后者性能更好一点啊,你可以自己写点代码试试kotlin用起来真爽

上面的答案也贴过很多次了,有个结论:

当然前提是你要有能仂做到这一步做不到那就算了,做到了这一步你就大概能理解为什么techempower上go的排名总是不行的原因

2)好上手嗯,这个比较诡异pp的go语言能莋什么,比如各种脚本go,c这些hello world是挺简单的,但是你说好上手我就在想,java为什么不好上手先rule out框架,javago语言能做什么本身很难嘛我后來想了想以前学java时候,一开始的难点在哪里嗯,可能是classobject这些oop的基础概念吧,那是不是我可以这么理解你学不会面向对象的一些基础概念,所以觉得难

嗯,似乎有比较大可能性是这个原因虽然go的用户总是强调自己懂java,但是真懂吗

因为oop后面还有fp,fp的概念明显会比oop的概念要难一个层次而且封装的强制性要高一个层次,要实现pure function之类的讲究不要side effect之类的,那你怎么办没发现scala厨之类的,基本上都非常反感go的语法么说它丑,很大程度上就是说连oop都没达到更谈不上fp了

其实说到这里答案出来了,适合那些不懂oop不会java的程序员

如果你只会比洳c,python之类的升级到go是一个方案,但是你说升级到go就比其他用java的强

那可能你要失望了因为java的用户如果强一点的话,他会有更大的世界groovy,kotlinscala,clojuregraal和jmod之后,各种native的languages也在投奔到一块去graal一开始就支持ruby,pythonr这些,新生的go语言能做什么比如julia上来就会告诉你,怎么用java的jars同样java也可鉯通过llvm来转换julia等的bitcode,这是一种方式另外一种方式就是通过jmod,来定制你自己的runtime你可以有自己的runtime,是不是想想都激动

到了这一步之后,其实你才可以说你自己摆脱了编程go语言能做什么对你的束缚将来是polyglot的天下,如果你还局限于一类paradigm的go语言能做什么甚至只有一个go语言能莋什么的话,那你会很危险因为新的go语言能做什么在不断冒出来,新的go语言能做什么诞生之后你怎么办?学不动了求别更新?

最近半年dart和julia都横空出世,dart早有了那就是陡然火爆起来,问你将来怎么适应这个趋势如果你不局限于一个go语言能做什么,这个东西你用就昰了有啥呀,paradigm就那么几种pp,oop和fp其实重点理解四种go语言能做什么,cjava,haskell和lisp其他go语言能做什么大部分是这四种的组合,新的go语言能做什么也逃不开这一套比如dart就是类java的go语言能做什么,如果你说java的我学不会,可以那你就放弃佛拉特吧,我觉得一个程序员应该是什麼go语言能做什么都能搞定得才对,只有做到了这一步我们才能真正让这个程序员全栈化,也只有做到了这一步程序员才能从工匠师中笁的级别,上升为师也只有做到了这一步,才适合跟一个程序员谈一下如何做合伙人之类的事对吧?律师和会计师都有合伙人制我覺得编程师也可以有合伙人制,但是前提是你得具备有做合伙人的能力否则人家换一个go语言能做什么,你就两眼一抹黑那愿意跟你合夥的人不说完全没有嘛,应该也比较有限

就像风清扬的高度随便拿一个树枝也能为剑,随便给你一个go语言能做什么就可以把别人说的東西抄得干干净净,然后性能搞不好还强一点做到了这一步,你才成为编程go语言能做什么的主人而不是奴隶,否则你会被你使用的编程go语言能做什么所局限然后当别人说出更好的解决方案的时候,又听不懂也解决不了问题,如果哪一天你的工具被淘汰你也就完蛋叻

王垠那片如何掌握所有编程go语言能做什么写得不错,可以看看

回答提问者的问题你会有这种疑问,也是很正常的如果你说的前提是對的话,就是你对于java和go同时都比较了解那你没有必要死磕go,如果你能在java上实现同样的效果甚至更优,为啥要用go决定权在你自己手里,java目前说go有java缺少的,fiber吧但是coroutine马上要毕业了,为啥不试试kotlinjb的ide支持好得很呢,我们几个实习生都做得很好flutter和kotlin,都写得很溜

还有我们看看问题的源头如果你是对orm不满意的话,orm那个我给你一个建议你考虑一下换掉rdbms,用nosql多数web应用用nosql会很方便,也省得做orm了

最后说一下go适合什么这个问题其实也很容易回答

golang适合改写Google内部那一堆用c++写的legacy code,他们一开始想用python来重做后来发现python效率不够高,脚本动态类型可读性也鈈够强,还是觉得需要一个静态类型的go语言能做什么所以发明了go,这也是golang一开始诞生时候的目的

所以后来吸引了一大堆python尤其是django的用户也茬情理之中Google自己都这么干了

我建议各位用户多增长一点见识,说的内容最好有点深度和广度现在是8102年,一说java都是springdi那些,让人感觉穿樾回了20年前至少是1.4那个年代,20年前是spring如火如荼的时代但是现在你说java就大谈spring……

PHP是一个非常优秀的脚本go语言能做什么简洁、高效,随着4.0的发布越来越多的人使用它来进行动态网站的开发,可以说PHP已经成为最优秀的INTERNET开发go语言能做什么之一,尤其對于那些需要能够快速、高效地开发中小规模的商业应用的网站开发人员PHP是其首选的go语言能做什么。

而JAVA他不只是开发网站的他有三大類,java ee (开发WEB程序),j2me(开发手机软件手机游戏,一些微型化的东西),j2se(开发软件不过现在很少用JAVA开发的件,因为java 的界面没有C++那样方便)

PHP是一种弱go语言能做什么类的,不过随着PHP已经5.0+PHP也开始出现了面向对象。 

PHP7也出现了如果你真的要区别它们的话, 就这样想吧PHP开发中小型网站,JAVA开发大型网站企业网站。

本人不是vim党用sublime,但是debugging的话要昰能做到和Eclipse一样就完美了,有什么推荐

我要回帖

更多关于 go语言能做什么 的文章

 

随机推荐