在开发者圈子中许多新的技术和概念层出不穷,人工智能、机器学习、ProgressiveWebApps等等,各种语言、框架和工具的更新也是让人看得眼花缭乱。作为开发者应该跟随潮流还是理性选择新技术?
软件开发行业继续向前大步迈进,我们看到了很多新版本的流行语言、框架和工具。它给了我们更多的支持,也改变了我们的工作方式。紧跟潮流是很难的,所以在每年年底,我们会给你介绍什么是重要的,而且应该在未来十二个月内学习。
一、趋势
ProgressiveWebApps
在2016年,我们看到了ProgressiveWebApp概念的兴起。它代表了脱机工作的Web应用程序,并提供类似NativeApp的体验。它们可以添加到你的智能设备的主屏幕,甚至可以给你发送推送通知,弥补了与本地移动应用程序的差距。我们认为,在2017年,PWA将变得更加重要,更值得探讨。
ProgressiveWebApp(PWA)是Google在Web平台开始推广的一个新概念,可以理解为是尽可能借助目前的新技术(比如ServiceWorker,PushNotification及其他展现层的新技术)以增强WebApp的体验和功能,让WebApp的体验无限接近NativeApp。PWA并不只是在移动设备上使用,有现代浏览器存在的地方就可以有PWA。PWA也不是ChromeOnly,现代浏览器基本都支持。
聊天机器人
现在每个人都在谈论聊天机器人。从运行它们的平台到构建它们的框架,社区也正在忙于各种活动(阅读介绍)。机器人是新的移动应用程序,如果你快点的话也可以在大家都感到新奇时赶上浪潮。一旦新奇消退,机器人可能会被降级到一些无聊的角色,如自动客服。但无论怎样,我们都可以梦想嘛!
前端框架的合并
在JavaScript社区,有着令人难以置信的框架和工具的混合,几乎每个星期都会出现新的。直到最近,人们期望旧的工具将被新的替代,但这不是我们在2016年看到的。相反,我们看到了流行的框架交换想法以及采纳由新诞生的框架提出的创新。所以在2017年,该选择哪个框架作为主要JS框架不是很重要,它们的功能大多是可比较的。
云端
各地的公司和开发者都在积极地拥抱“云”。云是虚拟化的计算机基础架构,可根据需要提供,并可从控制面板中完全配置。目前三大云提供商分别是AWS,GoogleCloud和Azure。由于其持续的竞争价格一直在下跌,因此小公司和个人开发者也将其纳入预算中。熟悉云工作流程将是2017年一笔不错的投资。
机器学习
机器学习在过去的十二个月中已经呈现爆炸式的增长。通过在今年3月份的AlphaGovsLeeSedol的历史性比赛,它进入了主流。从原始数据中学习的智能计算机系统正在改变我们与移动设备交互的方式。看上去,机器学习将是2017年更大的影响因子。
二、编程语言
学习其中的一门或多门:JS(ES2017),TypeScript,C#,Python,Ruby,PHP7,Java/Kotlin/Scala
JavaScript
JavaScript继续着它令人难以置信的创新步伐。由于Web浏览器的快速发布计划的推动,JS标准每年都会更新。下一个版本,ES2017预计将于2017年中期完成。它将带来许多JS开发人员渴望的特性—用于处理异步函数的аsync/await。感谢Babel,即使在今天,你也可以在每个浏览器中编写ES2017。
TypeScript
TypeScript2.1于2016年年底发布,为旧浏览器带来了async/await,并改进了类型推断。TypeScript是一门编译为JavaScript的静态类型语言。它增加了强大的功能,如经典的OOP模型和可选的静态类型,使得巨大的代码库更容易维护。它是编写Angular2应用程序的推荐语言,建议各位尝试。这是关于它的快速入门指南。
C#
C#7.0预计在2017年发布,作为一门优秀的语言将会有更大的改进。当微软推出开源VisualStudioCode编辑器和.NetCore时,每个人都感到惊讶。它们都可以在Linux,Windows和macOS上运行,并允许你用C#编写快速、高效的应用程序(点击这里阅读更多)。这些工具促成了一个充满活力的社区。
Python
Python3.6将于今年12月发布。它正在巩固其作为开发人员、IT专业人员和科学家的脚本语言的选择的地位。它适用于自动化、Web开发、机器学习和科学计算。Python2/3的选择对于社区来说是一个长达数年的斗争,但是现在你可以自信地选择Python3并享受完整的库支持。对于那些需要额外的性能的使用者,他们可以看看PyPy—一个可启用Python运行时的JIT替代品。
Ruby
Ruby2.3今年早些时候发布了,并带来了性能改进。作为通用脚本语言,Ruby也是一个好选择。Ruby3×3的倡议已经公布,这将使即将到来的Ruby3比当前版本快3倍,而且会在更多的情景中打开使用Ruby的大门。
PHP
PHP7.1是在12月发布的,并带来了细小的增强。这是基于去年7.0版本中的主要性能改进,将PHP转变为构建Web应用程序的快速平台。我们建议把PHPTheRightWay作为良好的做法和构建WebApps的现代做法。
Java
Java9预计在2017年发布,并将带来备受欢迎的新功能,例如用于评估代码的repl、对HTTP2.0的支持和新的API。有才能的Java开发人员和使用该语言开发项目的人对于这些特性有强烈的需求。如果Java不是你需要的,有一些基于JVM的语言,如Kotlin和Scala,可以去了解。
Swift
Swift3于今年早些时候发布。这是苹果对现代编程语言的愿景—简化iOS和macOS上应用程序的开发。Swift是开源的而且吸引了大量的社区。版本4计划于2017年发布,将改进语言特性和引入服务器API,使其成为编写WebApps和后端的一个不错选择。
其他
如果你正在寻找更令人兴奋的东西,可以尝试Crystal和Elixir,它们结合了一个友好的类似Ruby的语法且有着卓越的性能。或者你可以看看函数式语言如Haskell或Clojure。另外两门推荐的快速语言是Rust和Go。
三、前端
学习以下一个或多个:Angular2,Vue.js,Ember,Bootstrap,LESS/SASS
Web平台最近取得了两个重大进展—WebAssembly和ServiceWorkers。它们为构建快速和高效的Web应用程序打开了大门,而且弥补了与NativeApp之间的差距。ServiceWorkers尤其是ProgressiveWebApps的启用技术,并为Web平台的通知提供支持,将来也还会有更多的API。
Angular2
Angular2于今年发布。该框架由Google支持,非常受企业和大公司的欢迎。它具有大量的功能,使在从网络到桌面和移动应用程序中编写任何东西成为可能。框架使用TypeScript编写,这也是在框架中编写应用程序的推荐语言。学习它有很多需要阅读的内容,但我们认为在2017年学习Angular2将是一个很好的投资。
Vue.js
Vue.js今年也发布了2.0版本。它借鉴了Angular,React和Ember中的好想法,并将它们放入一个易于使用的包中。它也比前两个更精简和更快。建议各位都去尝试一下,可参考入门教程。
Ember.js
Ember是JavaScript框架的另一个坚定选择。它支持数据绑定、自动更新模板、组件和服务器端渲染。与其竞争对手相比,它的一个好处是更成熟和稳定。重大更改的频率要低得多,而且社区也重视向后兼容性。这使得该框架成为生命周期长的应用的不错选择。
其他
另外两个值得一看的框架是Aurelia和React。过去的一年中React的生态系统变得越来越复杂,因此很难向初学者推荐。但经验丰富的开发者可以将库与GraphQL,Relay,Flux和Immutable.js组合成一个全面的全栈解决方案。
没提到Bootstrap的前端汇总是不完整的。Bootstrap4目前正处于Alpha阶段,预计在2017会正式发布。值得关注的变化是新的通用卡片组件和Flexbox网格,这使得框架更现代化而且让用户使用它工作更舒心。
SASS和LESS仍然是当今最流行的两种CSS预处理器。虽然vanillaCSS最终对变量进行了支持,但SASS和LESS仍然优先对mixins,函数和代码组织进行支持。如果还没有了解它们,可查看这里的SASS和LESS快速入门指南。
四、后端
学习其中之一:全栈后端框架,一个微框架
后端有很多选择,所有这一切都取决于你对编程语言或特定性能需求的偏好。Web开发中的一个持续趋势是远离后端的业务逻辑,并将该层转换为由前端和移动应用程序使用的API。但一个全栈框架通常是能更简单、更快速地用于开发,并且是许多WebApps的有效选择。
Node.js
Node.js是在浏览器外运行JS的主要方式。今年我们看到它发布了许多新版本,提升了性能以及添加对整个ES6规范的覆盖。Node具有快速构建API、服务器、桌面应用程序甚至机器人的框架,以及创建可以想象到的各种模块的庞大社区。一些你可能想研究的框架:Express,Koa,Next,Nodal。
PHP
PHP首先是一门Web语言,并且有大量的Web框架可供选择。由于其出色的文档和功能,Laravel构造了一个积极的社区。ZendFramework发布了第3版,这标志着这个面向业务的框架的巨大升级。Symfony在今年也发布了很多新的版本,使它作为一个全栈解决方案成为一个更好的选择。
Ruby
对于Ruby,Rails框架是推荐。5.0版本已于2016年发布,为WebSockets,API模式等提供支持。Sinatra也是小应用程序的不错选择,2.0版本预计2017年发布。
Python
Python有以Django和Flask的形式组合的全栈/最小框架。Django1.10在8月发布,为Postgres引入了全文搜索和一个大修改的中间件层。
Java
Java生态系统还有流行的Web框架可供选择。Play和Spark是两个坚定的选择,作为奖励,它们可以与Scala一起使用。
其他
对于爱好者,还有Phoenix可供选择,这是用Elixir语言编写的,并试图成为一个功能完全替代Rails的框架而且具有卓越的性能。如果Elixir是你想在2017年学习的语言之一,不妨尝试Phoenix。
五、数据库
学习以下其中之一:Postgres,MySQL,CouchDB,Redis
PostgreSQL
PostgreSQL今年发布了两个完整版本—9.5和9.6。它们带来了期待已久的UPSERT功能(又名ONDUPLICATEKEYUPDATE)、更好的全文搜索和速度改进,这都归功于并行查询,更高效的复制、聚合、索引和排序。Postgres适用于大规模、TB级规模的数据集以及繁忙的WebApps,所以这些优化都很受欢迎。
MySQL
MySQL8.0将是该数据库的下一个主要版本。正式版预计2017年发布,将给系统带来很多改进。MySQL仍然是更受欢迎的数据库管理系统,整个行业都受益于这些新版本。
NoSQL
对于NoSQL的粉丝,推荐CouchDB。它是一个快速和可扩展的JSON存储系统,公开了一个REST-fulHTTPAPI。这个数据库易于使用,性能卓越。PouchDB是一个开源的JavaScript数据库,完全在浏览器中工作。可通过Couch同步数据。在应用程序离线的时候,可以将用户数据保存在本地,在网络连接可用后自动同步。
Redis
Redis是更受欢迎的Key-Value数据库。它体积小,快速而且通用性好。作为NoSQL数据存储或进程消息传递和同步通道,你可以将其作为智能内存缓存的替代方案。它提供了大量的数据结构可供选择,并且即将到来的4.0版本将有一个模块系统和改进的复制功能。
六、工具
尝试其中的一个或多个:Yarn,Git,VisualStudioCode,Electron,Ansible,Docker
Yarn
Yarn是由Facebook开发的Javascript包管理器。它是对npm命令行工具的升级,提供了更快的安装,更好的安全性和确定性构建。它仍然使用npm包注册表作为其后端,因此可以访问同一个JavaScript模块的生态系统。Yarn与npm使用的package.json格式相兼容。
VisualStudioCode和Atom
两个更受欢迎的开源代码编辑器—VisualStudioCode和Atom在过去12个月中进行了很多不可思议的创新。这两个项目都使用网络技术构建,并吸引了大量的粉丝群体。编辑器有针对大部分语言的语法检查,linting和重构工具的插件。
Git
Git是最流行的源代码版本控制系统。它是无服务器的,你可以将计算机上的任何文件夹转换为存储库。如果你想共享代码,有很多选择,像GitLab,Bitbucket和Github(当然还有码云)。2017年,建议熟悉git命令行,因为它会在比你想象中更多的场景派上用场。
Electron和NW.js
桌面应用程序还没有死,即使WebApp变得越来越强大。有时你需要强大的功能和API,这是网络平台无法提供的。使用诸如Electron和NW.js之类的工具,可以通过使用Web技术编来写桌面应用程序。你可以完全访问操作系统和npm可用的广度模块。要了解这些工具的更多信息,请阅读有关Electron和NW.js的教程。
DevOps
软件开发中的最近趋势是让开发人员负责自己的系统部署—也称为DevOps,这能产生更快的发布和更快地修复生产中的问题。具有运维经验的开发人员会受到公司的高度重视,因此从现在开始熟悉能实现这一目标的技术将是巨大的进步。推荐的一些工具是Ansible和Docker。拥有Linux命令行和基本的系统管理技能也会为助你一臂之力。
七、技术
学习其中之一:云部署,机器学习库,VR开发
云已经赢得了整个软件行业,可以看到大型公司关闭了他们的数据中心而且将其整个基础设施迁移到了云上。目前三个主要平台是AWS,GoogleCloud和Azure。这三个平台都有着功能强大,不断扩展的功能集,包括虚拟机,数据库托管,机器学习服务等。而且价格也正在迅速下降,所以云是小公司和个人开发者可以接触到的。对于2017年,部署一个业余的项目到这些提供商的平台将会是一次很好的学习经历。
人工智能
人工智能是2016年的流行词。语音识别和图像分类只是该技术面向用户的两种应用,人工智能的机器达到甚至超过了人类的性能。当下有很多创业公司将AI和机器学习应用到新领域,也有许多开源项目发布,例如谷歌的TensorFlow和微软的CognitiveToolkit。机器学习是一个与数学非常相关的主题,对于刚刚开始的人,这里有全面的在线课程。
虚拟现实和增强现实
虚拟现实(VR)和增强现实(AR)已经存在了一段时间,最终该技术已经成熟到足以提供一个引人注目的体验。Facebook(OculusRift),Google(Daydream)和Microsoft(WindowsHolographic)都有欢迎第三方开发者加入的虚拟现实平台。VR头戴设备仍然面临挑战,如消除恶心的感觉和在游戏之外提供引人注目的用例。
人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,有兴趣的朋友,可以查阅多智时代,在此为你推荐几篇优质好文:
1.人工智能时代,AI人才都有哪些特征?
http://www.duozhishidai.com/article-1792-1.html
2.大数据携手人工智能,高校人才培养面临新挑战
http://www.duozhishidai.com/article-7555-1.html
3.人工智能,机器学习和深度学习之间,主要有什么差异
http://www.duozhishidai.com/article-15858-1.html
多智时代-人工智能和大数据学习入门网站|人工智能、大数据、物联网、云计算的学习交流网站