前端 - “面目全非”而又“耳目一新”的变化
不但旧事物持续不断地被淘汰,新事物也难保坐久江山,大有岌岌可危之势。
如何编写(Java)Script
- 今年年中发布的ES2017带来的新特性数量少的可怜,但这正好给了浏览器厂商消化ES2015的时间,在ES2017到来之前喘口气——是的,明年的ES2017势必又会带来一大波新特性。
- TypeScript在今年取得了优异的成绩,Angular 2放弃了传说中的AtScript,成为了TypeScript的最大客户
- 转眼间async/await的语法,配合Promise编写异步代码的方式立即席卷整个前端社区,虽然async/await仍然在ES2017的草案中,但在今天,不写async/await立刻显得你的设计落后社区平均水平一大截。
- 受到回调问题的影响,传统的XMLHttpRequest有被fetch API 取代之势
Node.js服务与工具
Koa与流行的Express属于“同根生”的关系,它们由同一团队打造。相比Express,新的Koa框架更轻量、更灵活。
相信在明年,越来越多的产品应该会尝试部署Koa 2,届时,对第三方资源的依赖冲突也会尖锐起来,这需要一个过程才能让Koa的生态完备起来。预计在2018年,我们会得到一个足够健壮的Koa技术栈。这会促进Node.js在服务端领域的扩展,轻量级的Web服务将会逐渐成为市场上的主流。
框架纷争
- 早在2015年便有人声称jQuery已死,社区中也进行了大量雷同的讨论,今天我们看到确实jQuery的地位已大不如前
- Angular 2是一个非常具有竞争力的框架,其设计非常具有前瞻性,但也由于太过复杂,很多特性都会成为鸡肋,被开发者所无视。
- Vue.js 绝对是类MVVM框架中的一匹黑马,社区快速生产出了无数基于Vue.js的解决方案,这主要还是受益于其简单的接口API和友好的文档。
- 目前看来,React似乎仍是今年最流行的数据视图层解决方案,并且几乎已经成为了每名前端工程师的标配技能。
- 今年是React-native(一下简称RN)支持双端开发的第一年,不断有团队分享了自己在RN上的实践成果,似乎前途一片大好。
- 显然RN目前最大的问题仍然是不够成熟和稳定,利用RN替代Native依然存在着诸多风险,这对于重量级的、长期维护的客户端产品可能并不是特别适合,比如Facebook自己
- 我们不清楚Bootstrap还能坚持多久,如果Twitter不得不放弃它,最好的归宿可能是把它交给第三方开源社区去维护。
工程化与架构
- Rollup是近一年兴起的又一打包工具,其最大卖点是可以对ES2015 Modules的模块直接打包,以及引入了Tree-Shaking算法。
- Webpack是去年大热的打包工具,俨然已经成为了替代grunt/gulp的最新构建工具,但显然并不是这样。
- 在模块管理器这里,npm依旧是王者
- React的同构是一个比较低成本的方案,前后端确实可以共享很大一部分代码,随之带来的一大收益是有效克服了SPA这种前端渲染的页面在首屏性能上的瓶颈
未来技术与职业培养
- 大数据时代,越来越多做toB业务的公司对前端的需求都是在数据可视化上,或者更通俗一些——报表。
- VR的开发离不开对3D环境的构建,WebVR标准还在草案阶段,A-Frame可以用来体验,另一个three.js框架是一个比较成熟的构建3D场景的工具。
- WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中。由谷歌、微软、苹果和Mozilla四家共同推动,不过合作的一大问题就是低效。
- WebComponents能带给我们什么呢?HTML Template、Shadow DOM、Custom Element和HTML Import?是的,非常完美的组件化系统。
- 微信小程序对于今年不得不说,却也无话可说,只能说给繁杂的前端开发又填了一个角色——微信前端工程师。
总结
- 在实践中,我们经常需要考虑的方向大可以分为两种:一是研发效率,这直接应该响应业务需求的能力;二是运行时性能,这直接影响用户的使用体验,同时也是产品经理所关心的。
- 然而在业界,很少能看到针对工程化的更深入分享和讨论,大多停留在“哪个框架好”,“使用XXX实现XXX”的阶段,往往是某一特定方向的优与劣,很少有科学的全局观。
- 需要服务端良好的分层架构,数据与渲染完全解耦分离,后端工程师只负责业务数据的CRUD,并提供接口,前端工程师从接口中获取数据,并推送到浏览器上。
- 前端涉足客户端开发也是合理的,毕竟都运行在用户端,也属于前端的范畴。
- 每一年的年末,我们都能看到几乎完全不一样的世界,这背后是无数前端人烧脑思考、激情迸发的结果。
未来的Web前端开发体验一定是更丰富的,依托WebComponents的标准化组件体系,基于WebAssembly的高性能运行时代码,以及背靠HTTP/2协议的高速资源加载,前端工程师不必在性能上、兼容性上分散太多精力,从而可以专注于开发具备丰富式交互体验的下一代Web APP,可能是VR,也可能是游戏。
容器 - “已死”和“永生”
回顾这一年的容器技术发展历程,相信大家都有这样的疑惑:当这个圈子平复下来之后,我们该如何去理性地思考和解读呢?
Docker
- 是Docker公司?是Docker容器?是Docker镜像?还是Docker集群?
- Docker项目的二进制文件中,这其中最引人注目的,当属SwarmKit项目。
- SwarmKit的核心功能乃是“编排”,不过它对这个编排的定义还是比较模糊的,在初期主要指的是“多容器副本”和“副本负载均衡”两个核心能力,后面逐渐加入的是更多应用管理功能。
- Docker公司在2016年在集群领域所做的努力离不开“平台”二字,不过国内曾经一度涌现出来的过分解读着实让这个项目背负了太多的压力。
- Docker公司依然会不遗余力的构建自己的平台世界,网络,存储,Infra Layer,CI/CD,一个全功能平台级项目所欠缺的版块都会被一一补全
Kubernetes
- Kubernetes依然是这个领域最瞩目的项目。这并非意外,在开源的世界里,一旦在某个领域树立了标杆,就很容易跟竞争对手拉开质的差距。
- Kubernetes的发布给整个容器圈子带来了一系列前所未闻的概念:Service,Replication Controller,Pod,Labels & Label Selector,DaemonSet, Cron Job等等等等。
- Kubernetes会继续加强自己的已有优势,更多新的容器编排和管理能力会接踵而至,其中有状态应用的支持、更加完善的网络规则。
- Kubernetes面对的挑战依然严峻,其中最大的问题在于作为一个试图真正解决问题工业级项目,如何能保证自己功能足够完善的同时,始终给用户提供简单和友好的交互体验。
- Kubernetes+Tensorflow的搭配则成为了默认的“基础设施+深度学习平台”的组合。这个机遇恐怕没人能事先预料到。
Mesos生态
- Mesos本身是一个“老”项目,它诞生于伯克利,崛起于Big Data的爆发。
- 在未来,Mesos生态会重点完善自己在15-16年反应不及时所欠下的功能缺口,包括网络、存储、多租户、甚至Pod支持等重要的功能模块都已经有方案提交到了Roadmap。
国内外创业生态圈
- 本身就是创业公司的Docker,容器圈的另一个主角当然是CoreOS。虽然创新能力十足,但CoreOS公司的rkt容器仍然没能在Docker的强势下占据容器市场的主流。
- 国内的创业公司的发力点主要集中于提供容器服务的PaaS产品(也有人称之为CaaS以突出自己的容器特性)。相比于创业初期主要集中于容器管理平台的建设。
- Kubernetes容器管理部分争取到了一席之地。而其本身维护的虚拟化容器HyperContainer项目和以此为基础的hyper.sh容器托管服务,则创下了占据HackerNews首页长达24小时的惊人记录。
- 时至2016年,容器技术已经在国内红透半边天
总结
- 在Docker公司向平台领域发展的同时,Kubernetes、Mesos也同样渗透进了容器运行时的范畴。
- 容器技术圈子的繁荣,得益于现代开源软件社区的成功。Docker自不必说,Kubernetes、Tensorflow亦如是。
- 连Google、Microsoft这样的巨头都一改对开发者傲慢的态度和轻视开源社区运营的作风而扎堆到GitHub上施展浑身解数,有幸同处一个时代而成为参与者和亲历者的我们又有何理由作壁上观呢。
- 容器技术圈子的繁荣,得益于现代开源软件社区的成功。Docker自不必说,Kubernetes、Tensorflow亦如是。连Google、Microsoft这样的巨头都一改对开发者傲慢的态度和轻视开源社区运营的作风而扎堆到GitHub上施展浑身解数,有幸同处一个时代而成为参与者和亲历者的我们又有何理由作壁上观呢
运维 - 风口在哪
- 相比开发领域,运维界的发展更显沉稳谨慎。
- 以往运维人常用的语言有shell、perl、python、ruby;但是运维开发增大了多样性,在一些公司运维开发工作需要使用如go、Node.js等
- 业界已经形成一种认识——运维工作人员需要学习掌握开发能力。
- 如果说2015年是容器化的元年,那么2016年就是容器化开花结果并丰收的一年。
- 有了容器之后,一切以镜像为中心,并且资源管理方式完全不一样。
- 容器化其实并没有带来更新鲜的运维技术,它一方面是减少了运维人员大量的部署工作,另一方面是改变了一直以来的运维习惯。
- 2016年见证了中国IDC行业进入发展阶段,这一年,业务更加趋向多样化,对应的IT技术要求随之增多,并且难度加深。比如,高清视频直播/点播,大数据,人工智能、物联网等。
- 中国的IDC市场规模增长率为全球平均水平的两倍。据预测,未来三年中国IDC市场增长率将保持在35%以上。Cisco公布的报告显示 ,今年全球有65%的数据中心基于云服务, 这一数字在未来三年内将升至83%,并且公有云和私有云将各自分担56%和44%的流量。
- 单一公有云用户,EC2就相当于一台物理服务器,用户需要在EC2中部署自己的应用与中间件。针对这种场景,显然云厂商的用户还有大量运维领域的工作需要做。
- 异构公有云用户,运维工程师不光需要不依赖公有云管理服务来完成单一公有云用户无托管类服务的工作,还需要实现异构云的管理。
- 混合云用户,异构云的进化版,公有云与自有基础设施的混合使用。
a)实现应用能够跨越自由基础设施和公有云的弹性部署与扩容。此方向的用户通常会采用Docker等容器方案。 b)在自有数据中心实现一套与公有云API相同的基础设施;或者在公有云与自由基础设施之上实现一层混合云PaaS或API,使之可以自适应公有云和自有基础设施。
- Serverless架构的高抽象化,完全将云计算与应用代码直接连接,也许确实不太需要运维这个工种甚至领域。
- Serverless架构对于开发者也是存在进入成本,现在的运维工程师完全可以通过学习在未来转向为Serverless架构开发工程师。
- 推断未来运维领域的三种可能:
1.像AWS那样趋向岗位统一; 2.像Google那样岗位独立; 3.Serverless架构环境下用户无需考虑运维领域,岗位仅剩开发工程师。
- 无论沿着哪个发展方向,开发与工程能力都是当前运维工程师需要注重发展的首要能力。或许未来不需要运维工程师,但你还可以做开发工程师啊!
- 首先抛个结论出来,SRE的目标不是Operation,而是Engineering,是一个是“通过软件工程的方式开发自动化系统来替代重复和手工操作”的岗位
- Google SRE 人力技能模型大致分为两类:50-60%为SWE,即软件工程师;余下40-50%还要至少对Unix内核和底层网络(1-3层)非常精通才可以。从这里也可以大致推断出,Google SRE的技能要求是非常高的,SWE只是基础条件
- Google定义的SRE的角色如果单兵作战能力达不到,就通过团队协作来达成。这也是基本除了Google之外的互联网公司所采取的一种运维模式。
- 智能化运维是一套智能体系,它强调了从监控到分析决策再到执行的整个过程的无人化甚至超人化,突出的是系统的自治能力和预知能力。
- 谈到智能化运维的具体落地,笔者预测未来在资源规划、故障处理以及监控预警这几个业务方向将会有实质性的突破,这也意味着对机器学习和数据挖掘人才的需求将是以后的大势所趋,IT企业在运维自动化和智能化将会有倾向的投入。
- 2017年会是运维智能化百花齐放的中兴之年:通过技术、数据提升人力资源、财务资源、基础建设等方面的效率。
物联网 - 巨头割据、安全问题凸显
- 很遗憾的是,尽管物联网是一个新的领域。但是现在占据主导的物联网公司,仍然是计算机、互联网领域的巨头。
- 区块链可以认为是一个分布式的可信任的数据基础设施,不过在嵌入式设备中使用区块链设计,仍然是一个相当大的挑战:有限的设备、有限的空间。
- 在这一年里,有一个关于物联网的安全新闻很值得关注:Mirai 僵尸病毒
- 作为物联网核心之一的连接技术,在过去的一年得到了迅猛的发展
5G 技术在一年里在快速的发展,越来越多的规范、标准正在制定及出台。 蓝牙 5.0 标准正式启用,理论传输距离可达300米、传输速度可以达到 2Mbps。 NB-IoT 在国内正被广泛的试用中,如2017年,中国联通将规模商用NB-IoT;深圳电信联手深圳燃气集团试点NB-IOT等等 Lora 也被越来越多的电信运营商所采用。 这些不同的连接技术,适用于不同的领域、频谱、距离等等的条件。
- 后来带有 Docker 的 HypriotOS 系统将虚拟化带到了一个新的高度:在Docker容器内访问一个物联网设备的所有硬件。
- 在 2016 年里,AI 相关领域的知识和技术都相当的火爆,这些技术也都被带到物联网领域里
- 当大量的智能联网设备开始涌现时,要控制不同的设备就需要安装不同的应用。
- 越来越多的传统企业(非互联网行业)也在努力发展相关的技术,他们在各自的领域里都拥有相当大的市场。
- 而物联网技术将他们带到一个新的高度,如工业 4.0——以智能制造为主导的第四次工业革命。
区块链技术 - 联盟链与公有链的分道扬镳
- 比特币的概念在2008年诞生,2014年以后人们发现将其底层剥离出来的区块链技术,进行改造,增加新特性后,可作为基础设施适用于更多的应用场景。
- 世界上各大金融机构开始关注区块链技术,并且在分析后认为区块链技术有可能在金融各个领域中发挥减少成本、增加效率的作用。
- 在金融领域的场景中,因为无法直接使用性能较为低下、数据透明公开、全网记账的公有链技术,所以在2016年就出现了大量不局限于金融行业,各种以联盟链为目标的区块链项目
- 2016年也是跨链技术曙光初现的一年。目前区块链业界技术发展的精力仍然集中于如何在单个区块链项目中提高性能,增加特性。
- 各行业对作为基础设施的区块链技术的功能与性能需求仍然暧昧,没有公认的清晰明确的定义。
- 作为基础设施的区块链技术仍然没有明确的质量评测标准。
- 作为区块链技术整体解决方案一部分,例如身份认证管理等的链内服务,以及区块链内与区块链外的交互技术仍然没有成熟的方案。
大数据 - 跨越巅峰,迈向成熟
- 随着大数据在不同的领域越来越多的应用场景的发现,如何对数据资产进行管理就变得越来越重要。
- 随着大数据处理技术的进一步发展,如何整合大数据不同的底层大数据处理技术,将数据集管理、数据加工流水线、数据应用管理融合在一个统一的平台无疑能够大大降低大数据从数据引入到数据变成有价值的产品的复杂度。
- 在2016年,大数据流式处理技术取得了飞速的发展,并且逐渐的变成了大数据处理的新的趋势。
- 提到大数据技术,最基础和核心的仍旧是大数据的分析和计算。在2016年,大数据分析和计算技术仍旧在飞速的发展
- 近两年Spark的火爆使得Hadoop犹如昨日黄花,其实Hadoop并没有停止自己的发展的脚步。
- 在2016年,Spark迎来了最近两年的一个最大的版本的发布,Spark 2.0的发布。从年初开始,Spark就在对Spark 2.0进行预热,可是Spark 2.0的发布并不如预期来的顺利。Druid作为一个大数据的OLAP系统在2016年取得了巨大的成功,尤其在中国。在中国有越来越多的互联网公司采用Druid来构造自己的大数据分析平台,而Druid社区在中国也变得非常的活跃。
回顾完2016年,让我们再对2017年做个展望,看看2017年在大数据领域会发生些什么:
- 流式数据处理成为主流,会有越来越多的企业采用流式数据来支撑自己分析、预测,从而能够更快速的做出决策;
- 人工智能和大数据技术融合,大数据技术的发展驱动了2016年人工智能的火热,而将人工智能与大数据处理相融合,构造智慧的大数据平台将会是一个新的趋势。人的智慧和机器的智能相互配合,可以大大的降低大数据处理的开销,从而显著提高大数据的投入产出比;
- 数据资产管理受到越来越多企业的重视,随着大数据加工和处理技术的日趋成熟,如何管理企业的数据资产变得越来越重要。相信会有越来越多的企业将会成立专门的大数据部门,来管理企业的数据资产,而对应的数据管理技术产品将会在2017年变得更为普及。
深度学习 - 2016年大事记回放
- 2016年,人工智能发展火热。作为人工智能一个重要分支的深度学习,也正在受到大家越来越多的关注。2016年是深度学习高速发展的一年。
- 在2016年中,深度学习概念已经不再局限在大学实验室或者顶级的IT公司里,随着AlphaGo战胜围棋世界冠军李世石、更多的无人驾驶车行驶在马路上、Prisma推出基于深度学习的图像风格转换应用、自动写作机器人的出现等等,大众越来越能切身的感受到人工智能所带来的改变。
- 3月:AlphaGo战胜李世石
- 4月:TensorFlow发布分布式版本
- 6月:Prisma 图像风格转换App上线
- 7月:谷歌智能数据中心
- 8月:SyntaxNet发布40种语言的语法分析模型
- 9月:谷歌上线基于深度学习的机器翻译
- 11月:DeepMind和暴风雪公司开始在星际争霸2上开展合作
- 12月:DeepMind Lab开源
2017年,相信深度学习将在以下几个方面实现质的突破: 深度学习将从大学实验室和顶级IT公司走向大众,更多的公司将通过深度学习技术解决实际的问题。随着深度学习工具的开源以及技术的成熟,越来越多的个人和企业将享受到深度学习技术所带来的好处。 深度学习将覆盖更多的领域。从2012年深度学习突破了传统图像识别技术的瓶颈并取得了ILSCRC(ImageNet Large Scale Visual Recognition Challenge)比赛的冠军开始,深度学习能被应用到了越来越多的领域。在2017年中,笔者相信深度学习将继续突破传统技术的瓶颈,并将被应用到基因技术、个性化医疗、自媒体、公共安全、艺术、金融等各个领域中。 随着AlphaGo战胜李世石,深度学习系统在封闭环境下又取得了突破性进展。在2017年,相信深度学习系统将更多的尝试在开放环境下的应用。无论是无人车还是智能星际争霸2玩家或者是DeepMind Lab都将是深度学习在开放环境下的尝试。
深度学习 - 开源深度学习框架发展展望
- 在计算机视觉领域内,神经网络算法一直被用来解决图像分类识别等问题,学术界采用的算法研究工具通常是Matlab、Python
- 随着大数据时代的来临,大数据处理技术的日趋成熟为解决深度学习模型训练耗时问题提供了重要发展方向
单机开源深度学习框架
- Theano
- Torch
- TensorFlow
- Caffe
- CNTK
分布式开源深度学习框架
- DSSTNE
- Paddle
目前比较有影响力的基于Hadoop/Spark的开源分布式深度学习框架有
- SparkNet
- Deeplearning4J
- Caffe On Spark
- Tensorflow on Spark
- TensorFrames (TensorFlow on Spark Dataframes)
- Inferno
- DeepDist
- Angel
总结与展望
本文首先介绍了深度学习提升性能的三种方式:纵向扩展(给机器加GPU)、横向扩展(通过集群训练模型)及融合扩展(在分布式的基础上,给每个集群中的Worker节点加GPU),然后对主流的开源深度学习框架进行了介绍。通过对这些开源深度学习框架的了解,可以看到当前开源深度学习框架的发展有以下几个趋势:
- 分布式深度学习框架特别是构建在Hadoop生态体系内的分布式深度学习框架(基于Java或Scala语言实现)会越来越流行,并通过融合扩展的方式加速深度学习算法模型的训练。
- 在分布式深度学习方面,大数据的本质除了常说的4V特性之外,还有一个重要的本质那就是Online,数据随时可更新可应用,而且数据本质上具备天然的流式特征,因此具备实时在线、模型可更新算法的深度学习框架也是未来发展的方向。
- 当待训练的深度学习算法模型参数较多时,Spark与开源分布式内存文件系统Tachyon结合使用是提升性能的有效手段。
移动开发技术巡礼
不只是今年,跨平台技术一直在移动开发领域火热非常,毕竟Android、iOS都不是可以轻易舍弃的平台。今年的跨平台技术,相比往年的Xamarin、Titanium等,更实际,更接地气,这也导致了跨平台技术今年讨论的热度更高,都快刷屏了。
RN及类似技术最光明的未来可能是:类RN首先取代当前App中的WebView,之后会取代一部分Native界面,长期上来说,一些性能要求高的本地库也会提供对它们的支持,如Realm就提供了RN版本,原生开发会被进一步压缩。原生开发,未来可能专注于一些专项研发,如音视频,或公共组件接入和维护。
React Native
React Native如今的地位毋庸置疑,Facebook没有在国内专门宣讲过,但我已经见识到了它的一些国内铁粉,并且有些公司如携程更是不遗余力的对它进行支持和布道,这种情况下RN发展想不好都不行。
Weex
Weex是阿里手淘团队推出的跨平台开发框架,于今年6月份开源。阿里对该框架非常重视,在全集团推广,并且在今年双十一会场大规模应用,取得了成功。在9月份的JSConf上他们邀请Vue.js作者加入团队担任技术顾问,刚刚发布的0.9版也正式支持Vue 2.0语法特性了。最近它还加入了Apache基金会的孵化器,力争打造成功的开源社区。
微信小程序
所以虽然现在微信小程序看上去能做的还很有限,对于移动App没有替代作用,但将来就说不好了,保持关注吧。
PWA
PWA是Google今年力推的一项移动Web技术,在支持Service Worker和Fetch API的浏览器上可以得到完整体验,在不支持的浏览器可以得到降级体验。
我不是很看好PWA,因为它的能力和性能还是有限,国内目前是超级App当道,对于性能都是精益求精,几乎不可能去采用这个方案,更何况它在iOS上的体验是降级的,不支持服务器推送,就这一条也会被Pass掉。而苹果何时支持Service Worker等新特性是说不好的。
对于页面元素少、交互简单的应用可以尝试一下。
热门行业技术篇
- 直播是2016年的年度标志事件,其火热程度不用多说,因此也有很多泡沫,在数字上弄虚作假已经是人人皆知的事实。
- 与直播相比,VR/AR则是从得意到失意的典型,年初VR还被认为是年度技术,到年底某些做VR设备的厂商传出裁员、倒闭,高端头显设备如HTC vive的销售量也并不大,一下子大家都不看好了,这个领域似乎被资本所抛弃。
APM(现代应用性能管理)- 快速增长的国际市场和前沿技术
- 2016年,APM 在国内及亚太范围内呈现了很大的变化。首先是技术上变革巨大,这里面的诱导因素不排除移动市场规模暴增、云计算的落地、社交的火爆,以及微服务及 Docker 的兴起和发展。
- 2011年,移动设备的普及和App应用市场的爆发,让用户对移动端的性能体验要求也越来越苛刻。
- 移动互联网的爆发和兴起,OTA、电子商务、支付网关、O2O、移动 OA 等一批与移动相关的行业的快速发展,利用 APM 技术提升用户体验成为了移动互联网时代的必需品。
- 在过去的几年,国外 APM 厂商主要把重心放在 IT 和技术运维上,包括服务器端和客户端的性能监控、可视化和系统优化等等,同时监控的指标和IT系统也紧密相关。
APM 2017未来展望
作为 APM 行业的从业者,我们依然看好 APM 在未来一年内的快速发展。在未来一年内 APM 的价值将得到更多的验证和认可,并且将在统一监控领域扮演更重要的角色。在2017年,我们将看到大数据和机器学习在 APM 领域开始发挥重要的作用,因为云计算、微服务和容器化让监控的数据程海量增长,已经不再适合人来进行数据的分析了,是时候把异常检测和根因诊断的工作交给机器了。另外,别忘了物联网和微服务架构、容器的挑战,希望在2017年有一个好的开端。
Golang - 极速提升,逐步超越
在国内,从我这几年运营Go语言北京用户组的经历来看,可以明显地感觉到Go语言的在国内的大热。N多初创互联网企业都选用Go语言作为他们的基础技术栈。我还发现,已经有在大数据、机器人等尖端科技领域耕耘的国内公司开始使用Go语言。这门语言现在已经是无孔不入了。
关于展望
莫过于广大Go程序员翘首期盼的Go 1.8了。这里提一下几个如甘霖般的特性。
- Go编写的HTTP服务器支持平滑地关闭。这一功能早已由很多第三方代码包实现,但是这次官方终于给出了答案。
- 支持HTTP/2的Server Push。这个就不多说了,肯定会比Hijack更好用。
- 新增了plugin包,你可以把一些Go程序作为插件动态地加载进你的程序了。
- 更广泛的上下文支持,自从标准库中有了context包,它就在很多地方起作用了。很多基于标准库的接口功能都可以执行“取消”操作。在Go 1.8中,范围将进一步扩大,比如:database/sql包和testing包都对上下文进行了支持。
- sort包的功能改进,对于切片,我们不用再为了使用它的排序功能去编写某个接口的实现类型。
- go test命令有了新的标记:-mutexprofile。该标记用于提供关于锁争用的概要文件。
- 当然,最值得期待的仍然是Go在性能上的提升,尤其是GC方面,又要有一次飞跃了!另外,defer语句的执行会比之前快整整两倍!cgo的调用开销也降低了将近一半!
技术社区
- 中国现在已经差不多是Go程序员最多的国家了。
- 如果打开Github上Go语言的Wiki(https://github.com/golang/go/wiki/GoUsers)你就会发现,那里已经有一个非常长的列表了。其中的公司达到了近200家,相比于2015年年底翻了将近三倍。
- Go语言的国内推广已经基本完成了科普阶段,现在我们可以实行更加轻松的推波助澜、顺水推舟的推广策略了。由于Go语言的优秀以及不断的进化,现在自发地关注Go语言的人越来越多了,尤其是在高等学府和编程新手的人群中。
- Go语言很好学,配套工具完善,开发和运行效率高,应用领域众多,国内社区也很活跃,有各种各样的中文资料和教程,进阶并不难,其工程化理念也相当得民心。
- 在互联网时代,尤其是是移动互联网时代,它已经大有作为。即使对于炙手可热的大数据、微服务等新型领域和理念而言,它也是一个相当重要的技术栈。甚至在即将爆发的人工智能和机器人大潮,我相信,Go语言也必会大放异彩!