2017 年你應該學習的編程語言、框架和工具

圖片描述

在過去的一年裏,軟件開發行業繼續大踏步地向前邁進。回顧 2016 年,咱們看到了更多新興的流行語言、框架和工具,它們改變着咱們的工做方式,讓咱們看到更多的可能。但在這個行業,緊隨潮流是很難的。因此在每一年年末,咱們都會給你提供一些建議,它涉及什麼是最重要的,以及你在將來一年中應該學習什麼。php


大趨勢

漸進式 Web Apps

在 2016 年裏,咱們見證了 Progressive Web App 概念的蓬勃興起。它意味着 Web 應用程序能夠離線工做,並能提供原生移動應用的體驗。它們能夠添加到你的智能設備的主屏幕上,甚至能夠給你發送推送通知,從而彌補與原生移動應用程序的差距。咱們認爲,在 2017 年,漸進式 Web Apps 將變得更加劇要,也值得咱們去探究。在這裏查看相關概述css

聊天機器人

從運行聊天機器人的平臺到構建其的框架,如今每一個人都在談論它。而社區裏也正忙於此活動。(閱讀咱們的介紹)機器人是一款新興的移動應用程序,它讓咱們感到興奮。若是你快點的話,還能夠趕得上這波浪潮。然而一旦新鮮感消失,那麼它只會承擔一些無聊的角色,例如自動化的客服支持。可是,相信咱們能夠實現夢想。html

前端框架的合併

在 JavaScript 社區,隨着使人難以置信的框架和工具的混合,每週都會出現新的東西。直到最近,人們但願舊工具將被新工具所取代,但這不是 2016 年咱們所想看到的。相反,咱們看到了流行框架交換的想法,以及歸入新誕生框架中的創新元素。因此在 2017 年,你該選擇哪一個 JS 框架可有可無,由於它們的功能大可能是能夠比較的。前端

雲端

就目前的形勢看,衆多的公司與開發者們都在積極地擁抱「雲」。雲是可根據不一樣的需求,並經過控制面板來徹底配置的虛擬化計算機基礎設施。目前三大雲提供商爲亞馬遜 AWS、Google Cloud 和 微軟 Azure. 因爲它們的競爭價格一直在下跌,使得小公司和我的開發者也能夠將雲歸入其預算中,因此熟悉雲工做流程將是 2017 年的一筆不錯的投資。vue

機器學習

機器學習(ML)在去年一年中呈現爆炸式的增加。三月份 AlphaGo 與李世石的精彩對決,也讓它成爲了焦點。從原始數據中學習的智能計算機系統,正在改變咱們與移動設備的交互方式。看樣子,機器學習將在 2017 年成爲更大的影響因素。java


編程語言

編程語言

JavaScript 繼續邁着使人難以置信的創新步伐在前進。因爲 Web 瀏覽器的快速發佈計劃,JS 的標準定爲了每一年更新。故「ES2017」預計將在 2017 年中期完成,它也將帶來 JS 開發者求之不得的新特性——用於處理異步函數的аsync/аwait。同時要感謝 Babel ,由於你如今能夠在每一個瀏覽器中編寫 ES2017 了。node

TypeScript 2.1 於 2016 年年末發佈,它將爲舊瀏覽器帶來Async/Await異步解決方案,並改進了類型推斷。TypeScript 是一種編譯爲純 JavaScript 的靜態類型語言。它加強了經典的 OOP 模型和可選的靜態類型,使大代碼庫更易於維護。同時,它也是編寫 Angular 2 應用程序的首選語言,咱們建議你能夠嘗試下。 這是關於它的快速入門指南python

C#7.0 預計在 2017 年發佈,做爲一門優秀的編程語言,它也將獲得更大的改進。當微軟推出開源的 Visual Studio 代碼編輯器和 .Net Core 時,這一舉動讓衆人都感到驚訝萬分。它們不只能夠在 Linux、Windows 和 macOS 操做系統中運行,並且你能夠在 C# 中編寫快速、高效的應用程序(在這裏閱讀更多)。同時,這兩種工具也都造成了充滿活力的社區。相信,它們將在 2017 年會給咱們帶來更多的驚喜。mysql

Python 3.6 版本將於 12 月發佈。它正在鞏固自身在開發人員、IT 專業人員和科學家在腳本語言選擇中的地位。它適用於自動化、Web開發、機器學習和科學計算。雖然 Python 2.X 與 3.X 版本的割裂,對於社區來講是一個長達數年的鬥爭,可是就目前而言,你能夠自信地選擇 Python 3 並享受完整的庫支持。而對於那些須要額外性能的朋友,建議大家看看 PyPy,一個可啓用 Python 運行時 JIT 的替代品。react

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、PHP七、Java/Kotlin/Scala.


前端開發

前端

近期 Web 平臺取得了兩個重大的進展:Web Assembly 字節碼技術和 Service Workers 技術。它們打開了快速、高效的 Web 應用程序的大門,而且有效的彌補了編譯本地應用上的差距。Service Workers 是針對漸進式 Web App 的啓動技術,它爲 Web 平臺提供了通知上的支持,未來也會有更多的 API.

Angular.js 2 在今年也已經發佈了。該框架由 Google 進行維護,受到了衆多企業和大公司的青睞。它所具有衆多的功能,也爲從網絡到桌面以及移動應用程序中編寫任何東西成爲了可能。而它的框架也是用 TypeScript 所編寫的,這也是寫應用程序推薦的編程語言。雖然學習它還須要閱讀更多的內容,但咱們認爲在 2017 年學習 Angular 2 將是一個很不錯的投資。

在今年咱們也看到了 Vue.js 2.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 二、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.59.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程序獅

來源:慕課網

相關文章
相關標籤/搜索