2017年"程序媛和工程狮"绝对不能忽视的编程语言、框架和工具
IT程序狮· 9 天前
在过去的一年里,软件开发行业继续大踏步地向前迈进。回顾 2016 年,我们看到了更多新兴的流行语言、框架和工具,它们改变着我们的工作方式,让我们看到更多的可能。但在这个行业,紧随潮流是很难的。所以在每年年底,我们都会给你提供一些建议,它涉及什么是最重要的,以及你在未来一年中应该学习什么。
大趋势
渐进式 Web Apps
在 2016 年里,我们见证了 Progressive Web App 概念的蓬勃兴起。它意味着 Web 应用程序可以离线工作,并能提供原生移动应用的体验。它们可以添加到你的智能设备的主屏幕上,甚至可以给你发送推送通知,从而弥补与原生移动应用程序的差距。我们认为,在 2017 年,渐进式 Web Apps 将变得更加重要,也值得我们去探究。在这里查看相关概述。
聊天机器人
从运行聊天机器人的平台到构建其的框架,现在每个人都在谈论它。而社区里也正忙于此活动。(阅读我们的介绍)机器人是一款新兴的移动应用程序,它让我们感到兴奋。如果你快点的话,还可以赶得上这波浪潮。然而一旦新鲜感消失,那么它只会承担一些无聊的角色,例如自动化的客服支持。但是,相信我们可以实现梦想。
前端框架的合并
在 JavaScript 社区,随着令人难以置信的框架和工具的混合,每周都会出现新的东西。直到最近,人们希望旧工具将被新工具所取代,但这不是 2016 年我们所想看到的。相反,我们看到了流行框架交换的想法,以及纳入新诞生框架中的创新元素。所以在 2017 年,你该选择哪个 JS 框架无关紧要,因为它们的功能大多是可以比较的。
云端
就目前的形势看,众多的公司与开发者们都在积极地拥抱“云”。云是可根据不同的需求,并通过控制面板来完全配置的虚拟化计算机基础设施。目前三大云提供商为亚马逊 AWS、Google Cloud 和 微软 Azure. 由于它们的竞争价格一直在下跌,使得小公司和个人开发者也可以将云纳入其预算中,所以熟悉云工作流程将是 2017 年的一笔不错的投资。
机器学习
机器学习(ML)在去年一年中呈现爆炸式的增长。三月份 AlphaGo 与李世石的精彩对决,也让它成为了焦点。从原始数据中学习的智能计算机系统,正在改变我们与移动设备的交互方式。看样子,机器学习将在 2017 年成为更大的影响因素。
编程语言
JavaScript 继续迈着令人难以置信的创新步伐在前进。由于 Web 浏览器的快速发布计划,JS 的标准定为了每年更新。故“ES2017”预计将在 2017 年中期完成,它也将带来 JS 开发者梦寐以求的新特性——用于处理异步函数的аsync/аwait。同时要感谢 Babel ,因为你现在可以在每个浏览器中编写 ES2017 了。
TypeScript 2.1 于 2016 年年底发布,它将为旧浏览器带来Async/Await异步解决方案,并改进了类型推断。TypeScript 是一种编译为纯 JavaScript 的静态类型语言。它增强了经典的 OOP 模型和可选的静态类型,使大代码库更易于维护。同时,它也是编写 Angular 2 应用程序的首选语言,我们建议你可以尝试下。 这是关于它的快速入门指南。
C#7.0 预计在 2017 年发布,作为一门优秀的编程语言,它也将得到更大的改进。当微软推出开源的 Visual Studio 代码编辑器和 .Net Core 时,这一举动让众人都感到惊讶万分。它们不仅可以在 Linux、Windows 和 macOS 操作系统中运行,而且你可以在 C# 中编写快速、高效的应用程序(在这里阅读更多)。同时,这两种工具也都形成了充满活力的社区。相信,它们将在 2017 年会给我们带来更多的惊喜。
Python 3.6 版本将于 12 月发布。它正在巩固自身在开发人员、IT 专业人员和科学家在脚本语言选择中的地位。它适用于自动化、Web开发、机器学习和科学计算。虽然 Python 2.X 与 3.X 版本的割裂,对于社区来说是一个长达数年的斗争,但是就目前而言,你可以自信地选择 Python 3 并享受完整的库支持。而对于那些需要额外性能的朋友,建议你们看看 PyPy,一个可启用 Python 运行时 JIT 的替代品。
Ruby 2.3 已在今年早些时候发布了,并带来了一些性能上的改进。同时,Ruby 也是学习通用脚本语言的一个好选择,但是只有当它和 Rails 相配合的时候才能发挥出其最大的功效。伴随 Ruby 3×3 计划的宣布,也促使了即将到来的 Ruby 3 版本比当前版本的运行速度快 3 倍。而你也可以在更多的情景中,打开使用 Ruby 的大门。
PHP 7.1 版本已在 12 月发布,并对该语言进行了小范围的增强。这个版本基于了去年 7.0 版本主要性能的改进,将 PHP 转变为构建 Web 应用程序的快速平台。如果你打算学习,我们推荐你看看 PHP 之道中的最佳实践。
Java 9 预计在 2017 年发布,它将带来一些备受开发者们所欢迎的新功能,例如评估代码的 repl、HTTP 2.0 的支持以及一些新的 API . 对于有才能的 Java 开发人员和广泛使用该语言进行项目研发的人来说,他们对这些新特性是有强烈需求的。如果 Java 不是你的“菜”,这里还有一些基于 JVM 的编程语言,像 Kotlin 和 Scala,你也可以了解下。
Swift 3 已经在今年早些时候发布了。简化 iOS 和 MacOS 上应用程序的开发,是苹果公司对现代编程语言的愿景。由于 Swift 是开源的,所以也涌现了大量的社区。Swift 4 计划于 2017 年发布,此版本将会改进语言并引入服务器 API,致力使其成为编写 Web 应用程序和后端的不错选择。
如果你在寻找一些让你感到兴奋的东西,你可以尝试下 Crystal 和 Elixir。它们都拥有类似与 Ruby 的友好语法以及卓越的性能,或者你也可以看看类似于 Haskell 或 Clojure 这类函数式语言。另外两种快速编程语言,我们推荐给你 Rust 和 Go 语言。
挑一个或多个学习: JS (ES2017)、TypeScript、C#、Python、Ruby、PHP7、Java/Kotlin/Scala.
前端
近期 Web 平台取得了两个重大的进展:Web Assembly 字节码技术和 Service Workers 技术。它们打开了快速、高效的 Web 应用程序的大门,并且有效的弥补了编译本地应用上的差距。Service Workers 是针对渐进式 Web App 的启动技术,它为 Web 平台提供了通知上的支持,将来也会有更多的 API.
Angular.js 2 在今年也已经发布了。该框架由 Google 进行维护,受到了众多企业和大公司的青睐。它所具备众多的功能,也为从网络到桌面以及移动应用程序中编写任何东西成为了可能。而它的框架也是用 TypeScript 所编写的,这也是写应用程序推荐的编程语言。虽然学习它还需要阅读更多的内容,但我们认为在 2017 年学习 Angular 2 将是一个很不错的投资。
在今年我们也看到了 Vue.js2.0 版本的发布,它借鉴了 Angular,React 和 Ember 中好的想法,并且比前两个框架更轻量、更快速。我们建议你今年要试一试,你可以从我们的 Vue.js 教程开始。
Ember 是 JavaScript 框架的另一个不错的选择。它支持数据双向绑定,并能够自动更新模板、组件以及服务器端渲染。与其他竞争者相比,使用它的好处是它更加成熟与稳定,而其框架的重大更改频率之低,社区重视向后的兼容性,也使得此框架成为开发较长生命周期的应用程序的不二之选。
另外两个值得一提的框架是 Aurelia 和 React。在过去的一年里 React 的生态系统变得越来越复杂,因此很难推荐给初学者。但经验丰富的开发者可以将库与 GraphQL、Relay、Flux 和 Immutable.js 组合成一个全面完整的全栈解决方案。
没有提及 Bootstrap 的前端终归是不完整的。而 Bootstrap 4 目前也正处于 Alpha 阶段,预计在 2017 年发布。值得关注的变化是新的通用卡片组件和 Flexbox 网格(查看与常规网格的对比),这使得框架更加现代化,并且让用户使用它进行工作时更加得舒心。
SASS 和 LESS 仍然是当前最流行的两种 CSS 预处理器。尽管 Vanilla CSS 已经实现了对变量的支持,但对 mixins、函数和代码组织上的支持,SASS 和 LESS 依然更胜一筹。如果您还没有了解它们,可以看看我们的 SASS 和 LESS 快速入门指南。
挑一个或多个学习:Angular 2、Vue.js、Ember、Bootstrap、LESS/SASS
后端
后端有众多的选择,但所有的选择都取决于你对编程语言或特定性能需求的偏好上。Web 开发中的一个持续趋势是远离后端的业务逻辑,并将该层转换为由前端和移动应用程序使用的 API 上。但一个全栈的框架通常是能够更简单、快速的应用于开发,并且它仍然是 Web 应用程序最有效的选择。
Node.js 是在浏览器之外运行 JS 的主要方式。在今年,我们也看到了它发布了许多新的版本。除了提升了性能外,也添加了对整个 ES6 规范的覆盖。Node 具有构建快速 API、服务器、桌面应用程序甚至机器人的框架,同时它可以创建想象到的各种模块的庞大社区。这里有一些你可能想研究的框架:Express、Koa、Next、Nodal.
PHP 是一种拥有大量 Web 框架可供你选择的 Web 开发语言。由于其拥有出色的文档和功能,Laravel 已建成了一个活跃的社区。Zend Framework 发布了第 3 版,这标志着面向业务框架的巨大升级。在今年,我们也看到了 Symfony 发行了很多新的版本,使它成为了全栈解决方案中更好的选择。
对于 Ruby 来说,Rails 框架是首选的。Rails 5.0 版本已于今年发布,并为 Web Sockets、API 模型等方面提供了支持。对于小型应用程序而言,Sinatra 也是一个不错的选择,Sinatra 2.0版本预计在 2017 年发布。
Python 有着以 Django 和 Flask 为组合的全栈/迷你型框架。Django 1.10 已在今年 8 月发布了,它为 Postgres 引入了全文搜索和一个重大修改的中间件层。
Java 的生态系统中,依旧有很多流行的 Web 框架可供你选择。Play 和 Spark 便是两个必备的选择,同时它们也可以与 Scala 一起使用。
对于编程爱好者来说,你还可以选择 Phoenix,它是用 Elixir 编写的,它试图成为一个具有卓越的性能,并能完整替代 Rails 功能的框架。如果 Elixir 是你想在 2017 年学习的语言之一,不妨尝试下 Phoenix .
学习其中之一:全栈后端框架、一个微框架
数据库
PostgreSQL 在今年已经发行了两个完整的版本——9.5和9.6.它们带来了我们从 MySQL 就开始期盼的 UPSERT (aka ON DUPLICATE KEY UPDATE)功能,以及更好的全文搜索和速度改进功能,这多亏了并行查询,更高效的复制、聚合、索引和排序。Postgres 适用于大规模、TB 级规模的数据集以及繁忙的 Web Apps,这些优化都是很受欢迎的。
MySQL 8.0 将是数据库的下一个主要版本。预计在 2017 年发布,它将给系统带来更多的改进。MySQL 仍然是最受欢迎的数据库管理系统,整个行业都受益于这些新的版本。
对于 NoSQL 的粉丝们,我们推荐 CouchDB。它是一个快速、可扩展的 JSON 存储系统,同时公开了一个 REST-ful HTTP API.此数据库易于使用,同时性能卓越。与 CouchDB 对应的是PouchDB ,它可以完全在浏览器中工作,并且可以与 Couch 同步数据。所以你可以在离线应用程序上使用 PouchDB ,联网后它会自动同步数据。
Redis 是我们最喜欢的键-值存储型数据库。它体积小、快速并且有丰富的特性。作为 NoSQL 数据存储或进程消息和同步通道,你可以使用它作为智能分布式高速缓存系统的可替代方案。它提供了大量的数据结构可供选择,并且在即将到来的 4.0 版本中会有一个模块系统,并将改进复制功能。
学习其中之一:Postgres、MySQL、CouchDB、Redis.
工具
Yarn 是由 Facebook 开发的 Node.js 包管理器。它是对 npm 命令行工具的升级,并提供了更快速地安装,更好的安全性以及确定性的构建。它仍然使用 npm 包注册表作为其后端,因此您甚至可以访问同一个 JavaScript 模块的生态系统。Yarn 与 npm 使用的 package.json 格式是兼容的,区别在于前者能实现快速安装。
作为两个最受开发者欢迎的开源代码编辑器——Visual Studio Code 和 Atom ,在过去一年中,我们看到了它们进行了很多不可思议的创新。这两个项目都是使用 Web 技术构建的,社区中也吸引了大量的粉丝。编辑器具备高扩展,提供了诸如语法检查、linting 和重构工具的相关插件。
作为最流行的源代码版本控制系统,Git 当之无愧。虽然它无服务器,但你可以将计算机上的任何文件夹转换为存储库。如果你想共享代码,像 GitLab、Bitbucket 和GitHub 都是不错的选择。在 2017 年,我们建议你熟悉 git 命令行,因为它会比您想象的更加方便。
桌面应用程序依然没有消失。即使 Web App 变得越来越强大,有时你依然会需要强大的功能和 API,这是 Web 平台无法提供的。你可以使用诸如 Electron 和 NW.js 之类的工具,利用 Web 技术来创建桌面应用程序,同时你也可以完全访问操作系统和 npm 可用的广度模块。要了解这些工具的更多信息,请阅读有关 Electron 和 NW.js 的教程。
软件开发团队的最新趋势是让开发人员负责自己软件项目中的部署,也称为 DevOps.这能产生更快地发布和更迅速地修复生产中出现的问题。而具有运维经验的开发人员将得到公司的高度重视,因此从现在开始熟悉能够实现这一目标的技术,将对你来说是一个巨大的提升。我们推荐的工具是 Ansible 和 Docker 。同时,具备 Linux 命令行和基本系统管理技能,也将为你的职场生涯大大的加分。
尝试一个或多个学习:Yarn、Git、Visual Studio Code、Electron、Ansible、Docker.
技术
随着大型公司数据中心的关闭,并调整其整体的基础设施到云上,我们可以看到云已经赢得了整个软件行业。目前三个主要的平台是 AWS, Google Cloud 和 Azure。这三大平台都有着强大的功能,同时不断地扩展其功能集,涉及虚拟机、数据库托管、机器学习服务等。由于价格的迅速下降,小公司和个人开发者也都可以接触到云。对于 2017 年,在云上部署一个业余项目将是一个很好的学习积累。
人工智能是 2016 年的流行词。语音识别和图像分类只是该技术在面向用户应用程序的两个部分,人工智能设备的性能达到甚至超越了人类的水平。当下众多的创业公司也将 AI 和机器学习应用到其新的领域,同时许多相关的开源项目也已经发布,例如谷歌的 Tensor Flow 和微软的 Cognitive Toolkit。机器学习是一个与数学非常相关的主题,对于刚刚开始的人,这里有全面的在线课程供你学习。
虚拟现实(VR)和增强现实(AR)已经存在了一段时间,而最终该技术已经成熟到足以提供引人注目的体验。Facebook(Oculus Rift),Google(Daydream)和 Microsoft(Windows Holographic)都有欢迎第三方开发者加入的虚拟现实平台。然而 VR 穿戴设备依然面临着艰巨的挑战。例如如何消除穿戴者恶心的感觉,以及脱离了游戏圈,又如何创造令人信服的使用案例。
挑一种学习:云部署、机器学习库、VR 开发
如果觉得文章不错,不妨点个赞。^_^
注:
- 若有翻译不当之处,还请大家多多指正,我会及时修改;
- 本文版权归原作者所有。如需转载译文,烦请注明出处,谢谢!
英文原文:The Languages, Frameworks and Tools You Should Learn in 2017
作者:Martin Angelov
译者:IT程序狮
译文源自:https://zhuanlan.zhihu.com/p/24369470