为什么越来越多的人偏爱go语言
如果你是一个开发者或者程序员,你大概应该听过Go语言或者Golang语言。当然,如果没有听过也没关系,看到这篇文章的同学,就说明你对Golang是关注的,只需要这一点就够了。今天来聊聊关于Golang的几个问题。
越来越多人偏爱Go语言的真相
可能你身边有程序员朋友,或者技术论坛里有人在谈论Go或者Golang,引起了你的注意,让你觉得越来越多的人喜欢Go语言。
作为一名负责人的技术普及人员,“越来越多”到底是多少,我去亲自做了数据收集,如下图:
- 中国的Golang语言搜索指数
- Google中的Golang搜索指数
- Golang指数地区热度分布
- Golang搜索指数城市热度分布
看完上面的趋势图和热度城市分布,大家应该能看到了。不论是中文社区,还是Google 趋势的全球搜索趋势,都验证了“越来越多”人喜欢上Go这个事实。其次,Go中文社区的发展在全球来说还是非常活跃的,北京、深圳、上海更是城市热度分布的前三甲。
总之,上面的图片和文字说明翻译成人话就是:Go语言确实受到越来越多的人的关注。Go中国社区发展很快,想要学习和从事Golang语言的相关的职位,要去北上广深一线城市。
聊聊历史
目前大家熟知的是Go语言在2009年被公开发布。2012年,Go的创造者们发布了Go语言的1.0版本。但很多人并不清楚Go语言的来历和渊源,如果追溯到Go的萌芽时期,能够发掘到上个世纪,因此你可以知道,Go语言的产生绝不是心血来潮。
Go语言的前身名称为Limbo编程语言。Limbo是用于开发运行在小型计算机上的分布式应用的编程语言,它支持模块化编程,编译期和运行时的强类型检查,进程内基于具有类型的通信通道,原子性垃圾收集和简单的抽象数据类型。大家可以看到,Go语言中的模块化编程,包设计,静态语言编译检查,通道,结构体,自动垃圾回收以及现在基于Go做的很多微服务,分布式编程框架等,可谓处处透露着Limbo语言的影子。
再举一个例子,Go语言创造者之一是大神肯·汤普逊(Ken Thompson)创造了Unix系统和C语言,除此之外其还创造了UTF-8编码,而恰恰Go语言的编码格式正是UTF-8编码。所以,我们现在来聊Go语言,或者说聊任何一门语言,从语言的参与者和设计者的履历中也能发现很多有价值的信息。这样一位计算机界的大神,能亲自操刀设计Go语言,必然是可以学一下的。
这里插个话题,除了创立者之外,许多人都在为Go做布道者。
这位作者就是布莱恩·柯林汉(Brian Kernighan,1942年-),如果你不熟悉他的名字,那你一定熟悉他的作品。他在36岁时写了《C编程语言》,73时又写了《Go编程语言》,可谓复制经典。
Golang给我的冲击和震撼
使用冲击和震撼着两个词,是因为我自己本身之前就是Java语言的使用者。因此,我这里还是要说一句,使用Java进行开发的同学,强烈建议大家接触一下Golang语言,接触后绝对能感受到Golang语言满满的善意。
- 语法更简洁
上图说Java和Go最简单的语法编写实现,相较于Java,Golang没有任何的拖泥带水。
- 简单的并发实现 Goroutine 和 channel 使得编写高并发的服务端软件变得相当容易,很多情况下手机游戏地图完全不需要考虑锁机制以及由此带来的各种问题。单个 Go 应用也能有效的利用多个 CPU 核,并行执行的性能好。借用asta谢的话说:天生的支持并发是Go语言最大的特色。天生的基因和整容是有区别的,举个例子来说:大家一样美丽,但是你喜欢整容的还是天生基因的美丽呢?
- 丰富的第三方库 如果是在3年以前写这篇文章,可能Golang的第三方库和社区还不是忒别完善。今天再来看Go语言的社区发展,标准库和第三方库目前已经丰富了太多。各位开发者在进行开发时不再需要自己重复造轮子,就可以直接拿来使用。比如:文本处理库、序列化库、数据库连接库、高并发框架、微服务框架、分布式框架、区块链应用等等非常多的Go语言的实现。
- 资料越来越全面 现在,如果你想真的想学Go语言的话,已经可以在Github,中文社区,公众号,论坛等很多地方,看到一些Golang各式各样的应用和框架的资料,这为学习者们提供了最大的土壤,让初学者可以有迹可循。
- 未来可期 移动互联网普及以后,直播,视频,社交,游戏等长足发展,未来的5G更是不可想象。作为一名程序员,肯定越来越多的听到了云计算、人工智能、大数据、分布式应用、物联网、区块链等这些在现在或者将要引领技术发展的专业名词。而Golang非常适合用来进行:服务器编程、分布式系统、数据库代理器、网络编程、内存数据库、云平台、微服务、区块链等这些领域或者行业的应用和实施。
Golang社区发展情况
下图是gihut网站监测统计的各语言的活跃代码库,以及代码库推送,被fork数以及新关注者的数据统计。从下图中可以看出,Go语言作为一个2009年刚刚诞生的语言,在活跃代码仓库的绝对数量上处于劣势,依次向后看,用来评价仓库fork数量,仓库活跃度,新增观看人数的指标上来看,Go语言呈阶梯状提升。打个比方的话就是:Go语言现在是一个进入了青春期的小男孩,目前身体发育各项指标良好,有非常大的可培养潜力。
Go自己也在努力:新品牌
2018年4月26日,Go官方发布了Go语言新的品牌。新的品牌更为简洁,遵循简单而非复杂的核心理念。使用现代的斜体无衬线字体与三条简单的运动线相结合,形成一个类似于快速运动的两个轮子的标记,传达速度和效率。字母的圆形形状暗示了Go gopher的眼睛,创造了一个熟悉的形状,并允许标记,和吉祥物很好的进行配对。来感受一下新品牌的风貌:
这说明一个问题:这个年代连编程语言都注意自己的形象包装了!
当前现状
目前的现实情况是,相较于企业的需求来说,市场上Go程序员数量还很少;而且因为采用go开发业务的一般是中型公司或者大型公司,这就要求招聘的Go程序员开发这有一定的编程能力,因此很多公司都招不到自己满意的程序员,有的甚至在招聘其他语言时,会在JD上添加一条:愿意学习或者转向Go语言开发者优先。
聊到这里,不知道大家能否理解了:为什么越来越多的人开始偏爱Go语言。行文最后,再说句心里话:按照都知道的物以稀为贵的道理来说,如果你在观望是否学习Golang,那么现在是个好机会。
原文地址:https://www.cnblogs.com/qiucunxin/p/15371254.html
- 34c3 部分Web Writeup
- 原来Oracle也不喜欢“蜀黍"(r6笔记第54天)
- Java基础19(01)总结IO流,异常try…catch,throws,File类
- 使用shell生成orabbix自动化配置脚本(r6笔记第53天)
- 现在 tensorflow 和 mxnet 很火,是否还有必要学习 scikit-learn 等框架?
- 数据的标准化与中心化以及R语言中的scale详解
- Java基础19(02)总结IO流,异常try…catch,throws,File类
- HTML5 — header
- 两条报警信息的分析(第二篇)(r6笔记第71天)
- 两条报警信息的分析(第一篇) (r6笔记第70天)
- R-求y=sin(X) 0-PI 面积代码
- Facebook 发布 wav2letter 工具包,用于端到端自动语音识别
- Java企业面试——Java基础
- 从Java的类型转换看MySQL和Oracle中的隐式转换(二)(r6笔记第68天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 机器视觉 | 光源照明综述(详细版)
- 网页轮播图案例
- Angular单元测试ComponentFixture的实例化过程明细
- 如何在Chrome调试器里检查嵌套Observable对象
- Angular 指令ngTemplateOutlet的运行原理单步调试
- 跳出源码地狱,Spring巧用三级缓存解决循环依赖-原理篇
- Angular NgTemplateOutlet的一个例子
- 手把手教你自制基于TencentOS Tiny的智能甲醛监测仪
- ASP.NET Core 使用 AutoFac 注入 DbContext
- Python爬虫练习:爬取800多所大学学校排名、星级等
- Python爬取股票信息,并实现可视化数据
- Python爬虫练习:爬取素材网站数据
- 25行代码带你爬取4399小游戏数据,看下童年的游戏是否还在
- 十一假期快到了,不知道该去哪玩?爬取旅游攻略
- 干掉Navicat:正版 MySQL 官方客户端真香!