选择Go语言的12个理由
编者按:多核化和集群化是互联网时代的典型特征,那语言需要哪些特性来应对这些特征呢?多数语言在语法层面并不直接支持协程,而通过库的方式支持的协程的功能也并不完整,比如仅仅提供协程的创建、销毁与切换等能力。如果在这样的协程中调用一个同步 IO操作,比如网络通信、本地文件读写,都会阻塞其他的并发执行协程,从而无法真正达到协程本身期望达到的目标,而Go语言的出现解决了这个问题。
以下是原文:
Go语言是谷歌推出的一种编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
Go语言在编程语言的家族中算是一个比较新的成员,弥补C语言的不足并且保持了C的极简主义,因此在过去的几年中它的发展却十分迅速。目前在我的工作中Go语言也充当着一个重要的角色!
到底Go语言对企业来说有什么好处?下面简单介绍一下企业选择Go语言的12个理由:
1. 一个完整的语言体系
Go语言已经逐渐发展成一个完整的体系,不论是Go项目自身还是ta的社区都有了极大的发展。
2. C级性能
Go语言目前的性能已经达到了C语言的程度。而且Go语言的性能要比其他企业级语言(如Java、Scala等)更强。随着Go语言版本的更新,它将会变得愈来愈成熟。
"Go is like a better C, from the guys that didn’t bring you C++" — Ikai Lan
3. 快速编译
Go语言编译速度很快,如此快速的编译使它很容易作为脚本语言使用。因为谷歌设计Go语言就是为了解决谷歌自身的问题——数以万计的代码和CPU核心。我自己的也验证过Go语言的编译速度,几乎是和语言同步进行。
4. 跨平台
Go语言可以在多个平台上进行编译。Go语言设计支持主流的32位和64位的x86平台,同时也支持32位的ARM架构,同时支持多种操作系统,在企业中不需要针对系统环境做额外的部署。
5.测试调优框架
这些基准测试可以查看:my recent post about Golang benchmarking
6. 语言级并行
并发性是能够同时执行多个计算结果。现在并发性已经成为衡量一个语言的关键特性,Go语言就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
7. 代码风格 - gofmt
通过谷歌的页面可以看见Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难
8.内置文档 - godoc
企业中API和程序的相互协作以及和第三方协作是非常重要的,Go语言可以建立一个代码的内置文档-godoc,可以分享将资源在代码中进行分享。
9.自动垃圾回收
在C和c++程序员花费很多的时间和精力分配和释放内存,R语言则可以消除这种情况,确保程序员可以集中精力进行更多的生产任务。当然垃圾收集也有自身的问题,不过这些都是通过语言来实现的,不需要程序员进行额外的工作。
10. 丰富的库
一个丰富的库对于任何一种语言都是非常重要的,可以通过the list of packages in Go查看Go语言的库,包括压缩、加密、大量的数据结构、SQL语句、JSON和XML解析、模板、网络等等。
11. 有趣的语言,低门槛学习条件
有一些优秀的程序员可以学习多种语言,他们是非常优秀的。但是作为一个普通人,学习语言还是很痛苦的,但是Go语言有C的基因,学习门槛很低,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。
"After Go, programming in anything else seems as difficult as balancing the State of California’s budget." — Charles Thompson
12. 经过线上大规模考验的成功案例
我研究越多,越让我印象深刻。还有很多好处我没有列出来,因为实在是太多了。通过一些具体的案例来展示一下吧。
选择Go语言的12个理由的更多相关文章
- C语言第12轮:指针
C语言第12轮:指针 [学习目标] 1. 指针 2. 指针与数组 A: 指针的概念 内存存储单元按字节排序.每一个字节编有序号.我们称之为地址.因为能够通过地址就能够找到所 ...
- 选择J2EE的SSH框架的理由
选择J2EE的SSH框架的理由 Struts2框架: Struts2框架的基本思想是采用MVC设计模式,即将应用设计成模型(Model).视图(View)和控制器(Control)三个部分:控制部分由 ...
- [翻译Joel On Software]选择一门语言/Choosing a language
Joel on Software Choosing a language 选择一门语言 by Joel Spolsky Sunday, May 05,2002 Why do developerscho ...
- InnoSetup 安装选择不同语言,修改软件配置参数,达到安装语言就是软件语言效果
需求 在软件安装时,选择中英文安装界面,选择的中英文界面就是对应软件内界面语言. 在软件安装时,选择中文界面,打开软件就是中文界面. 在软件安装时,选择英文界面,打开软件就是英文界面. 实际上,就是在 ...
- 企业开发中选择logback而不是log4j的理由
不知道看到这篇文章的Java工程师有没有考虑过这个问题:为什么在企业开发中会选择logback来记录日志,而不是log4j呢? 如果你以前没有考虑过这个问题,那么现在如果让你考虑一下,你可能觉的会是因 ...
- Qt5安装及组件选择(Qt 5.12.0)
组件选择 如下图所示,安装Qt时有选择组件这一步,全部安装未免太占磁盘控件,只需安装我们所需要的组件即可.接下来就分析分析各个组件的作用及含义. “Qt 5.12.0”节点下面是 Qt 的功能模块,包 ...
- 选择vim编辑器的7个理由
当我刚刚开始用 vi 文本编辑器的时候,我讨厌它!我认为这是有史以来设计上最痛苦和反人类的编辑器.但我还是决定我必须学会它,因为如果你使用的是 Unix,vi 无处不在并且是唯一一个保证你可以使用的编 ...
- struts2实现选择i18n语言选择切换
[新手学习记录,仅供参考!] 1.项目准备 首先当然是我们得创建一个struts2的web项目,并且已经实现了一个简单的功能. 以下通过登录功能来举例说明. 2.指定全局国际化资源文件 在struts ...
- C语言基础 (12) 文件的操作 FILE
课程回顾 结构体基本操作: 结构体类型的定义 // struct为关键字 Stu为自定义标识符 // struct Stu才是结构体类型 // 结构体成员不能在定义类型时赋值 struct Stu { ...
随机推荐
- C++基本数据类型及类型转换
http://blog.csdn.net/pipisorry/article/details/25346379 c++基本数据类型 什么样的数据算是byte类型,int类型,float类型,doubl ...
- Python 008- 游戏2048
#-*- coding:utf-8 -*- import curses from random import randrange, choice # generate and place new ti ...
- sql server t-sql脚本转成oracle plsql
将一份SQL SERVER数据库生成的T-SQL脚本,转成ORACLE的PL/SQL,其复杂繁琐程度,远远出乎我的意料. 这份SQL SERVER脚本,里面有表,有视图,还有存储过程,以及一些自定义函 ...
- php 批量删除数据
php 批量删除数据 :比如我们在看邮箱文件的时候,积攒了一段时间以后,看到有些文件没有用了 这时候我们就会想到把这些 没用的文件删除,这时候就用到了批量删除数据的功能,这里我是用了数据库原有的一个表 ...
- ajax json html 结合
<table id="datas" border="1" cellspacing="0" style="border-col ...
- JAVA工厂方法模式(Factory Method)
1.普通工厂模式 普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 1-1.建立Sender接口 public interface Sender { public void ...
- ORA-00257
删除归档日志文件的方法: http://www.blogjava.net/kuuyee/archive/2013/05/15/399287.html 惜分飞大大的博客:http://www.xifen ...
- 用ASTERISK搭建自己的免费VOIP服务器
服务器别闲着,博主又要给大家带来新的玩法咯 1. 这里以 Debian 为例子,安装 Asterisk apt-get update apt-get install asterisk 2. 预设置 A ...
- view定位
- hihocoder #1062 : 最近公共祖先·一(小数据量 map+set模拟+标记检查 *【模板】思路 )
#1062 : 最近公共祖先·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在 ...