如果你是一个开发者或者程序员,你大概应该听过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,那么现在是个好机会。

 

为什么越来越多的人偏爱go语言的更多相关文章

  1. 为什么越来越少的人用jQuery

    摘要:JQuery该退役了. 原文:为什么越来越少的人用jQuery 作者:Lemonade Fundebug经授权转载,版权归原作者所有. 最早期的开发,大多都使用jQuery,它给我们带来了很多的 ...

  2. BT雷人的程序语言

    原文:http://cocre.com/?p=1142  酷壳 这个世界从来都不会缺少另类的东西,人类自然世界如此,计算机世界也一样.编程语言方面,看过本站<6个变态的C语言Hello Worl ...

  3. 6个变态的C语言Hello World程序 之 雷人的程序语言

    以下的六个程序片段主要完毕这些事情: 输出Hello, World 混乱C语言的源码 以下的全部程序都能够在GCC下编译通过,仅仅有最后一个须要动用C++的编译器g++才干编程通过. hello1.c ...

  4. 《Python Web开发学习实录》高清PDF版|百度网盘免费下载|Python Web开发学习实录

    <Python Web开发学习实录>高清PDF版|百度网盘免费下载|Python Web开发学习实录 提取码:9w3o 内容简介 Python是目前流行的动态脚本语言之一. 李勇,本书共1 ...

  5. 手把手教你实现Android编译期注解

    一.编译期注解在开发中的重要性 从早期令人惊艳的ButterKnife,到后来的以ARouter为首的各种路由框架,再到现在谷歌大力推行的Jetpack组件,越来越多的第三方框架都在使用编译期注解这门 ...

  6. Let's go! (Ubuntu下搭建Go语言环境)

    自2009年Go语言发布以来,我一直在关注Go语言,如今Go语言已经发展到1.2版本,而且也收到越来越多的人关注这门语言.Go语言设计的目的就是为了解决执行数度快但是编译数度并不理想(如C++)以及编 ...

  7. 极客”一词,来自于美国俚语“geek”的音译,一般理解为性格古怪的人

    起源 “ 极客”一词,来自于美国俚语“ geek”的音译,一般理解为性格古怪的人.数学“极客”大多是指,并不 一定是数学专业但又对数学等技术有狂热的兴趣并投入大量时间钻研的人.又 译作“ 奇客”.以前 ...

  8. [No000025]停止自嘲—IT 技术人必须思考的 15 个问题

    行内的人自嘲是程序猿.屌丝和码农,行外的人也经常拿IT人调侃,那么究竟是IT人没有价值,还是没有仔细思考过自身的价值? 1.搞 IT 的是屌丝.码农.程序猿? 人们提到IT人的时候,总会想到他们呆板. ...

  9. 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript

    常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...

随机推荐

  1. 2018-2019-1 20189210 《LInux内核原理与分析》第九周作业

    进程的切换和系统的一般执行过程 (1)进程调度的时机 1.schedule是一个内核函数,不是一个系统调用,进程的调度只发生在内核中,进程调度函数schedule()只能在内核中被调用,用户进程无法调 ...

  2. linux学习:归档,备份及进程相关命令用法整理

    指令:tar.zip.gzip.unzip.rsync.scp.ps.kill.nohup 压缩 tar 归档命令,不具备压缩功能 tar -zcvf test.tar.gz  test/     # ...

  3. Python基础之语句2

    一.if条件语句 1.语法: 2.if语句的真值表达式和条件表达式: 例题1:真值表达式判断奇偶数 num = int(input('请输入一个整数:')) if num % 2 : print('该 ...

  4. 一般处理程序(ashx)的使用

    ASP.NET 中发送请求的页面代码如下: <head runat="server"> <title></title> <script s ...

  5. 常用的当前时间(返回String类型)

    public class TimeUtil { /** * 创建人:zhiyuan * 创建时间:2018年6月9日上午11:31:02 * 方法描述:以yyyy-MM-dd查询当前时间 */ pub ...

  6. 小甲鱼零基础python课后题 P24 023递归:这帮小兔崽子

    0.使用递归写一个十进制转换为二进制的函数(要求“取2取余”的方式,结果与调用bin()一样返回字符串式). 答: def Dec2Bin(dec): temp = [] result = '' wh ...

  7. JAVA访问控制修饰符

    1.public和private private修饰的成员变量和方法仅仅只能在本类中调用:  public修饰的成员变量和方法可以在任何地方调用. public修饰的内容是对外提供可以被调用的功能,需 ...

  8. Facebook AI的工业级NLP开源框架—— Pytext

    PyText是基于NLP深度学习技术.通过Pytorch构建的建模框架.PyText解决了既要实现快速实验又要部署大规模服务模型的经常相互冲突.并且,Facebook已经采用了使用PyText快速迭代 ...

  9. EL表达式JSTL

    EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据. 语法:${隐式对象名称}:获得对象的引用 序号 隐含对象名称 描       ...

  10. Linux —— 命令

    Linux —— 命令 各种查看 查看文件绝对路径 pwd 查看某服务占用端口 netstat -ano |grep mysql Linux 下的复制粘贴 0.在KDE/Gnome下: 复制命令:Ct ...