过去的一年里,软件开发行业不断向前迈进。回顾2018年,我们看到了更多新兴的流行语言、框架和工具,它们改变了我们的工作方式,也让我们看到了更多的可能性。但在这个行业里,跟上潮流是很困难的。因此,在每年年底,我们都会为您提供一些建议,告诉您什么是最重要的以及您应该为来年学习什么。大趋势ProgressiveWebApps2017年,我们见证了ProgressiveWebApp概念的蓬勃兴起。这意味着Web应用程序可以离线工作并提供原生移动应用程序体验。它们可以添加到您的智能设备的主屏幕,甚至可以向您发送推送通知,从而弥补与本地移动应用程序的差距。我们认为在2018年,ProgressiveWebApps将变得更加重要和值得探索。请在此处查看概述。从聊天机器人运行的平台到构建它们的框架,现在每个人都在谈论它。社区也很忙。(阅读我们的介绍)Bots是一款令我们兴奋的新兴移动应用程序。如果你动作快,你就能赶上浪潮。然而,一旦新鲜感消失,它就会承担无聊的角色,例如自动客户支持。但是,相信我们可以实现我们的梦想。前端框架的合并在JavaScript社区中,框架和工具的组合令人难以置信,每周都会有新的东西出现。直到最近,人们还希望旧工具被新工具取代,但这并不是我们在2018年希望看到的。相反,我们看到思想被流行框架交换,创新元素被纳入新诞生的框架。所以在2019年,你选择哪个JS框架并不重要,因为它们的特性大多具有可比性。纵观云的现状,不少企业和开发者都在积极拥抱“云”。云是一个虚拟化的计算机基础设施,可以根据不同的需要,通过控制面板进行全面的配置。目前三大云提供商是亚马逊AWS、谷歌云和微软Azure。由于它们具有竞争力的价格一直在下降,这使得小公司和个人开发者有可能将云计算纳入预算,因此熟悉云工作流将是2019年必须的一项不错的投资。机器学习机器学习(ML)在去年出现了爆炸式增长。3月份AlphaGo与李世石的精彩对决也让其备受瞩目。从原始数据中学习的智能计算机系统正在改变我们与移动设备交互的方式。看起来机器学习将在2019年成为一个更大的因素。编程语言JavaScript继续以令人难以置信的创新速度前进。由于Web浏览器的快速发布时间表,JS的标准设置为每年更新一次。因此,“ES2017”有望在2017年年中完成,同时还会带来一个JS开发者梦寐以求的新特性——用于处理异步函数的аsync/аwait。还要感谢Babel,因为你现在可以在每个浏览器中编写ES2017。TypeScript2.1于2018年底发布,它将为旧浏览器带来Async/Await异步解决方案并改进类型推断。TypeScript是一种静态类型语言,可以编译为纯JavaScript。它通过可选的静态类型增强了经典的OOP模型,使大型代码库更易于维护。它也是编写Angular2应用程序的首选语言,我们建议您尝试一下。这是关于它的快速入门指南。C#7.0有望在2020年发布,作为一门优秀的编程语言,它也会得到更多的提升。当微软推出开源的VisualStudio代码编辑器和.NetCore时,让所有人都大吃一惊。它们不仅可以在Linux、Windows和macOS操作系统上运行,而且您可以使用C#编写快速、高效的应用程序(在此处阅读更多信息)。同时,这两种工具都形成了充满活力的社区。相信他们会在2020年给我们带来更多的惊喜。Python3.6版本将在12月发布。它正在巩固自己作为开发人员、IT专业人员和科学家的首选脚本语言的地位。它适用于自动化、Web开发、机器学习和科学计算。虽然Python2.X和3.X版本的分离对社区来说是一场长达数年的斗争,但现在,您可以放心地选择Python3并享受完整的库支持。对于那些需要额外性能的人,我建议您看一下PyPy,这是一种启用Python运行时JIT的替代方案。Ruby2.3于今年早些时候发布,并带来了一些性能改进。此外,Ruby是学习通用脚本语言的不错选择,但它只有在与Rails结合使用时才能发挥最佳作用。随着Ruby3×3项目的公布,即将推出的Ruby3版本的运行速度将比当前版本快3倍。并且您可以打开在更多情况下使用Ruby的大门。PHP的7.1版于12月发布,对该语言进行了细微的改进。此版本建立在去年7.0版本的主要性能改进之上,将PHP转变为构建Web应用程序的快速平台。如果您要学习,我们建议您查看TheWayofPHP中的最佳实践。Java9预计在2020年发布,它会带来一些开发者欢迎的新特性,比如用于评估代码的repl、HTTP2.0支持以及一些新的API。对于有才华的Java开发人员和广泛使用这种语言开发项目的人来说,他们对这些新特性有着强烈的需求。如果Java不是您的菜,您也可以查看一些基于JVM的编程语言,例如Kotlin和Scala。Swift3于今年早些时候发布。简化iOS和MacOS上的应用程序开发是Apple对现代编程语言的愿景。由于Swift是开源的,一个庞大的社区也如雨后春笋般涌现。计划于2019年9月发布的Swift4将改进语言并引入服务器API,旨在使其成为编写Web应用程序和后端的良好选择。如果您正在寻找让自己兴奋的东西,可以试试Crystal和Elixir。它们都具有类似Ruby的友好语法和出色的性能,或者你可以看看像Haskell或Clojure这样的函数式语言。另外两种快速编程语言,我们推荐你Rust和Go。选择一个或多个来学习:JS(ES2018)、TypeScript、C#、Python、Ruby、PHP7、Java/Kotlin/Scala。工人技术。它们为快速、高效的Web应用程序打开了大门,并有效地弥合了编译本机应用程序的差距。ServiceWorkers是ProgressiveWebApps的一项启动技术,提供对Web平台通知的支持,未来还会有更多的API。Angular.js2也于今年发布。该框架由谷歌维护,并被许多企业和大公司使用。其强大的功能还使编写从Web到桌面和移动应用程序的任何内容成为可能。而且它的框架也是用TypeScript编写的,TypeScript是编写应用程序的推荐编程语言。虽然学习它需要大量阅读,但我们认为在2019年学习Angular2将是一项不错的投资。今年我们还看到了Vue.js2.0版本的发布,它借鉴了Angular、React和Ember的好思想,比前两个框架??更轻、更快。我们建议您今年尝试一下,您可以从我们的Vue.js教程开始。Ember是JavaScript框架的另一个不错的选择。支持双向数据绑定,可自动更新模板、组件、服务端渲染。使用它相比其他竞争者的优势是更加成熟和稳定,同时其框架的重大变更频率较低,社区重视向后兼容性,这也使得该框架成为开发应用程序的不错选择具有较长的生命周期。最佳选择。另外两个值得一提的框架是Aurelia和React。React生态系统在过去一年变得更加复杂,因此很难向初学者推荐。但经验丰富的开发人员可以将该库与GraphQL、Relay、Flux和Immutable.js结合成一个全面的全栈解决方案。没有提及Bootstrap,任何前端都是不完整的。Bootstrap4目前处于Alpha阶段,预计将于2017年发布。值得注意的变化是新的UniversalCards组件和Flexbox网格(参见与常规网格的比较),它们使框架现代化并使用户使用起来更加舒适。SASS和LESS仍然是两个流行的CSS预处理器。尽管VanillaCSS已经实现了对变量的支持,但SASS和LESS在支持mixins、函数和代码组织方面仍然更好。如果您还没有,请查看我们的SASS和LESS快速入门指南。选择一个或多个来学习:Angular2、Vue.js、Ember、Bootstrap、LESS/SASS。后端后端开发有很多选择,但所有选择都取决于您对编程语言的偏好或特定的性能要求。Web开发的一个持续趋势是将业务逻辑从后端移开,并将该层移至前端和移动应用程序使用的API。但全栈框架通常开发起来更容易、更快速,而且它仍然是Web应用程序最高效的选择。Node.js是在浏览器之外运行JS的主要方式。今年我们还看到了很多新版本。除了性能提升之外,还增加了对整个ES6规范的覆盖。Node有一个用于构建快速API、服务器、桌面应用程序甚至机器人的框架,同时它还创建了一个由各种可以想象到的模块组成的庞大社区。以下是您可能想要研究的一些框架:Express、Koa、Next、Nodal。PHP是一种Web开发语言,有大量的Web框架可供选择。由于其出色的文档和功能,Laravel建立了一个活跃的社区。ZendFramework发布了第3版,这标志着面向业务的框架有了巨大的升级。在这一年里,我们也看到了Symfony的许多新版本,使其成为全栈解决方案中更好的选择。对于Ruby,首选Rails框架。Rails5.0版于今年发布,支持WebSockets、API模型等。对于小型应用,Sinatra也是一个不错的选择,Sinatra2.0版本预计在2017年发布。Python有一个结合了Django和Flask的full-stack/mini-framework。Django1.10于今年8月发布,它引入了全文搜索和针对Postgres的大幅修改的中间件层。在Java生态系统中,仍然有很多流行的Web框架供你选择。Play和Spark是必备的两个选项,它们也可以与Scala一起使用。对于编程爱好者,也可以选择Phoenix,它是用Elixir编写的,力求成为Rails功能的完整替代框架,性能优越。如果Elixir是你想在2019年学习的语言之一,不妨试试Phoenix。学习其中之一:全栈后端框架,微框架。数据库PostgreSQL今年发布了两个完整的版本——9.5和9.6。它们带来了自MySQL以来我们一直期待的UPSERT(akaONDUPLICATEKEYUPDATE)功能,以及更好的全文搜索和速度改进,这要归功于并行查询、更高效的复制、聚合、索引和排序。Postgres适用于海量的TB级数据集以及繁忙的Web应用程序,欢迎进行这些优化。MySQL8.0将是该数据库的下一个主要版本。计划于2017年发布,它将为系统带来更多改进。MySQL仍然是流行的数据库管理系统,行业从这些新版本中受益。对于NoSQL爱好者,我们推荐CouchDB。它是一个快速、可扩展的JSON存储系统,还公开了一个REST-fulHTTPAPI。该数据库易于使用并且具有出色的性能。CouchDB的对应物是PouchDB,它完全在浏览器中运行,并且可以与Couch同步数据。所以你可以在离线应用程序上使用PouchDB,它会在连接到互联网时自动同步数据。Redis是我们最喜欢的键值存储。它体积小、速度快且功能丰富。作为NoSQL数据存储或作为流程消息和同步通道,您可以将其用作智能分布式缓存系统的替代方案。它提供了大量的数据结构可供选择,在即将到来的4.0版本中将有一个模块系统,并将改进复制。学习其中之一:Postgres、MySQL、CouchDB、Redis。编程工具Yarn是Facebook开发的Node.js包管理器。它是对npm命令行工具的升级,提供更快的安装、更好的安全性和确定性构建。它仍然使用npm包注册表作为其后端,因此您甚至可以访问相同的JavaScript模块生态系统。Yarn兼容npm使用的package.json格式,不同的是前者可以实现快速安装。作为开发人员最流行的两个开源代码编辑器——VisualStudioCode和Atom——我们在过去一年中看到了它们的许多令人难以置信的创新。这两个项目都是使用网络技术构建的,并在社区中吸引了大量的粉丝。该编辑器具有高度可扩展性,并提供语法检查、linting和重构工具等相关插件。Git是最流行的源代码版本控制系统。虽然它是无服务器的,但您可以将计算机上的任何文件夹变成存储库。如果你想分享代码,像GitLab、Bitbucket和GitHub这样的地方都是不错的选择。在2018年,我们建议您熟悉git命令行,因为它比您想象的更方便。桌面应用程序仍然没有消失。尽管Web应用程序越来越强大,但有时您仍然需要Web平台无法提供的强大功能和API。您可以利用Web技术使用Electron和NW.js等工具创建桌面应用程序,同时还可以让您完全访问操作系统和npm提供的各种模块。要了解有关这些工具的更多信息,请阅读我们关于Electron和NW.js的教程。软件开发团队最近的一个趋势是让开发人员负责在他们自己的软件项目中进行部署,也称为DevOps。这样可以更快地发布和更快地修复生产中出现的问题。具有运营经验的开发人员将受到公司的高度重视,因此从现在开始熟悉实现这一点的技术将对您产生巨大的推动作用。我们推荐的工具是Ansible和Docker。同时,拥有Linux命令行和基本的系统管理技能,也会为你的职业生涯大大加分。尝试学习以下一项或多项:Yarn、Git、VisualStudioCode、Electron、Ansible、Docker。技术已经伴随着大公司关闭数据中心,将他们的整个基础设施适配到云上,我们可以看到云已经赢得了整个软件行业。目前主要的三个平台是AWS、谷歌云和Azure。这三个平台都具有强大的功能,同时不断扩展其功能集,涉及虚拟机、数据库托管、机器学习服务等。由于价格迅速下降,小公司和个人开发人员也可以使用云。对于2017年,在云上部署一个副项目将是一个很好的学习曲线。人工智能是2018年的流行语。语音识别和图像分类只是该技术面向用户的两个应用,人工智能设备的性能达到或超过人类水平。目前,很多初创公司也将AI和机器学习应用到了自己的新领域,相关的开源项目也纷纷发布,比如谷歌的TensorFlow、微软的CognitiveToolkit。机器学习是一个与数学非常相关的主题,对于刚起步的人来说,有全面的在线课程供您学习。虚拟现实(VR)和增强现实(AR)已经存在了一段时间,最终该技术已经成熟到足以提供引人入胜的体验。Facebook(OculusRift)、谷歌(Daydream)和微软(WindowsHolographic)都拥有欢迎第三方开发者的VR平台。然而,VR可穿戴设备仍然面临着严峻的挑战。比如如何消除佩戴者的反胃和脱离游戏圈的感觉,如何打造一个有说服力的用例。
