某乎上看到的选这个问题,决定跟大家从头说起。根据SlashData最新的年Q1季度开发者报告显示,Python的流行度已经超过Java,成为仅次于JavaScript的第二个被广泛使用的编程语言,用户量已经超过万;进一步了解可以发现有70%的机器学习和数据科学工程师表示在用Python。
其实有仔细观察近几年来的排行榜的就会发现Go语言和Python已经在缩短这个“远远”的距离。但是取代还说不上,我们来了解一下Go语言。
一、Go语言的设计初衷
Go语言是当时Google为解决内部问题研发的语言,问题就是C++的代码量庞大,后期引入Java和Python;分布式编译系统和数百万的服务器。Google开发中的痛点就是编译慢,失控的以来并且每个工程师只是用了一个语言里面的一部分。导致程序非常难维护,更新要花的成本越来越大,交叉编译困难。
就此怎么解决?
Go语言系统成为互联网时代的C语言,多数系统级语言(包括Java和C#)的根本编程哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也是足够简单。
所以在设计Go语言的目标是为了消除各种缓慢和笨重、改进各种低效和扩展性。Go是为开发大兴系统的人设计的。结合Google当时内部的一些现实情况,如很多工程师都是C系的,所以新设计的语言一定要易学习,最好是类似C的语言;20年没有出新的语言了,所以新设计的语言必须是现代化的(例如内置GC)等情况。最后根据实战经验,他们向着目标设计了Go这个语言。
二、Go语言为什么还没火起来?
跟Python的流行程度比确实还差了一些,毕竟Python有AI加持呢。数据分析、网络爬虫、系统维护、Web后台还有DevOps、大数据和人工智能。
Go一直被说要逐渐取代Python成为很多人的首选,但实际上还是会让真正使用它的开发者抱怨。
不支持函数式编程通道/并行切片处理多线程编程、理论和实践垃圾回收器,针对UI应用来说,想要尽可能高的吞吐量基本会让人很难受错误处理Go还有一些不利于编程的:
使用第三方代码会让依赖管理变得困难。类型系统很简单,但与经典的面向对象和继承模型有很大不同。它非常像C。结构+接口。没有类。没有继承。没有规范的异常或try/catch。这可能被认为是一种正面的架构,但Go经常让开发者们跌进其panic(严重错误)/recover(恢复)系统。有些人认识垃圾回收并适不用于像Go这样的系统编程语言。我是喜欢垃圾回收的那类人。Go的优点:
命令行应用网络服务Daemons(守护进程)数据库但是,甚至有人用它做这些事情:
嵌入式开发轻量级的微服务基础设施Go足够灵活可以解决大多数问题,甚至有时候会比其它语言做得更好。这里有一个使用Go的公司列表,让人印象深刻,它包括Docker、Cloudflare、Dropbox、Intel、Hashicorp,当然,还有Google。
三、Go语言相关数据
下图是Go语言再中国的搜索指数。
GitHub库的数量:
Go语言的受欢迎程度:
还有更多数据不一一放了,Go语言再过去几年里表现都很好。除了榜单常驻的几个编程语言,Go语言也是吸引了大量用户。所以不是Go不火,而是未来可期。