那么多编程语言,为什么选择Go
出身名门
在你阅读以下内容时,我不得不告诉你一个事实,编程语言Go正在成为一颗冉冉升起的新星,为什么这样说,出身于Google,它是名门出身,它的作者可以说称得上是神级一样的人物。现在让我们看看它的作者:
image- 肯·汤普逊:设计了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。
image哪些公司在用Go
不得不说,作为开发Go语言的公司,在实践Go语言上做出了不少的努力。而且也开源了很多优秀的项目,
image七牛云
作为国内领先的企业级云服务商,七牛云几乎所有的项目都用Go语言编写。
image腾讯
腾讯可以说是国内的大公司,在Go语言的应用方面主要是有关Docker容器方面。
image今日头条
如今大家都在用的今日头条曾经使用Go 语言构建了大规模的微服务架构
image当然还有很多,不仅仅是国内的大公司还是国外的大公司,而且有很多小的公司正在实践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语言优秀开源项目汇总
推荐阅读
- 开发环境搭建(持续更新中)
- RabbitMQ系列笔记介绍篇
- Golang中Modle包的使用
- goriila context深入学习笔记
- Go Context深入学习笔记
- 基于Nginx和Consul构建高可用及自动发现的Docker服务架构
- 关于log日志的深入学习笔记
本文欢迎转载,转载请联系作者,谢谢!
- 公众号【常更新】:陌无崖
- GitHub:https://github.com/yuwe1
- CSDN【看心情更新】: https://blog.csdn.net/weixin_40051278
- 博客地址【定期更新】:https://mowuya.cn/
打开微信扫一扫,关注微信公众号,和我一起成长