2017 年你应该学习的编程语言、框架和工具(转)

 



 
摘要: 2016 年在开发者圈子中许多新的技术和概念层出不穷,人工智能、机器学习、Progressive Web Apps 等等,各类语言、框架和工具的更新也是让人看得眼花缭乱。2017 年,做为开发者应该跟随潮流仍是理性选择新技术?

 

软件开发行业继续向前大步迈进。 在 2016 年,咱们看到了不少新版本的流行语言、框架和工具。它给了咱们更多的支持,也改变了咱们的工做方式。紧跟潮流是很难的,因此在每一年年末,咱们会给你介绍什么是重要的,并且应该在将来十二个月内学习。javascript

1、趋势

Progressive Web Apps

  • 在 2016 年,咱们看到了 Progressive Web App 概念的兴起。它表明了脱机工做的 Web 应用程序,并提供相似 Native App 的体验。它们能够添加到你的智能设备的主屏幕,甚至能够给你发送推送通知,弥补了与本地移动应用程序的差距。咱们认为,在 2017 年,PWA 将变得更加剧要,更值得探讨。查看相关概述

Progressive Web App(PWA) 是 Google 在 Web 平台开始推广的一个新概念,能够理解为是尽量借助目前的新技术(好比 Service Worker,Push Notification 及其余展示层的新技术)以加强 Web App 的体验和功能,让 Web App 的体验无限接近 Native App。PWA 并不仅是在移动设备上使用,有现代浏览器存在的地方就能够有 PWA。PWA 也不是 Chrome Only,现代浏览器基本都支持。php

聊天机器人

  • 如今每一个人都在谈论聊天机器人。从运行它们的平台到构建它们的框架,社区也正在忙于各类活动(阅读介绍)。机器人是新的移动应用程序,若是你快点的话也能够在你们都感到新奇时遇上浪潮。一旦新奇消退,机器人可能会被降级到一些无聊的角色,如自动客服。但不管怎样,咱们均可以梦想嘛!

前端框架的合并

  • 在 JavaScript 社区,有着使人难以置信的框架和工具的混合,几乎每一个星期都会出现新的。直到最近,人们指望旧的工具将被新的替代,但这不是咱们在 2016 年看到的。相反,咱们看到了流行的框架交换想法以及采纳由新诞生的框架提出的创新。因此在 2017 年,该选择哪一个框架做为主要 JS 框架不是很重要,它们的功能大可能是可比较的。

云端

  • 各地的公司和开发者都在积极地拥抱“云”。云是虚拟化的计算机基础架构,可根据须要提供,并可从控制面板中彻底配置。目前三大云提供商分别是 AWS,Google Cloud 和 Azure。因为其持续的竞争价格一直在下跌,所以小公司和我的开发者也将其归入预算中。熟悉云工做流程将是 2017 年一笔不错的投资。

机器学习

  • 机器学习在过去的十二个月中已经呈现爆炸式的增加。经过在今年 3 月份的 AlphaGo vs Lee Sedol 的历史性比赛,它进入了主流。从原始数据中学习的智能计算机系统正在改变咱们与移动设备交互的方式。看上去,机器学习将是 2017 年更大的影响因子。

2、编程语言

 

JavaScript

  • JavaScript 继续着它使人难以置信的创新步伐。因为 Web 浏览器的快速发布计划的推进,JS 标准每一年都会更新。下一个版本,ES2017 预计将于 2017 年中期完成。它将带来许多 JS 开发人员渴望的特性 — 用于处理异步函数的 аsync/await 。感谢 Babel,即便在今天,你也能够在每一个浏览器中编写 ES2017。

TypeScript

  • TypeScript 2.1 于 2016 年年末发布,为旧浏览器带来了 async/await,并改进了类型推断。TypeScript 是一门编译为 JavaScript 的静态类型语言。它增长了强大的功能,如经典的 OOP 模型和可选的静态类型,使得巨大的代码库更容易维护。它是编写 Angular 2 应用程序的首选语言,建议各位尝试。这是关于它的快速入门指南

C#

  • C# 7.0 预计在 2017 年发布,做为一门优秀的语言将会有更大的改进。当微软推出开源 Visual Studio Code 编辑器 和 .Net Core 时,每一个人都感到惊讶。它们均可以在 Linux,Windows 和 macOS 上运行,并容许你用 C# 编写快速、高效的应用程序(点击这里阅读更多)。这些工具促成了一个充满活力的社区。

Python

  • Python 3.6 将于今年 12 月发布。它正在巩固其做为开发人员、IT 专业人员和科学家的脚本语言的选择的地位。它适用于自动化、Web 开发、机器学习和科学计算。Python 2/3 的选择对于社区来讲是一个长达数年的斗争,可是如今你能够自信地选择 Python 3 并享受完整的库支持。对于那些须要额外的性能的使用者,他们能够看看 PyPy — 一个可启用 Python 运行时的 JIT 替代品 。

Ruby

  • Ruby 2.3 今年早些时候发布了,并带来了性能改进。做为通用脚本语言,Ruby 也是一个好选择。 Ruby 3×3 的倡议已经公布,这将使即将到来的 Ruby 3 比当前版本快 3 倍,并且会在更多的情景中打开使用 Ruby 的大门。

PHP

  • PHP 7.1 是在 12 月发布的,并带来了细小的加强。 这是基于去年 7.0 版本中的主要性能改进,将 PHP 转变为构建 Web 应用程序的快速平台。咱们建议把 PHP The Right Way 做为良好的作法和构建 Web Apps 的现代作法。

Java

  • Java 9 预计在 2017 年发布,并将带来备受欢迎的新功能,例如用于评估代码的 repl、对 HTTP 2.0 的支持和新的 API。有才能的 Java 开发人员和使用该语言开发项目的人对于这些特性有强烈的需求。若是 Java 不是你须要的,有一些基于 JVM 的语言,如 Kotlin 和 Scala,能够去了解。

Swift

  • Swift 3 于今年早些时候发布。这是苹果对现代编程语言的愿景 — 简化 iOS 和 macOS 上应用程序的开发。Swift 是开源的并且吸引了大量的社区。版本 4 计划于 2017 年发布,将改进语言特性和引入服务器 API,使其成为编写 Web Apps 和后端的一个不错选择。

其余

  • 若是你正在寻找更使人兴奋的东西,能够尝试 Crystal 和 Elixir,它们结合了一个友好的相似 Ruby 的语法且有着卓越的性能。或者你能够看看函数式语言如 Haskell 或 Clojure。另外两门推荐的快速语言是 Rust 和 Go

学习其中的一门或多门:JS(ES2017),TypeScript,C#,Python,Ruby,PHP7,Java/Kotlin/Scalacss

3、前端

 

Web 平台最近取得了两个重大进展 — Web Assembly 和 Service Workers。它们为构建快速和高效的 Web 应用程序打开了大门,并且弥补了与 Native App 之间的差距。Service Workers 尤为是 Progressive Web Apps 的启用技术,并为 Web 平台的通知提供支持,未来也还会有更多的 API。html

Angular 2

  • Angular 2 于今年发布。该框架由 Google 支持,很是受企业和大公司的欢迎。它具备大量的功能,使在从网络到桌面和移动应用程序中编写任何东西成为可能。框架使用 TypeScript 编写,这也是在框架中编写应用程序的推荐语言。学习它有不少须要阅读的内容,但咱们认为在 2017 年学习 Angular 2 将是一个很好的投资。

Vue.js

  • Vue.js 今年也发布了 2.0 版本。它借鉴了 Angular,React 和 Ember 中的好想法,并将它们放入一个易于使用的包中。它也比前两个更精简和更快。建议各位都去尝试一下,可参考入门教程

Ember.js

  • Ember 是 JavaScript 框架的另外一个坚决选择。它支持数据绑定、自动更新模板、组件和服务器端渲染。与其竞争对手相比,它的一个好处是更成熟和稳定。重大更改的频率要低得多,并且社区也重视向后兼容性。这使得该框架成为生命周期长的应用的不错选择。

其余

  • 另外两个值得一看的框架是 Aurelia 和 React。过去的一年中 React 的生态系统变得愈来愈复杂,所以很难向初学者推荐。但经验丰富的开发者能够将库与 GraphQLRelayFlux 和 Immutable.js 组合成一个全面的全栈解决方案。
  • 没提到 Bootstrap 的前端汇老是不完整的。Bootstrap 4 目前正处于 Alpha 阶段,预计在 2017 会正式发布。值得关注的变化是新的通用卡片组件和 Flexbox 网格(查看与常规网格的对比),这使得框架更现代化并且让用户使用它工做更舒心。
  • SASS 和 LESS 仍然是当今最流行的两种 CSS 预处理器。虽然 vanilla CSS 最终对变量进行了支持,但 SASS 和 LESS 仍然优先对 mixins,函数和代码组织进行支持。 若是尚未了解它们,可查看这里的 SASS 和 LESS 快速入门指南。

学习如下一个或多个:Angular 2,Vue.js,Ember,Bootstrap,LESS/SASS前端

4、后端

 

后端有不少选择,全部这一切都取决于你对编程语言或特定性能需求的偏好。Web 开发中的一个持续趋势是远离后端的业务逻辑,并将该层转换为由前端和移动应用程序使用的 API。但一个全栈框架一般是能更简单、更快速地用于开发,而且是许多 Web Apps 的有效选择。vue

Node.js

  • Node.js 是在浏览器外运行 JS 的主要方式。今年咱们看到它发布了许多新版本,提高了性能以及添加对整个 ES6 规范的覆盖。Node 具备快速构建 API、服务器、桌面应用程序甚至机器人的框架,以及建立能够想象到的各类模块的庞大社区。一些你可能想研究的框架:ExpressKoaNextNodal

PHP

  • PHP 首先是一门 Web 语言,而且有大量的 Web 框架可供选择。因为其出色的文档和功能,Laravel 构造了一个积极的社区。Zend Framework 发布了第 3 版,这标志着这个面向业务的框架的巨大升级。Symfony 在今年也发布了不少新的版本,使它做为一个全栈解决方案成为一个更好的选择。

Ruby

  • 对于 Ruby,Rails 框架是首选。5.0 版本已于 2016 年发布,为 Web Sockets,API 模式等提供支持。Sinatra 也是小应用程序的不错选择,2.0 版本预计 2017 年发布。

Python

  • Python 有以 Django 和 Flask 的形式组合的全栈/最小框架。Django 1.10 在 8 月发布,为 Postgres 引入了全文搜索和一个大修改的中间件层。

Java

  • Java 生态系统还有流行的 Web 框架可供选择。Play 和 Spark 是两个坚决的选择,做为奖励,它们能够与 Scala 一块儿使用。

其余

  • 对于爱好者,还有 Phoenix 可供选择,这是用 Elixir 语言编写的,并试图成为一个功能彻底替代 Rails 的框架并且具备卓越的性能。若是 Elixir 是你想在 2017 年学习的语言之一,不妨尝试 Phoenix。

学习其中之一:全栈后端框架,一个微框架java

5、数据库

 

PostgreSQL

  • PostgreSQL 今年发布了两个完整版本 — 9.5 和 9.6。它们带来了期待已久的 UPSERT 功能(又名  ON DUPLICATE KEY UPDATE)、更好的全文搜索和速度改进,这都归功于并行查询,更高效的复制、聚合、索引和排序。Postgres 适用于大规模、TB 级规模的数据集以及繁忙的 Web Apps,因此这些优化都很受欢迎。

MySQL

  • MySQL 8.0 将是该数据库的下一个主要版本。正式版预计 2017 年发布,将给系统带来不少改进。MySQL 仍然是最受欢迎的数据库管理系统,整个行业都受益于这些新版本。

NoSQL

  • 对于 NoSQL 的粉丝,推荐 CouchDB。它是一个快速和可扩展的 JSON 存储系统,公开了一个 REST-ful HTTP API。这个数据库易于使用,性能卓越。PouchDB 是一个开源的 JavaScript 数据库,彻底在浏览器中工做。可经过 Couch 同步数据。在应用程序离线的时候,能够将用户数据保存在本地,在网络链接可用后自动同步。

Redis

  • Redis 是最受欢迎的 Key-Value 数据库。它体积小,快速并且通用性好。做为 NoSQL 数据存储或进程消息传递和同步通道,你能够将其做为智能内存缓存的替代方案。它提供了大量的数据结构可供选择,而且即将到来的 4.0 版本将有一个模块系统和改进的复制功能。

学习如下其中之一:Postgres,MySQL,CouchDB,Redisnode

6、工具

 

Yarn

  • Yarn 是由 Facebook 开发的 Javascript 包管理器。它是对 npm 命令行工具的升级,提供了更快的安装,更好的安全性和肯定性构建。它仍然使用 npm 包注册表做为其后端,所以能够访问同一个 JavaScript 模块的生态系统。Yarn 与 npm 使用的 package.json 格式相兼容。

Visual Studio Code 和 Atom

  • 两个最受欢迎的开源代码编辑器 — Visual Studio Code 和 Atom 在过去 12 个月中进行了不少难以想象的创新。这两个项目都使用网络技术构建,并吸引了大量的粉丝群体。编辑器有针对大部分语言的语法检查,linting 和重构工具的插件。

Git

  • Git 是最流行的源代码版本控制系统。它是无服务器的,你能够将计算机上的任何文件夹转换为存储库。若是你想共享代码,有不少选择,像 GitLab,Bitbucket 和 Github(固然还有码云)。2017年,建议熟悉 git 命令行,由于它会在比你想象中更多的场景派上用场。

Electron 和 NW.js

  • 桌面应用程序尚未死,即便 Web App 变得愈来愈强大。有时你须要强大的功能和 API,这是网络平台没法提供的。使用诸如 Electron 和 NW.js 之类的工具,能够经过使用 Web 技术编来写桌面应用程序。你能够彻底访问操做系统和 npm 可用的广度模块。要了解这些工具的更多信息,请阅读有关 Electron 和 NW.js 的教程。

DevOps

  • 软件开发中的最近趋势是让开发人员负责本身的系统部署 — 也称为 DevOps,这能产生更快的发布和更快地修复生产中的问题。具备运维经验的开发人员会受到公司的高度重视,所以从如今开始熟悉能实现这一目标的技术将是巨大的进步。推荐的一些工具是 Ansible 和 Docker。拥有 Linux 命令行和基本的系统管理技能也会为助你一臂之力。

尝试其中的一个或多个:Yarn,Git,Visual Studio Code,Electron,Ansible,Dockerpython

7、技术

 

云已经赢得了整个软件行业,能够看到大型公司关闭了他们的数据中心并且将其整个基础设施迁移到了云上。目前三个主要平台是 AWSGoogle Cloud 和 Azure。这三个平台都有着功能强大,不断扩展的功能集,包括虚拟机,数据库托管,机器学习服务等。并且价格也正在迅速降低,因此云是小公司和我的开发者能够接触到的。对于 2017 年,部署一个业余的项目到这些提供商的平台将会是一次很好的学习经历。mysql

人工智能

  • 人工智能是 2016 年的流行词。语音识别和图像分类只是该技术面向用户的两种应用,人工智能的机器达到甚至超过了人类的性能。当下有不少创业公司将 AI 和机器学习应用到新领域,也有许多开源项目发布,例如谷歌的 Tensor Flow 和微软的 Cognitive Toolkit。机器学习是一个与数学很是相关的主题,对于刚刚开始的人,这里有全面的在线课程

虚拟现实和加强现实

  • 虚拟现实(VR)和加强现实(AR)已经存在了一段时间,最终该技术已经成熟到足以提供一个引人注目的体验。Facebook(Oculus Rift),Google(Daydream)和 Microsoft(Windows Holographic)都有欢迎第三方开发者加入的虚拟现实平台。VR 头戴设备仍然面临挑战,如消除恶心的感受和在游戏以外提供引人注目的用例。

学习其中之一:云部署,机器学习库,VR 开发

相关文章
相关标签/搜索