背景
软件应用程序的篇带快速增长已经不再只是一件其本身受欢迎的事情了,它更是篇带带来了深刻改善所有行业业务流程的真正机会。所以,篇带对于企业、篇带行业来说,篇带通过合适的篇带编程创建出出色的软件解决方案成为了竞争的关键。下面,篇带我们来对比一下近年来比较出名的篇带两种编程语言——Go和Ruby。
GO
介绍Go 是篇带一个开源的编程语言,它能让构造简单、篇带可靠且高效的篇带软件变得容易。Go是篇带从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor,篇带 Russ Cox等人,并最终于2009年11月开源,篇带在2012年早些时候发布了Go 1稳定版本。篇带现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。IT技术网Go语言由于自身天生支持并发的特点完美契合当下的互联网环境,所以Go语言自发布之后便迅速风靡全球。

鉴于Go语言的特点和设计的初衷,Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等;除此之外,Go语言还适用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发。
web开发:Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。大量优秀的Web框架如Echo、Gin、Iris、beego等,而且 Go 内置的 net/http 包十分的优秀;游戏开发:对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持爬虫及大数据:Go语言天生支持并发,所以十分适合编写分布式爬虫及大数据处理;云平台领域: 云服务很多都是采用Go进行开发,比如国内著名的七牛云是全站采用Go开发;还有如盛大CDN、阿里云CDN,华为云等。而且云平台基础设施如docker、kubernetes等也是Go开发;分布式存储领域: etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;区块链领域: 区块链里面有两个明星项目以太坊和fabric都使用Go语言;微服务:现在越来越多新的项目采用微服务架构,前面介绍的优秀项目中也看到很多Go提供的微服务框架,如git-kit、go-micro等。服务器编程:以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。Go不适合领域GUI: 例如开发IDE、移动App企业软件: 需要COTS交付、二次开发,基于非源代码的接口扩展,可以在重启或运行时启用新特性,无需编译整个系统的源代码。这类软件常常用像annotation一样的APT机制对语言元素做一定程度的元编程或修改超大型软件和团队:需要很明确的on the fly地知道哪个接口被哪些类型实现了,哪些类型实现了哪些接口。Eclipse有1000W行LOC,InteliJlDEA有700W,JDK自身也有700W,Hadoop+HBase有400w,JBoss等应用服务器有600W,Spring框架有200W,其它第三方库...日常开发的JAVA商用软件,你常常跟几千万LOC打交道。但好像GO超过50W的开源项目只有限的Docker、K8S等。GO的开源生态系统仍然极其弱小,能用于商用产品质量的开源库只有Beego等屈指可数的几个。许多依赖开源库只有2位数的star。Ruby
介绍Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的 Ruby 语言替代品。自从 1995 年公开发布以来,Ruby 在全球吸引了许多忠实的程序员。2006 年,Ruby 得到广泛接受,各大城市都有活跃的用户组,以及 Ruby 相关的开发者大会.

很多人在日常工作使用 Ruby。也有人只是将它作为一种业余爱好。在这里,你看到的只是现实世界中 Ruby 的冰山一角。
仿真模拟:NASA 兰利研究中心使用 Ruby 进行仿真;摩托罗拉的一个研究小组使用 Ruby 写了一个生成场景和处理数据的模拟器。三维建模:Google SketchUp 是一个 3D 建模应用,使用 Ruby 作为它的宏脚本接口。商业:多伦多康复中心使用基于 RubyWebDialogs 的应用来管理、跟踪呼叫和现场服务,为 IT 帮助台和 IT 运营团队提供支持。机器人学:在 MORPHA 项目,Ruby 用来实现西门子服务机器人的反应控制部分。电讯:朗讯一个 3G 无线电话产品中使用了 Ruby。系统管理:Level 3 Communications 公司的 Unix 容量和规划系统负责收集分散在全球超过 1700 台 Unix(Solaris 和 Linux) 服务器的性能统计数据, 它的中央数据收集部分是由 Ruby 编写的。网页应用: RubyonRails框架的公司; SASS 世界上最成熟、稳定和强大的专业级 CSS 扩展语言;A List Apart 建立于 1997 年的杂志网站,最近使用自定义的 Ruby on Rails 重新构建。安全:由 Rapid7 管理的社区开源项目 Metasploit Framework 是一个免费的渗透测试平台,旨在帮助 IT 专业人员评估网络和应用程序的安全性。项目由超过了 70 万行代码组成,2010 年已经下载超过一百万次。Rapid7 开发的商业版本 Metasploit Express 和 Metasploit Pro均基于 Ruby 开发。总结
Ruby vs Go:性能Go开发的关键原则是简单性和生产力。Go语言的语法简单、直观,易于阅读,能够让程序员快速学习。Go语言的主要作者之一Rob Pike曾表示该语言就是专门为简化开发过程和快速获得结果而创建的。Ruby的设计也注重简洁性和生产力,其粉丝都称其是一种美丽、巧妙的语言。Ruby和Go都受到C系列编程语言的影响,相对年轻,但是却俘获了不少人的心,这其中包括程序员和业务决策者。Go非常适合解决简单和复杂的多线程任务,这也是当初谷歌设计这门语言的目的。受到流行的Ruby on Rails框架的影响。Ruby非常适合创建小型商业项目、博客和个人页面。但是面对复杂的解决方案,Ruby有点力不从心,性能速度低,这可能会影响要求苛刻的客户的总体满意度。根据我们的性能测试结果,在相同的环境下,Go项目比Ruby编写的类似项目运行得更快。
Ruby vs Go:社区根据Tiobe和Stack Overflow的调查,Go是近年来发展最快、最受欢迎的编程语言之一,而Ruby则表现相反,近几年中越来越不受欢迎。Ruby是由个人创建的,而Go则由Google设计的,其包括有广泛的云基础架构,支持性社区、论坛、教程,以及最重要的其他库,可帮助语言向前发展。此外,Go是许多重要公司的首选,如Docker,BBC,SoundCloud,Facebook,Dropbox,甚至是Medium。这些企业用户也是Go进一步发展的保证。与之对应的,Ruby也被Twitter,Shopify,Crunchbase等大公司选中。
Ruby vs Go:兼容性编程语言和软件堆栈其他部分集成是可以直接影响将新解决方案、功能或改进添加到现有程序的速度。由于Go与其他语言(特别是C系列语言)的自然兼容性,许多程序员甚至在使用不同堆栈(如Python和Go或PHP和Go)时都可以使用Go来提高应用程序的性能。此外,Go作为服务器端语言可与几乎所有数据库交互。至于Ruby,它的兼容性仅限于最流行的数据库。
Ruby vs Go:开发经验我们的团队多年来一直在使用这两种语言进行开发,他们各自都有其优点和缺点。根据我们的经验,Go非常适合任何规模的后端系统和高度可扩展的网络服务器。Go是一种现代竞争性的语言,能够为您提供快速、高质量的性能,简洁的环境以及与其他技术的良好兼容性。但如果您更看重结果的快速交付,对于性能质量没有苛刻的要求,那么Ruby可能更适合您。








