go语言以后会不会成为主流web开发语言?

WBOY
Release: 2016-06-17 08:30:37
Original
2540 people have browsed it

据说go语言的并发处理很好?能不能和java php竞争?

回复内容:

撸主多虑了,没有竞争关系啦....
虽然 go 成为了世界上最并发的语言,
但是,
这并不妨碍 php 成为世界上最好的语言,
也不妨碍 java 成为世界上最有模式的语言,
更不会妨碍 c++ 成为 21 天就能学会了的语言... 语言真的那么重要吗?web后端应用大部分都是死在数据库上的,用php只要算法得当,一样也非常稳。况且现在的服务器都是白菜价了,实在性能受限就买服务器搞轮询咯。现在的互联网公司能顺利活过三年的都寥寥可数,要是被技术再一绑架,那就直接GameOver了 以后会有很多种主流web开发语言。
go也可能会是其中之一。 谢邀。没想到再次被邀请回答关于golang的问题,这个对于我这个平时写客户端C++用得比较多,写服务端用golang比较少的人真是感到又一次amazing。
我的回答如下:
在用golang这门语言的过程,关于这个关于针对某一门语言能否达到类是这种“xxx的某方面很好,能否跟aa,bb竞争”、“xxx能否成x方面的主流”甚至"xxx能否成为制霸某个领域的语言”之类的的话题,我觉得要回答这类问题。得先自己纵横下web里面诸多语言,基本主流的都用过一遍,对主流web语言背后的支持方有一定深入了解才能做出更加接近客观的答案。所幸,我以前干过这种事。也应用过到实际项目中。用C#的WCF结合ajax写过WebOS,用PHP写过网站和系统后台,用Flash写过网站,用Java写过B/S,早期的asp的VBScript也做过网站。一直到后面切换到游戏领域开发的C++和golang。
到现在的自己的总结就是:语言在某种领域显得比其它语言的强势与否,跟它背后的支持方、跟它自身的优缺点点、跟它的文档资料详细与否,跟语言诞生的时间早晚,成正比关系。拿几个主流的做对比,Java背后有被Oracle收购的Sun,PHP的整个组织和相关社区支持也很给力,怎么说Facebook也不会让人打php的脸的,Golang最开始算是谷歌搞出来(里面关系详细自行查找),但是现在也是自成体系。按照上面的刚刚说的成正比的几个关系依次对好入座。发现最终影响的主要因素就只剩下2个:自身优缺点和语言诞生时间早晚。其它的都是可以当作统一水平直接忽略不计。
拿语言自身优缺点来说,现在只要能成为主流的web开发语言之一,都彼此会有这样的或者那样的优点和缺点,会导致使用者有所倾斜,但是从生产环境来看,它们都是合格的。都是可以无视差异进行使用的。写个网站,golang可以写,Java也可以写。那么这个时候怎么选,从公司氛围来看是使用更牛逼更先进的吗?更牛逼更先进是怎么定义的?由于语言各自的差异导致的优缺点各自并存谁能界定哪个更牛逼更先进?我觉得这两个是凡人思考不了的问题。我是个凡人。但是又怎么样呢?(So what?)公司只会从项目实际情况去考虑,这么牛逼先进的玩意儿,谁懂?没人?懂的人数不多?一定要这个吗?不一定。其它不行吗?其它也行。那干嘛用这个?因为这个的xxx很xxxx。那xxx语言的xxx特点不是也很xxxx吗?是的,xxx语言的xxx特点也很xxx。那干嘛还要用这个?。。。。差点死循环。
没错,至关重要的最后因素:语言诞生的时间长短。抛开一些奇葩的情况不说(例如apple家的东西),通过排除法,语言诞生的时间更早,意味着这门语言的体系更贴合生产环境(没得挑,一路用到黑)、自身进化得更全面减少风险性、培养更多使用受众延续自身体系的推广和发展形成良性循环、更容易构建更多的早期的基建项目形成体系里面的应用方案的积累、与系统形成更深层的耦合关系导致不易被摒弃性、容易全面压缩同领域内后续语言发展的潜力空间增加凝滞性。。。。等等。一大堆东西。说那么多,就是告诉你大量公司都是用那么几种主流现成的,招聘上招的人也是来来回回用那么几种主流的,公司还要考虑各种成本、项目风险。用熟不用生。所以,我现在告诉你,就算是golang是种绝对牛逼无敌的web开发利器,也不会成为主流的web开发技术,因为其它的语言也很牛逼,而且他们人多,双拳难敌四手啊,更何况那么多手。特别一点是,go的优势不全在做web上!!!(这里就不深入了,不然又是长篇大论了。)
回答完毕,觉得回答还行的,有看到的童鞋麻烦你伸伸手指点个赞鼓励下,促进下知乎回答问题的氛围。(^_^) 选型都有类似的风险/成本评估过程的,这是技术,但主要不是技术,是成本:
  • 库成熟吗?我用PostgreSQL和Redis,还有几个第三方服务和多个支付网关,有库吗,这些库经过实际检验吗?
  • 社区大吗?行业里是不是有实实在在的应用,背后是不是有大量的技术人员在持续贡献,而不只是一小撮人在advocate,跟着一帮人后面嚷嚷,但没多少人实际在用。
  • 资料好找吗?80%的问题能一次Google解决吗?
  • 好学吗?junior的技术能比较快地学会并开始产出吗?从入门到成为懂最佳实践的开发者所需要的时间是不是和其他web语言相当。
  • 适合快速开发吗?Go开发对需求变更的响应能有多快?是不是需要每次变更他们都需要research新方案。
  • 有致命瓶颈吗?比如现有系统的核心功能严重依赖LAMP或LNMP底层的某个实现而Go没有。
  • 有关键优势吗?我的这组REST API用PHP,Python要200台服务器,用Go只需要20台。
  • 条件允许我用吗?现有系统不会因为引入Go而需要大幅改造,有也是在预算和允许时间内。
用Go写过两个小Web项目,Go是适合Web开发的,库是够成熟的,Go的性能对一般项目没意义,所以只是Nice to have,语言设计上的一些优势对WEB后台开发来说也谈不上Must have,况且强类型的语言毕竟没有PHP,Python这样的语言好学,或者说,强类型对大多数Web应用没有意义,业务逻辑需要的数据尤其别扭。

Web后台的性能不会依赖于单进程的并发实现,而是多进程下保证了服务稳定的前提下的流量平衡,性能问题主要是由架构解决的,而不是某种语言本身。

Go在Web开发领域不会成为主流。

做为一个用 Go 语言做过网站,并运行了几个月的人。我来说说我的看法。


其实有建站需要的人,很多对技术露出一丝惊诧后,很快就又回到了成本问题上。


像 PHP 各种毛病一大堆,即便是个老手,也很难摆脱对开发文档的依赖,为什么大多数网站还是用 PHP 呢?一个公司,除非是创业公司,不然很少会改变他们主要使用的语言。因为他们太熟悉原来的语言,投入了太多资源,他们没有动力在风险未知的情况下,因为某些诱人的卖点而切换一套新语言。


就像 Google 为什么选择 Java 作为主要的 Android的开发语言。选择什么语言,还涉及到一个生态问题。受教育人才的影响,受市场接收度的影响,受存在的解决方案的影响。即便 Google 那么多牛逼的 C/C++ 高手,它们还是选择了一种面对 Object-C,毫无性能优势的语言。


再回到 Go 语言的本身,它本身并不是用来做网页服务器的。它更注重的是分布式系统,比如广告和搜索,那种高并发的服务器。再者,虽然不太喜欢 Node.js ,也用它写过网站服务器,服务器代码和客户端共用,只是一个美好的梦想,但不得不承认,它更适合做网站服务器,除了成千上万的现成模块,在Node.js 里加载一个模块,把其他网站的内容抓过来,就能像客服端一样,用jQuery来分析和处理。而且,现在的 js压缩,scss,less,前台开发的工作流,已经越来越难摆脱 Node.js 了。


但 Go 语言在网站开发方面还远远不够,虽然常用的功能模块都陆续出现了,但它们没有时间沉淀,没有丰富的相关资料,还是需要同样的时间曲线去学习,去研究,去调试。



一种语言要打败老牌老大,除非能说服各个公司的 CEO,能现实的创造巨大的经济利益。否则,开发者的话语权其实很少。

基本很难,因为错过web应用发展高峰了。如果2000年左右出现还有戏 Erlang 还没说话呢其他语言出来凑什么热闹( 不会,不一定,不能 真闲
国外一个交友网站,plenty of fish, 一个人开发的,03年建站,当时用http://asp.net和SQL Server,这么多年过去了,每月google广告收入就有50多万美元,前不久把这个网站以5点几个亿美元卖了。

用啥语言都行,你擅长什么用什么,抓紧把你的idea实现吧。

用什么语言写服务,真的不是关键,关键是你要盈利!
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template