微信号:imooc-com

介绍:慕课网是一个超酷的互联网、IT技术免费学习平台,创新的网络一站式学习、实践体验;服务及时贴心,内容专业、有趣易学。专注服务互联网工程师快速成为技术高手!

2018你不能错过的Go语言

2018-02-08 11:10 ccmouse

在云时代,云计算和大数据爆发的背景下,分布式架构、并行计算、敏捷迭代等场景对编程语言都提出了更高的要求,在这样的发展需求下,Go语言就横空出世了!



最近我的《深度讲解Go语言》课程在慕课网上上线了,这是我在这里的第二门实战课程。我试图去回想我当时最初接触Go语言的日子,可是记忆竟然有些模糊。不过顺着这些,我竟想起了大学阶段看的两本书。





《算法导论》给我印象最深的,不是什么具体的算法,而是其中的一个非常重要的点,可以说是一种领悟。在我的第一门有关面试的实战课程里,我给大家带来了很多基础知识和思考的方式,其中就有把这个点带给大家,相信获得收获的同学们都已get到。





而《C++程序设计语言》,让我从之前对C++的一知半解,和被当时流行的MFC污染的认知里跳出来,真正认识了C++。但他带给我印象最深的,却是一个大大的疑问。




我们要排序,但什么是RandomIt呢?他叫random iterator,随机访问迭代器的意思,一个模板类型,那到底是什么呢?


  • first, last要可以++

  • first, last要可以+=(因为是随机访问嘛)

  • first, last之类的要可以用<比大小,比大小还要满足偏序关系的诸多要求

  • 等等


我们的first/last不论传什么东西给他都可以,类,结构体,int,float,指针,他们只要包括上面这些要求如first++, first+=2,*first < *(first + 3),能够编译通过即可。非常棒的设计,是吗?是,但除了一点,RandomIt是什么?我们无法通过代码读出来,必须通过文档。


十年后,当我看到有人在台上向大家演示如何使用他设计的新语言调度很多吉祥物将一叠厚厚的《C++程序设计语言》扔入垃圾桶的时候,我终于释怀了。



这个人叫Rob Pike,想要介绍他特别简单,只需要知道他的email是r@google.com即可。而这门语言就叫做Go。


当我得知Go语言是一门通用的编程语言的时候,我第一去看的部分,就是当年C++留给我的疑问,虽然此时我已经转型Java和Python程序员。我不是去看Go语言有没有解决RandomIt是什么这个问题,而是去看,他是如何解决的。


当然,Go语言对业界带来最大的影响,就是它的并发编程模型。高性能的异步io,包括select, epoll, 完成端口,回调等等,一直是广大软件工程师望而却步的领域。其中的一部分为了能做出更高性能的服务而被迫迎难而上。但如今,使用Go语言,这样的编程任务并不比单任务的程序片段复杂太多。我也迫不及待的编写了一个并发爬虫,它运行的那一刻,产生的吞吐量把我吓到了。为了不被远端ban掉,我立即杀掉我的爬虫,加上了限流。而这一切,没有用到任何锁,没有任何共享存储。


如今的Go语言人才,早已是各大公司争夺的对象,简单的搜索就能找到诸如滴滴,美团,360的Go语言专属职位,而Go语言编写的项目,如Docker,Kubernetes,以太坊等早已“家喻户晓”。Go语言也在诸如大数据,云计算,微服务,容器,区块链领域应用广泛。




我在想,Go语言为何会在这些领域获得巨大的成功呢?我的答案可能和大家期望的不太一样,因为在这里,我从另一个角度去看。那就是,这些领域都是新的领域。在新的领域开发新的项目,人们自然会去选择最合适的语言,而不受历史遗留代码,公司决策流程的牵绊。Go能在这些领域取得更大的成功真是归结于它是一门新兴的,通用的语言。


2018年,我们要思考的,已经不是应不应该学习Go语言,也不是思考Go语言能够做什么。而是,如何腾出时间和精力,去学习Go语言。



推荐GO教程学习

点击下方图片即可阅读








点击[阅读原文],Google资深工程师深度讲解Go语言


 
慕课网 更多文章 图说架构系列 - 架构师的坎坷成长路 数据那些概念(数据、信息、分析、挖掘、机器学习、大数据、AI等)
猜您喜欢 西安中心首期前端与移动开发基础班开班啦! 数据可视化之——REmap 专访百度胡志广:百度日处理百亿PV的HHVM分析 【技术蛋糕】如何在 TDD 上浪费时间 【毕业去哪儿】传智.Net攻破更难就业季!