这么多的编程语言为何选择Go

不忘初心,砥砺前行

作者 | 陌无崖

转载请联系授权

出身名门

在你阅读以下内容时,我不得不告诉你一个事实,编程语言Go正在成为一颗冉冉升起的新星,为什么这样说,出身于Google,它是名门出身,它的作者可以说称得上是神级一样的人物。现在让我们看看它的作者:

  • 肯·汤普逊:设计了B语言和C语言,创建了Unix和Plan 9操作系统,1983年图灵奖得主,Go语言的共同作者。
  • 罗布·派克:Unix小组的成员,参与Plan9和Inferno操作系统,参与 Limbo和Go语言的研发,《Unix编程环境》作者之一。
  • 罗伯特·格里泽默:制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8
  • 布拉德·菲茨帕特里克:LiveJournal的创始人,著名开源项目memcached的作者。

看到这是不是觉得这个十几岁的Go少年背景如此之大,其实Go语言的前身仅仅是大佬们在实验室中的一个实验品,后来在研究的过程中大佬们逐渐发现它的优势,最终Go正式版在2012年诞生,并迅速登上热门语言的话题。有调查显示在2019年程序员最想要学习的编程语言Go荣登第一,其次是Kotlin和Python。

哪些公司在用Go

Google

不得不说,作为开发Go语言的公司,在实践Go语言上做出了不少的努力。而且也开源了很多优秀的项目,

七牛云

作为国内领先的企业级云服务商,七牛云几乎所有的项目都用Go语言编写。

腾讯

腾讯可以说是国内的大公司,在Go语言的应用方面主要是有关Docker容器方面。

今日头条

如今大家都在用的今日头条曾经使用Go 语言构建了大规模的微服务架构

当然还有很多,不仅仅是国内的大公司还是国外的大公司,而且有很多小的公司正在实践Go,也正是看中了Go的未来趋势,所以才会广泛的传播和应用。

Go优势

快速上手

Go不是一种解释型语言——它是编译型的。这大大地(drastically)减少了在运行中突然出现的Bug。这一点有点像C语言,代码先被编译,错误会在编译时出现并得到处理,然后才能运行;但是,它比C更高级,比JavaScript和Python更具生产力。

性能

Go语言同C语言一样可以直接将程序编译成二进制文件,并且使用Go编译的程序可以媲美C和C++的速度,众所周知,Python由于简单易用,在数据分析方面有着很好的优势,但唯一的缺点就是速度慢,而Go语言早早的就站在了巨人的肩膀上,不仅速度快,而且也具有简单易用易学的特性,你或许听说过学习Java至少要学习半年入门基础,而Go仅仅需要一个星期左右,就可以编写出一个很好的程序。

并发

Go 可以说最大的特点之一就是它是原生支持并发的,在Go中,用户可以轻轻松松的运行几千甚至上万的并发,Go的协程模型充分利用的CPU资源,因此Go广泛应用在服务端的应用

网络编程

在互联网时代,网络编程出现爆发式的增长,go语言具有天然的web优势,提供了丰富的有关网络编程的接口,而不再依靠第三方服务,仅仅七八行就可以启动一个Web程序。

除了以上这些Go还有很多优势,比如延迟defer机制,交叉编译使得它成为第一门完全支持 UTF-8 的编程语言。可以说Go 语言做到了真正的国际化。

云计算时代

Go 语言被称为云计算时代的 C 语言,它在软件开发效率和运行效率之间做出了绝佳的权衡。这使得它既适应于互联网应用的极速开发,又能在高并发、高性能的开发场景中如鱼得水。

Go的使用场景

Go在Web 系统、API 应用、下载应用、游戏后端,以及各种服务器编程都有涉猎,Go 还适合分布式系统、网关类系统(微服务网关)、数据库代理器、基础服务等的开发。

高并发领域

解决秒级高并发,可以说,只要有高并发高可用需求的服务端程序都可以用 Go 开发。

大数据领域

数据挖掘(尤其是爬虫)、数据分析、数据存储方面,Go 都非常适合。Go 和 Python 也是十分优秀的组合。海量存储有很多,比如 InfuxDB、CockroachDB、TiDB。

区块链技术

因为区块链系统开发涉及到算力及应用,虽然使用C++语言可以解决,但始终过于繁琐,Java、Python等虽然能降低开发成本,但是性能及区块链的算力又跟不上,所以很多企业在开发区块链技术的时候,就会选择开发成本低并且开发性能客观的Go语言作为首选语言。

微服务领域

在构建微服务方面,由于Go天然的网络优势,使他可以快速部署,测试微服务,对于微服务的开发似乎有着原生的支持。

最后

最后总结部分Go语言的开源优秀项目,可以说这些项目覆盖了方方面面,包括了监控系统,容器技术,大数据,微服务,分布式,区块链等等下面列举部分

项目

简介

Yoke

Yoke 是 Postgres 的高可用集群,具有自动切换和自动集群恢复。Postgres冗余/自动故障转移解决方案,提供一个高可用PostgreSQL集群的简单管理。

Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。

micro

Micro是一个专注于简化分布式系统开发的微服务生态系统。可插拔的插件化设计,提供强大的可插拔的架构来保证基础组件可以被灵活替换。

hugo

Hugo是由Go语言实现的静态网站生成器;简单、易用、高效、易扩展、快速部署;相比于Hexo、Jekyll,hugo的优势是生成速度极快。

更多内容请参考go语言优秀开源项目汇总

END

原文发布于微信公众号 - 陌无崖(gh_ebbdb61f463e)

原文发表时间:2019-08-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券