如果你是一个开发者或者程序员,你大概应该听过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. 请求库之selenium模块

    本片导航: 介绍及安装 基本使用 选择器 等待元素被加载 元素交互操作 其他及练习   一.介绍 1.简单概述 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无 ...

  2. SpringMVC的坑

    The request sent by the client was syntactically incorrect. 这个错误的原因是 因为 提交的表单数据和目标方法的入参不一致所导致   然后我就 ...

  3. 执行发送邮件Send方法时,报错:邮箱不可用。 服务器响应为: 5.7.1 Unable to relay for xxx@xxx.com

    .net代码在执行发送邮件Send方法时,往往出现这个的报错: 邮箱不可用. 服务器响应为: 5.7.1 Unable to relay for xxx@xxx.com 这个问题应该是smtp的设置问 ...

  4. Visual Studio 2012编译的程序无法在XP下运行的解决办法【转】

    最近看到一篇<Windows编程革命简史>,想到以前刚开始用VS2012的时候,编译的程序在其他人那无法运行,一查才知道是VS2012本身不支持XP.当然现在微软早已在VS2012 Upd ...

  5. 壁虎书1 The Machine Learning Landscape

    属性与特征: attribute: e.g., 'Mileage' feature: an attribute plus its value, e.g., 'Mileage = 15000' Note ...

  6. 总结-shell脚本

    执行脚本从 svn 检出项目 vi ace.sh #!/bin/bash svn export svn://127.0.0.1/ace/demo /ace/demo 设置脚本可执行 chmod +x ...

  7. vueX、vue中transition的使用、axios

    引入一篇好文章链接:看一遍就会的vuex文章;完!!! vue中transtion的使用:transition文章;完!!! axios的文章:axios;完!!!

  8. Asp.net 使用线程池实例

    实际开发经常会使用线程,如果每次使用都是创建线程.启动线程,然后销毁线程,从性能上来讲,非常占用系统开销,当线程达到一定量的时候会影响程序的运行和处理效率. 使用线程池:好处:线程池是一种多线程处理形 ...

  9. request.getParameterNames()和request.getParameterValues()

    request.getParameterNames()方法是将发送请求页面中form表单里所有具有name属性的表单对象获取(包括button).返回一个Enumeration类型的枚举. 通过Enu ...

  10. AIX修改密码

    grid@DB01:/home/grid>su - oracleoracle's Password: 3004-303 There have been too many unsuccessful ...