1. 程式人生 > >2017 年你應該學習的程式語言、框架和工具

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

軟體開發行業繼續向前大步邁進。 在 2016 年,我們看到了很多新版本的流行語言、框架和工具。它給了我們更多的支援,也改變了我們的工作方式。緊跟潮流是很難的,所以在每年年底,我們會給你介紹什麼是重要的,而且應該在未來十二個月內學習。

一、趨勢

  • 在 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,現代瀏覽器基本都支援。

聊天機器人

  • 現在每個人都在談論聊天機器人。從執行它們的平臺到構建它們的框架,社群也正在忙於各種活動(閱讀介紹)。機器人是新的移動應用程式,如果你快點的話也可以在大家都感到新奇時趕上浪潮。一旦新奇消退,機器人可能會被降級到一些無聊的角色,如自動客服。但無論怎樣,我們都可以夢想嘛!
  • 在 JavaScript 社群,有著令人難以置信的框架和工具的混合,幾乎每個星期都會出現新的。直到最近,人們期望舊的工具將被新的替代,但這不是我們在 2016 年看到的。相反,我們看到了流行的框架交換想法以及採納由新誕生的框架提出的創新。所以在 2017 年,該選擇哪個框架作為主要 JS 框架不是很重要,它們的功能大多是可比較的。

雲端

  • 各地的公司和開發者都在積極地擁抱“雲”。雲是虛擬化的計算機基礎架構,可根據需要提供,並可從控制面板中完全配置。目前三大雲提供商分別是 AWS,Google Cloud 和 Azure。由於其持續的競爭價格一直在下跌,因此小公司和個人開發者也將其納入預算中。熟悉雲工作流程將是 2017 年一筆不錯的投資。

機器學習

  • 機器學習在過去的十二個月中已經呈現爆炸式的增長。通過在今年 3 月份的 AlphaGo vs Lee Sedol 的歷史性比賽,它進入了主流。從原始資料中學習的智慧計算機系統正在改變我們與移動裝置互動的方式。看上去,機器學習將是 2017 年更大的影響因子。

二、程式語言

  • JavaScript
     繼續著它令人難以置信的創新步伐。由於 Web 瀏覽器的快速釋出計劃的推動,JS 標準每年都會更新。下一個版本,ES2017 預計將於 2017 年中期完成。它將帶來許多 JS 開發人員渴望的特性 — 用於處理非同步函式的 аsync/await 。感謝 Babel,即使在今天,你也可以在每個瀏覽器中編寫 ES2017。
  • 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 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/Scala

三、前端

Web 平臺最近取得了兩個重大進展 — Web Assembly 和 Service Workers。它們為構建快速和高效的 Web 應用程式打開了大門,而且彌補了與 Native App 之間的差距。Service Workers 尤其是 Progressive Web Apps 的啟用技術,併為 Web 平臺的通知提供支援,將來也還會有更多的 API。

  • Angular 2 於今年釋出。該框架由 Google 支援,非常受企業和大公司的歡迎。它具有大量的功能,使在從網路到桌面和移動應用程式中編寫任何東西成為可能。框架使用 TypeScript 編寫,這也是在框架中編寫應用程式的推薦語言。學習它有很多需要閱讀的內容,但我們認為在 2017 年學習 Angular 2 將是一個很好的投資。
  • Vue.js 今年也釋出了 2.0 版本。它借鑑了 Angular,React 和 Ember 中的好想法,並將它們放入一個易於使用的包中。它也比前兩個更精簡和更快。建議各位都去嘗試一下,可參考入門教程
  • Ember 是 JavaScript 框架的另一個堅定選擇。它支援資料繫結、自動更新模板、元件和伺服器端渲染。與其競爭對手相比,它的一個好處是更成熟和穩定。重大更改的頻率要低得多,而且社群也重視向後相容性。這使得該框架成為生命週期長的應用的不錯選擇。

其他

  • 另外兩個值得一看的框架是  和 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

四、後端

後端有很多選擇,所有這一切都取決於你對程式語言或特定效能需求的偏好。Web 開發中的一個持續趨勢是遠離後端的業務邏輯,並將該層轉換為由前端和移動應用程式使用的 API。但一個全棧框架通常是能更簡單、更快速地用於開發,並且是許多 Web Apps 的有效選擇。

  • 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 有以 Django 和 Flask 的形式組合的全棧/最小框架。Django 1.10 在 8 月釋出,為 Postgres 引入了全文搜尋和一個大修改的中介軟體層。

Java

  • Java 生態系統還有流行的 Web 框架可供選擇。Play 和 Spark 是兩個堅定的選擇,作為獎勵,它們可以與 Scala 一起使用。

其他

  • 對於愛好者,還有 Phoenix 可供選擇,這是用 Elixir 語言編寫的,並試圖成為一個功能完全替代 Rails 的框架而且具有卓越的效能。如果 Elixir 是你想在 2017 年學習的語言之一,不妨嘗試 Phoenix。

學習其中之一:全棧後端框架,一個微框架

五、資料庫

  • PostgreSQL 今年釋出了兩個完整版本 — 9.5 和 9.6。它們帶來了期待已久的 UPSERT 功能(又名  ON DUPLICATE KEY UPDATE)、更好的全文搜尋和速度改進,這都歸功於並行查詢,更高效的複製、聚合、索引和排序。Postgres 適用於大規模、TB 級規模的資料集以及繁忙的 Web Apps,所以這些優化都很受歡迎。

MySQL

  •  將是該資料庫的下一個主要版本。正式版預計 2017 年釋出,將給系統帶來很多改進。MySQL 仍然是最受歡迎的資料庫管理系統,整個行業都受益於這些新版本。

NoSQL

  • 對於 NoSQL 的粉絲,推薦 CouchDB。它是一個快速和可擴充套件的 JSON 儲存系統,公開了一個 REST-ful HTTP API。這個資料庫易於使用,效能卓越。PouchDB 是一個開源的 JavaScript 資料庫,完全在瀏覽器中工作。可通過 Couch 同步資料。在應用程式離線的時候,可以將使用者資料儲存在本地,在網路連線可用後自動同步。

Redis

  • Redis 是最受歡迎的 Key-Value 資料庫。它體積小,快速而且通用性好。作為 NoSQL 資料儲存或程序訊息傳遞和同步通道,你可以將其作為智慧記憶體快取的替代方案。它提供了大量的資料結構可供選擇,並且即將到來的 4.0 版本將有一個模組系統和改進的複製功能。

學習以下其中之一:Postgres,MySQL,CouchDB,Redis

六、工具

Yarn

  • Yarn 是由 Facebook 開發的 Javascript 包管理器。它是對 npm 命令列工具的升級,提供了更快的安裝,更好的安全性和確定性構建。它仍然使用 npm 包登錄檔作為其後端,因此可以訪問同一個 JavaScript 模組的生態系統。Yarn 與 npm 使用的 package.json 格式相相容。
  • 兩個最受歡迎的開原始碼編輯器 —  和 Atom 在過去 12 個月中進行了很多不可思議的創新。這兩個專案都使用網路技術構建,並吸引了大量的粉絲群體。編輯器有針對大部分語言的語法檢查,linting 和重構工具的外掛。

Git

  • Git 是最流行的原始碼版本控制系統。它是無伺服器的,你可以將計算機上的任何資料夾轉換為儲存庫。如果你想共享程式碼,有很多選擇,像 GitLab,Bitbucket 和 Github(當然還有碼雲)。2017年,建議熟悉 git 命令列,因為它會在比你想象中更多的場景派上用場。
  • 桌面應用程式還沒有死,即使 Web App 變得越來越強大。有時你需要強大的功能和 API,這是網路平臺無法提供的。使用諸如 Electron 和 NW.js 之類的工具,可以通過使用 Web 技術編來寫桌面應用程式。你可以完全訪問作業系統和 npm 可用的廣度模組。要了解這些工具的更多資訊,請閱讀有關 Electron 和NW.js 的教程。
  • 軟體開發中的最近趨勢是讓開發人員負責自己的系統部署 — 也稱為 DevOps,這能產生更快的釋出和更快地修復生產中的問題。具有運維經驗的開發人員會受到公司的高度重視,因此從現在開始熟悉能實現這一目標的技術將是巨大的進步。推薦的一些工具是 Ansible 和 Docker。擁有 Linux 命令列和基本的系統管理技能也會為助你一臂之力。

嘗試其中的一個或多個:Yarn,Git,Visual Studio Code,Electron,Ansible,Docker

七、技術

雲已經贏得了整個軟體行業,可以看到大型公司關閉了他們的資料中心而且將其整個基礎設施遷移到了雲上。目前三個主要平臺是 AWSGoogle Cloud 和 Azure。這三個平臺都有著功能強大,不斷擴充套件的功能集,包括虛擬機器,資料庫託管,機器學習服務等。而且價格也正在迅速下降,所以雲是小公司和個人開發者可以接觸到的。對於 2017 年,部署一個業餘的專案到這些提供商的平臺將會是一次很好的學習經歷。

人工智慧

  • 人工智慧是 2016 年的流行詞。語音識別和影象分類只是該技術面向用戶的兩種應用,人工智慧的機器達到甚至超過了人類的效能。當下有很多創業公司將 AI 和機器學習應用到新領域,也有許多開源專案釋出,例如谷歌的 Tensor Flow 和微軟的 Cognitive Toolkit。機器學習是一個與數學非常相關的主題,對於剛剛開始的人,這裡有全面的線上課程
  • 虛擬現實(VR)和增強現實(AR)已經存在了一段時間,最終該技術已經成熟到足以提供一個引人注目的體驗。Facebook(Oculus Rift),Google(Daydream)和 Microsoft(Windows Holographic)都有歡迎第三方開發者加入的虛擬現實平臺。VR 頭戴裝置仍然面臨挑戰,如消除惡心的感覺和在遊戲之外提供引人注目的用例。

學習其中之一:雲部署,機器學習庫,VR 開發