本文目录一览:
- 1、golang和java,谁才是最终答案?
- 2、如何评价Golang的设计
- 3、Golang 真的好用吗?
- 4、为什么我全力推荐Golang
- 5、请Golang深度用户说说,现在Golang的性能可以和C比吗
- 6、golang相比java的优势在哪
golang和java,谁才是最终答案?
首先说个人的结论:go和Java的发展各有侧重,go完全取代Java成为下一个企业级开发语言还有很长的路要走,但完全是有可能的。理由如下:
Java拥有丰富的开源资源,成熟的产品框架,数量庞大的程序员队伍以及活跃的社区
go最初是google为了解决自己的项目而创立的基于C语言开发出的语言,虽然有社区的支持,但目前发展的时间远远不如java,需要更多的时间积累 框架不够成熟和丰富也是go的一大弱势。
go相比Java的优势: 1.Go语言语法简单,包含了类C语法。更容易开发出快速上手的高性能应用。 2.Go语言编译效率高。Go的快速编译时间是一个主要优势。 3.自由高效。Go天生支持高并发环境(这也是google设计Go的初衷之一),在高并发环境中Go拥有着巨大的优势。 4.强大的标准库。Go的标准库已经非常稳定,lib库也在不断地扩充和完善中 5.部署方便(基于C语言的特性是的Go语言的二进制文件可以运行于任何一种操作系统,天生的跨平台特性,更优于Java)
Go语言作为一个新兴的编程语言,因其最初的商业开源的特性,有Google的加持,加上现在区块链技术中Go项目所占比例逐渐增加,因而在后续区块链的产业中,Go语言的比重会逐渐压过Java。因而Go语言完全有可能在新一轮的科技产业发展中成为企业开发项目的首选语言
如何评价Golang的设计
像 C# 和 Java 也可以使用 unsafe 来访问更底层,而高级封装,Go 语言只是抽象了一些用 C 实现起来特别繁重,坑特别多的东西.就像 slice 简化了对数组的操作和处理,而 channel 什么的,让实现并发逻辑简洁又高效,让程序员可以有更多精力聚焦业务逻辑的设计,而不是关心这个锁,那个锁.但要说到语言设计的优劣,Go语言确实没太多亮点.特别是处理数据库数据和 JSON类似的数据还是和其他强类型语言一样,麻烦又繁琐.
但在工程上,或者实际项目上,它有无可匹敌的几大优势:
1. 容易部署,比任何一种能胜任商业项目的语言都要简单,干练.
2. 由于语言设计的硬性规则,让执行一套辅助开发的工具,更好实现.比如代码格式化,代码分析.(虽然有点没人性,但很适合发挥团队效益)
3. 也因为硬性规则,编译时间特别快.
4. 也因为硬性规则,单元测试起来也很方便,基本可以实现边写边测.这种特性有时候很有用.
5. 因为编译时间快和部署的相对简单,它也能像动态语言一样,做一些类似脚本的工作.不需要像 Java 和 C# 一样,做点小事情,也要一个硕大的运行库,什么都要正规正矩的设计几个接口,不然重用起来很难.
再者很少有大项目,不需要或多或少的触碰一下底层来突破性能瓶颈,或者加速项目开发的.
比如说在 Go 语言里, 可以用 unsafe.Pointer(不需在内存上拷贝数据) 在 []byte 和 string 之间进行转换.
总而言之,Go 语言是一种进可攻退可守的语言.可以偏向效率的很快开发一个项目,可以为了性能,不断的优化数据结构,不断的开发硬件的性能.
Golang 真的好用吗?
好用,优点如下:
并发简单、效率高
函数可以返回多个参数
垃圾回收(相比c/c++。不过java、c#都有这个优势)
简单易上手,语言特性少(也算缺点)
配套工具完善(pprof太好用了)
简介
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目。
并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。
为什么我全力推荐Golang
讨论哪个语言更好,就像在争论姚明和刘翔谁是更优秀的运动员。因为各自的坐标象限不同,常常会陷入一个难有结论怪圈。
所以本文绝不是在说Golang是比其他语言更好的语言。Golang只是最值得推荐的语言,尤其适合快速成长中的后端研发团队。
我推荐Golang的主要理由,并不是技术性的要素:不是他的高并发能力,编译的速度,跨平台能力,内存效率,也不是社区的活跃度等等。
事实上,创业之后,或者说成为一个技术管理者之后,技术优点就已经不再是我推荐任何一种语言的关键因素了。
因为,对于一个研发团队来说,项目成败的关键因素是:成本、质量和时间!
1、人力资源的成本
人力资源是研发团队最重要的资源,也是唯一的资源。其成本不仅仅是团队要支付的薪资代价。也包括获得资源的难易程度,例如招聘和培训的速度。以及维持资源,也就是保持员工满意度或者说士气的代价,也就是管理成本。(上述成本不仅指钱,时间也是非常昂贵的成本)
Golang有一系列特点,使它既容易上手,又易于维护。Golang可以让初阶和中阶工程师,经过少许培训,就写出相当不错的代码。直接点说,一票1-2年经验少许灵性的年轻工程师转Golang,只要少许指导,很快就可以写出高并发高负载能力生产级别的代码,而且质量相当有保证。而同样的工程,如果用C++或java等语言,则需要至少3-5年经验的工程师来完成,同时质量还是要让人担心。
那么,对于团队特别是成长型的或创业团队来说,现在有Golang这样一种语言,可以让大量初阶和中级工程师承担主要开发工作,还能保证相当优秀的结果,从资金成本和时间成本控制的角度,简直就是美梦成真。
2、项目研发的效率
说到高并发高负载,让我不能不想起nginx。nginx在2004年从web server领域横空出世,所向披靡。精巧严谨易于维护和扩展的代码结构,也是教科书级别的。
但是要知道,一个用C写出一个nginx,是需要世界上最优秀的工程师的。这样的工程师,不仅团队里面没有,连遇到一个都很难。
可现在,我再告诉你,一个使用Golang的中级工程师,就已经可以写出性能与nginx相近的高并发高负载应用。而且不仅性能相近,而且需要的代码行数和开发时间也短很多。这对于团队成员来说,这很可能是决定生死存亡还是走上人生巅峰的区别。
--
总之:
对于团队管理者来说,Golang可以让团队用更低的人力成本,更快的速度,更高的质量,完成项目研发。
对于工程师来说,Golang可以让人有更多的时间去思考和生活。
所以,我推荐Golang。
请Golang深度用户说说,现在Golang的性能可以和C比吗
不可以,完全没有可比性。
Golang的优势是开发速度,C可以自由、精准的操控内存。
拿string类型举个栗子:
1、修改字符串:
golang:需要分配新内存,然后进行内存copy。
c:可直接修改,可realloc。
2、存一段data:
golang:使用[]byte类型,[]byte转成string需要进行内存拷贝(排除掉利用指针进行类型转换的情况)。
c:直接用char[],可读可写。
golang中为了语言的安全性,类似的这种限制有很多,牺牲了一部分性能。但golang的优势也是显而易见的,goroutine、chan都很好用,而c则需要自己进行进程、线程的管控。
golang相比java的优势在哪
部署方面,不像Java那样需要各种配置。
另外,语言的灵活性,性能等也有很大的优势。天生支持并发,太适合做为服务器端语言了。
最后,看语法最近要火的kotlin和golang有点相似啊
并发实习简单快速,网络时代的C,有under in control的感觉,不适合构建超大型分层结构复杂的项目,一般最多十万以内就算大项目了,学习成本很低,库不够丰富和稳定,面向源码编程,有问题看代码,没有那么多framework,更多的面向library,你能够很快速的了解第三方项目,而不用在语言上做太多投入,虚拟机从1.8开始也很强大了,除了没有范型,以及项目版本管理统一工具,还有一个像样的IDE和debug工具,找不出太多缺点了,这些年发展迅速,库也是丰富了不少,建议初学者从golang开始自己的编程生涯,待练就坚实的基础功再去肯Java这头猛兽更好,当然,golang和Java是两种世界不同思维的代表,一个是面向OO,一个更像是面向过程和模块,所以放一起比较