這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
在過去的一年裡,軟體開發行業繼續大踏步地向前邁進。回顧 2016 年,我們看到了更多新興的流行語言、架構和工具,它們改變著我們的工作方式,讓我們看到更多的可能。但在這個行業,緊隨潮流是很難的。所以在每年年底,我們都會給你提供一些建議,它涉及什麼是最重要的,以及你在未來一年中應該學習什麼。
大趨勢
漸進式 Web Apps
在 2016 年裡,我們見證了 Progressive Web App 概念的蓬勃興起。它意味著 Web 應用程式可以離線工作,並能提供原生行動裝置 App的體驗。它們可以添加到你的智慧型裝置的主畫面上,甚至可以給你發送推播通知,從而彌補與原生行動裝置 App程式的差距。我們認為,在 2017 年,漸進式 Web Apps 將變得更加重要,也值得我們去探究。在這裡查看相關概述。
聊天機器人
從運行聊天機器人的平台到構建其的架構,現在每個人都在談論它。而社區裡也正忙於此活動。(閱讀我們的介紹)機器人是一款新興的行動裝置 App程式,它讓我們感到興奮。如果你快點的話,還可以趕得上這波浪潮。然而一旦新鮮感消失,那麼它只會承擔一些無聊的角色,例如自動化的客服支援。但是,相信我們可以實現夢想。
前端架構的合并
在 JavaScript 社區,隨著令人難以置信的架構和工具的混合,每周都會出現新的東西。直到最近,人們希望舊工具將被新工具所取代,但這不是 2016 年我們所想看到的。相反,我們看到了流行架構交換的想法,以及納入新誕生架構中的創新元素。所以在 2017 年,你該選擇哪個 JS 架構無關緊要,因為它們的功能大多是可以比較的。
雲端
就目前的形勢看,眾多的公司與開發人員們都在積極地擁抱“雲”。雲是可根據不同的需求,並通過控制台來完全配置的虛擬化電腦基礎設施。目前三大雲供應商為亞馬遜 AWS、Google Cloud 和 微軟 Azure. 由於它們的競爭價格一直在下跌,使得小公司和個人開發人員也可以將雲納入其預算中,所以熟悉雲工作流程將是 2017 年的一筆不錯的投資。
機器學習
機器學習(ML)在去年一年中呈現爆炸式的增長。三月份 AlphaGo 與李世石的精彩對決,也讓它成為了焦點。從未經處理資料中學習的智能電腦系統,正在改變我們與行動裝置的互動方式。看樣子,機器學習將在 2017 年成為更大的影響因素。
程式設計語言
JavaScript 繼續邁著令人難以置信的創新步伐在前進。由於 網頁瀏覽器的快速發布計劃,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 進行維護,受到了眾多企業和大公司的青睞。它所具備眾多的功能,也為從網路到案頭以及行動裝置 App程式中編寫任何東西成為了可能。而它的架構也是用 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 2、Vue.js、Ember、Bootstrap、LESS/SASS
後端
後端有眾多的選擇,但所有的選擇都取決於你對程式設計語言或特定效能需求的偏好上。Web 開發中的一個持續趨勢是遠離後端的商務邏輯,並將該層轉換為由前端和行動裝置 App程式使用的 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 的教程。
軟體Team Dev中的最新趨勢是讓開發人員負責自己軟體項目中的部署,也稱為 DevOps.這能產生更快地發布和更迅速地修複生產中出現的問題。而具有營運經驗的開發人員將得到公司的高度重視,因此從現在開始熟悉能夠實現這一目標的技術,將對你來說是一個巨大的提升。我們推薦的工具是 Ansible 和 Docker 。同時,具備 Linux 命令列和基本系統管理技能,也將為你的職場生涯大大的加分。
嘗試一個或多個學習: Yarn、Git、Visual Studio Code、Electron、Ansible、Docker.
技術
伴隨著大型公司關閉資料中心,並調整其整個基礎設施到雲上,我們可以看到雲已經贏得了整個軟體行業。目前三個主要的平台是 AWS , Google Cloud 和 Azure。這三大平台都有著強大的功能,同時不斷地擴充其功能集,涉及虛擬機器、資料庫託管、機器學習服務等。由於價格的迅速下降,小公司和個人開發人員也都可以接觸到雲。對於 2017 年,在雲上部署一個業餘項目將是一個很好的學習積累。
人工智慧是 2016 年的流行詞。語音辨識和映像分類只是該技術在面向使用者應用程式的兩個部分,人工智慧裝置的效能達到甚至超越了人類的水平。當下眾多的創業公司也將 AI 和機器學習應用到其新的領域,同時許多相關的開源項目也已經發布,例如Google的 Tensor Flow 和微軟的 Cognitive Toolkit。機器學習是一個與數學非常相關的主題,對於剛剛開始的人,這裡有全面的線上課程供你學習。
虛擬現實(VR)和增強現實(AR)已經存在了一段時間,而最終該技術已經成熟到足以提供令人信服的體驗。Facebook(Oculus Rift),Google(Daydream)和 Microsoft(Windows Holographic)都有歡迎第三方開發人員加入的虛擬現實平台。然而 VR 穿戴裝置依然面臨著艱巨的挑戰。例如如何消除穿戴者噁心的感覺,以及脫離了遊戲圈,又如何創造令人信服的使用案例。
挑一種學習: 雲部署、機器學習庫、VR 開發
如果覺得文章不錯,不妨點個贊。^_^ ,本文同時在【IT技術分享】知乎專欄中發布。
註:
1.若有翻譯不當之處,還請大家多多指正,我會及時修改;
2.本文著作權歸原作者所有。如需轉載譯文,煩請註明出處,謝謝!
英文原文:The Languages, Frameworks and Tools You Should Learn in 2017
作者:Martin Angelov
譯者:IT程式獅