2017 年該學習的編程語言、框架和工具
轉自:開源中國 - 局長
鏈接:http://my.oschina.net/hardbone/blog/805349
軟體開發行業繼續向前大步邁進。 在 2016 年,我們看到了很多新版本的流行語言、框架和工具。它給了我們更多的支持,也改變了我們的工作方式。緊跟潮流是很難的,所以在每年年底,我們會給你介紹什麼是重要的,而且應該在未來十二個月內學習。(程序員的那些事 註:這篇文章內有很多外部鏈接,由於微信圖文不允許加外部鏈接,想拓展閱讀的讀者請點擊文章開頭的網頁版出處)
一、趨勢
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,現代瀏覽器基本都支持。
聊天機器人
現在每個人都在談論聊天機器人。從運行它們的平台到構建它們的框架,社區也正在忙於各種活動(閱讀介紹)。機器人是新的移動應用程序,如果你快點的話也可以在大家都感到新奇時趕上浪潮。一旦新奇消退,機器人可能會被降級到一些無聊的角色,如自動客服。但無論怎樣,我們都可以夢想嘛!
前端框架的合併
在 JavaScript 社區,有著令人難以置信的框架和工具的混合,幾乎每個星期都會出現新的。直到最近,人們期望舊的工具將被新的替代,但這不是我們在 2016 年看到的。相反,我們看到了流行的框架交換想法以及採納由新誕生的框架提出的創新。所以在 2017 年,該選擇哪個框架作為主要 JS 框架不是很重要,它們的功能大多是可比較的。
雲端
各地的公司和開發者都在積極地擁抱「雲」。雲是虛擬化的計算機基礎架構,可根據需要提供,並可從控制面板中完全配置。目前三大雲提供商分別是 AWS,Google Cloud 和 Azure。由於其持續的競爭價格一直在下跌,因此小公司和個人開發者也將其納入預算中。熟悉雲工作流程將是 2017 年一筆不錯的投資。
機器學習
機器學習在過去的十二個月中已經呈現爆炸式的增長。通過在今年 3 月份的 AlphaGo vs Lee Sedol 的歷史性比賽,它進入了主流。從原始數據中學習的智能計算機系統正在改變我們與移動設備交互的方式。看上去,機器學習將是 2017 年更大的影響因子。
二、編程語言
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/Scala
三、前端
Web 平台最近取得了兩個重大進展 — Web Assembly 和 Service Workers。它們為構建快速和高效的 Web 應用程序打開了大門,而且彌補了與 Native App 之間的差距。Service Workers 尤其是 Progressive Web Apps 的啟用技術,並為 Web 平台的通知提供支持,將來也還會有更多的 API。
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 的生態系統變得越來越複雜,因此很難向初學者推薦。但經驗豐富的開發者可以將庫與 GraphQL,Relay,Flux 和 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
Node.js 是在瀏覽器外運行 JS 的主要方式。今年我們看到它發布了許多新版本,提升了性能以及添加對整個 ES6 規範的覆蓋。Node 具有快速構建 API、伺服器、桌面應用程序甚至機器人的框架,以及創建可以想像到的各種模塊的龐大社區。一些你可能想研究的框架:Express, Koa, Next, Nodal。
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。
學習其中之一:全棧後端框架,一個微框架
五、資料庫
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,Redis
六、工具
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,Docker
七、技術
雲已經贏得了整個軟體行業,可以看到大型公司關閉了他們的數據中心而且將其整個基礎設施遷移到了雲上。目前三個主要平台是 AWS, Google Cloud 和 Azure。這三個平台都有著功能強大,不斷擴展的功能集,包括虛擬機,資料庫託管,機器學習服務等。而且價格也正在迅速下降,所以雲是小公司和個人開發者可以接觸到的。對於 2017 年,部署一個業餘的項目到這些提供商的平台將會是一次很好的學習經歷。
人工智慧
人工智慧是 2016 年的流行詞。語音識別和圖像分類只是該技術面向用戶的兩種應用,人工智慧的機器達到甚至超過了人類的性能。當下有很多創業公司將 AI 和機器學習應用到新領域,也有許多開源項目發布,例如谷歌的 Tensor Flow 和微軟的 Cognitive Toolkit。機器學習是一個與數學非常相關的主題,對於剛剛開始的人,這裡有全面的在線課程。
虛擬現實和增強現實
虛擬現實(VR)和增強現實(AR)已經存在了一段時間,最終該技術已經成熟到足以提供一個引人注目的體驗。Facebook(Oculus Rift),Google(Daydream)和 Microsoft(Windows Holographic)都有歡迎第三方開發者加入的虛擬現實平台。VR 頭戴設備仍然面臨挑戰,如消除噁心的感覺和在遊戲之外提供引人注目的用例。
學習其中之一:雲部署,機器學習庫,VR 開發
閱讀原文
推薦閱讀: