轉(zhuǎn)自:開(kāi)源中國(guó) - 局長(zhǎng)
鏈接:my.oschina.net/hardbone/blog/805349
軟件開(kāi)發(fā)行業(yè)繼續(xù)向前大步邁進(jìn)。 在 2016 年,我們看到了很多新版本的流行語(yǔ)言、框架和工具。它給了我們更多的支持,也改變了我們的工作方式。緊跟潮流是很難的,所以在每年年底,我們會(huì)給你介紹什么是重要的,而且應(yīng)該在未來(lái)十二個(gè)月內(nèi)學(xué)習(xí)。(程序員的那些事 注:這篇文章內(nèi)有很多外部鏈接,由于微信圖文不允許加外部鏈接,想拓展閱讀的讀者請(qǐng)點(diǎn)擊文章開(kāi)頭的網(wǎng)頁(yè)版出處)
在 2016 年,我們看到了 Progressive Web App 概念的興起。它代表了脫機(jī)工作的 Web 應(yīng)用程序,并提供類(lèi)似 Native App 的體驗(yàn)。它們可以添加到你的智能設(shè)備的主屏幕,甚至可以給你發(fā)送推送通知,彌補(bǔ)了與本地移動(dòng)應(yīng)用程序的差距。我們認(rèn)為,在 2017 年,PWA 將變得更加重要,更值得探討。
Progressive Web App(PWA) 是 Google 在 Web 平臺(tái)開(kāi)始推廣的一個(gè)新概念,可以理解為是盡可能借助目前的新技術(shù)(比如 Service Worker,Push Notification 及其他展現(xiàn)層的新技術(shù))以增強(qiáng) Web App 的體驗(yàn)和功能,讓 Web App 的體驗(yàn)無(wú)限接近 Native App。PWA 并不只是在移動(dòng)設(shè)備上使用,有現(xiàn)代瀏覽器存在的地方就可以有 PWA。PWA 也不是 Chrome Only,現(xiàn)代瀏覽器基本都支持。
現(xiàn)在每個(gè)人都在談?wù)摿奶鞕C(jī)器人。從運(yùn)行它們的平臺(tái)到構(gòu)建它們的框架,社區(qū)也正在忙于各種活動(dòng)(閱讀介紹)。機(jī)器人是新的移動(dòng)應(yīng)用程序,如果你快點(diǎn)的話也可以在大家都感到新奇時(shí)趕上浪潮。一旦新奇消退,機(jī)器人可能會(huì)被降級(jí)到一些無(wú)聊的角色,如自動(dòng)客服。但無(wú)論怎樣,我們都可以夢(mèng)想嘛!
在 JavaScript 社區(qū),有著令人難以置信的框架和工具的混合,幾乎每個(gè)星期都會(huì)出現(xiàn)新的。直到最近,人們期望舊的工具將被新的替代,但這不是我們?cè)?2016 年看到的。相反,我們看到了流行的框架交換想法以及采納由新誕生的框架提出的創(chuàng)新。所以在 2017 年,該選擇哪個(gè)框架作為主要 JS 框架不是很重要,它們的功能大多是可比較的。
各地的公司和開(kāi)發(fā)者都在積極地?fù)肀А霸啤?。云是虛擬化的計(jì)算機(jī)基礎(chǔ)架構(gòu),可根據(jù)需要提供,并可從控制面板中完全配置。目前三大云提供商分別是 AWS,Google Cloud 和 Azure。由于其持續(xù)的競(jìng)爭(zhēng)價(jià)格一直在下跌,因此小公司和個(gè)人開(kāi)發(fā)者也將其納入預(yù)算中。熟悉云工作流程將是 2017 年一筆不錯(cuò)的投資。
機(jī)器學(xué)習(xí)在過(guò)去的十二個(gè)月中已經(jīng)呈現(xiàn)爆炸式的增長(zhǎng)。通過(guò)在今年 3 月份的 AlphaGo vs Lee Sedol 的歷史性比賽,它進(jìn)入了主流。從原始數(shù)據(jù)中學(xué)習(xí)的智能計(jì)算機(jī)系統(tǒng)正在改變我們與移動(dòng)設(shè)備交互的方式??瓷先ィ瑱C(jī)器學(xué)習(xí)將是 2017 年更大的影響因子。
JavaScript 繼續(xù)著它令人難以置信的創(chuàng)新步伐。由于 Web 瀏覽器的快速發(fā)布計(jì)劃的推動(dòng),JS 標(biāo)準(zhǔn)每年都會(huì)更新。下一個(gè)版本,ES2017 預(yù)計(jì)將于 2017 年中期完成。它將帶來(lái)許多 JS 開(kāi)發(fā)人員渴望的特性 — 用于處理異步函數(shù)的 аsync/await
。感謝 Babel,即使在今天,你也可以在每個(gè)瀏覽器中編寫(xiě) ES2017。
TypeScript 2.1 于 2016 年年底發(fā)布,為舊瀏覽器帶來(lái)了 async/await
,并改進(jìn)了類(lèi)型推斷。TypeScript 是一門(mén)編譯為 JavaScript 的靜態(tài)類(lèi)型語(yǔ)言。它增加了強(qiáng)大的功能,如經(jīng)典的 OOP 模型和可選的靜態(tài)類(lèi)型,使得巨大的代碼庫(kù)更容易維護(hù)。它是編寫(xiě) Angular 2 應(yīng)用程序的首選語(yǔ)言,建議各位嘗試。這是關(guān)于它的快速入門(mén)指南。
C# 7.0 預(yù)計(jì)在 2017 年發(fā)布,作為一門(mén)優(yōu)秀的語(yǔ)言將會(huì)有更大的改進(jìn)。當(dāng)微軟推出開(kāi)源 Visual Studio Code 編輯器 和 .Net Core 時(shí),每個(gè)人都感到驚訝。它們都可以在 Linux,Windows 和 macOS 上運(yùn)行,并允許你用 C# 編寫(xiě)快速、高效的應(yīng)用程序(點(diǎn)擊這里閱讀更多)。這些工具促成了一個(gè)充滿活力的社區(qū)。
Python 3.6 將于今年 12 月發(fā)布。它正在鞏固其作為開(kāi)發(fā)人員、IT 專(zhuān)業(yè)人員和科學(xué)家的腳本語(yǔ)言的選擇的地位。它適用于自動(dòng)化、Web 開(kāi)發(fā)、機(jī)器學(xué)習(xí)和科學(xué)計(jì)算。Python 2/3 的選擇對(duì)于社區(qū)來(lái)說(shuō)是一個(gè)長(zhǎng)達(dá)數(shù)年的斗爭(zhēng),但是現(xiàn)在你可以自信地選擇 Python 3 并享受完整的庫(kù)支持。對(duì)于那些需要額外的性能的使用者,他們可以看看 PyPy — 一個(gè)可啟用 Python 運(yùn)行時(shí)的 JIT 替代品 。
Ruby 2.3 今年早些時(shí)候發(fā)布了,并帶來(lái)了性能改進(jìn)。作為通用腳本語(yǔ)言,Ruby 也是一個(gè)好選擇。 Ruby 3×3 的倡議已經(jīng)公布,這將使即將到來(lái)的 Ruby 3 比當(dāng)前版本快 3 倍,而且會(huì)在更多的情景中打開(kāi)使用 Ruby 的大門(mén)。
PHP 7.1 是在 12 月發(fā)布的,并帶來(lái)了細(xì)小的增強(qiáng)。 這是基于去年 7.0 版本中的主要性能改進(jìn),將 PHP 轉(zhuǎn)變?yōu)闃?gòu)建 Web 應(yīng)用程序的快速平臺(tái)。我們建議把 PHP The Right Way 作為良好的做法和構(gòu)建 Web Apps 的現(xiàn)代做法。
Java 9 預(yù)計(jì)在 2017 年發(fā)布,并將帶來(lái)備受歡迎的新功能,例如用于評(píng)估代碼的 repl、對(duì) HTTP 2.0 的支持和新的 API。有才能的 Java 開(kāi)發(fā)人員和使用該語(yǔ)言開(kāi)發(fā)項(xiàng)目的人對(duì)于這些特性有強(qiáng)烈的需求。如果 Java 不是你需要的,有一些基于 JVM 的語(yǔ)言,如 Kotlin 和 Scala,可以去了解。
Swift 3 于今年早些時(shí)候發(fā)布。這是蘋(píng)果對(duì)現(xiàn)代編程語(yǔ)言的愿景 — 簡(jiǎn)化 iOS 和 macOS 上應(yīng)用程序的開(kāi)發(fā)。Swift 是開(kāi)源的而且吸引了大量的社區(qū)。版本 4 計(jì)劃于 2017 年發(fā)布,將改進(jìn)語(yǔ)言特性和引入服務(wù)器 API,使其成為編寫(xiě) Web Apps 和后端的一個(gè)不錯(cuò)選擇。
如果你正在尋找更令人興奮的東西,可以嘗試 Crystal 和 Elixir,它們結(jié)合了一個(gè)友好的類(lèi)似 Ruby 的語(yǔ)法且有著卓越的性能?;蛘吣憧梢钥纯春瘮?shù)式語(yǔ)言如 Haskell 或 Clojure。另外兩門(mén)推薦的快速語(yǔ)言是 Rust 和 Go。
學(xué)習(xí)其中的一門(mén)或多門(mén):JS(ES2017),TypeScript,C#,Python,Ruby,PHP7,Java/Kotlin/Scala
Web 平臺(tái)最近取得了兩個(gè)重大進(jìn)展 — Web Assembly 和 Service Workers。它們?yōu)闃?gòu)建快速和高效的 Web 應(yīng)用程序打開(kāi)了大門(mén),而且彌補(bǔ)了與 Native App 之間的差距。Service Workers 尤其是 Progressive Web Apps 的啟用技術(shù),并為 Web 平臺(tái)的通知提供支持,將來(lái)也還會(huì)有更多的 API。
Angular 2 于今年發(fā)布。該框架由 Google 支持,非常受企業(yè)和大公司的歡迎。它具有大量的功能,使在從網(wǎng)絡(luò)到桌面和移動(dòng)應(yīng)用程序中編寫(xiě)任何東西成為可能??蚣苁褂?TypeScript 編寫(xiě),這也是在框架中編寫(xiě)應(yīng)用程序的推薦語(yǔ)言。學(xué)習(xí)它有很多需要閱讀的內(nèi)容,但我們認(rèn)為在 2017 年學(xué)習(xí) Angular 2 將是一個(gè)很好的投資。
Vue.js 今年也發(fā)布了 2.0 版本。它借鑒了 Angular,React 和 Ember 中的好想法,并將它們放入一個(gè)易于使用的包中。它也比前兩個(gè)更精簡(jiǎn)和更快。建議各位都去嘗試一下,可參考入門(mén)教程。
Ember 是 JavaScript 框架的另一個(gè)堅(jiān)定選擇。它支持?jǐn)?shù)據(jù)綁定、自動(dòng)更新模板、組件和服務(wù)器端渲染。與其競(jìng)爭(zhēng)對(duì)手相比,它的一個(gè)好處是更成熟和穩(wěn)定。重大更改的頻率要低得多,而且社區(qū)也重視向后兼容性。這使得該框架成為生命周期長(zhǎng)的應(yīng)用的不錯(cuò)選擇。
另外兩個(gè)值得一看的框架是 Aurelia 和 React。過(guò)去的一年中 React 的生態(tài)系統(tǒng)變得越來(lái)越復(fù)雜,因此很難向初學(xué)者推薦。但經(jīng)驗(yàn)豐富的開(kāi)發(fā)者可以將庫(kù)與 GraphQL,Relay,F(xiàn)lux 和 Immutable.js 組合成一個(gè)全面的全棧解決方案。
沒(méi)提到 Bootstrap 的前端匯總是不完整的。Bootstrap 4 目前正處于 Alpha 階段,預(yù)計(jì)在 2017 會(huì)正式發(fā)布。值得關(guān)注的變化是新的通用卡片組件和 Flexbox 網(wǎng)格(查看與常規(guī)網(wǎng)格的對(duì)比),這使得框架更現(xiàn)代化而且讓用戶使用它工作更舒心。
SASS 和 LESS 仍然是當(dāng)今最流行的兩種 CSS 預(yù)處理器。雖然 vanilla CSS 最終對(duì)變量進(jìn)行了支持,但 SASS 和 LESS 仍然優(yōu)先對(duì) mixins,函數(shù)和代碼組織進(jìn)行支持。 如果還沒(méi)有了解它們,可查看這里的 SASS 和 LESS 快速入門(mén)指南。
學(xué)習(xí)以下一個(gè)或多個(gè):Angular 2,Vue.js,Ember,Bootstrap,LESS/SASS
后端有很多選擇,所有這一切都取決于你對(duì)編程語(yǔ)言或特定性能需求的偏好。Web 開(kāi)發(fā)中的一個(gè)持續(xù)趨勢(shì)是遠(yuǎn)離后端的業(yè)務(wù)邏輯,并將該層轉(zhuǎn)換為由前端和移動(dòng)應(yīng)用程序使用的 API。但一個(gè)全??蚣芡ǔJ悄芨?jiǎn)單、更快速地用于開(kāi)發(fā),并且是許多 Web Apps 的有效選擇。
Node.js 是在瀏覽器外運(yùn)行 JS 的主要方式。今年我們看到它發(fā)布了許多新版本,提升了性能以及添加對(duì)整個(gè) ES6 規(guī)范的覆蓋。Node 具有快速構(gòu)建 API、服務(wù)器、桌面應(yīng)用程序甚至機(jī)器人的框架,以及創(chuàng)建可以想象到的各種模塊的龐大社區(qū)。一些你可能想研究的框架:Express, Koa, Next, Nodal。
PHP 首先是一門(mén) Web 語(yǔ)言,并且有大量的 Web 框架可供選擇。由于其出色的文檔和功能,Laravel 構(gòu)造了一個(gè)積極的社區(qū)。Zend Framework 發(fā)布了第 3 版,這標(biāo)志著這個(gè)面向業(yè)務(wù)的框架的巨大升級(jí)。Symfony 在今年也發(fā)布了很多新的版本,使它作為一個(gè)全棧解決方案成為一個(gè)更好的選擇。
對(duì)于 Ruby,Rails 框架是首選。5.0 版本已于 2016 年發(fā)布,為 Web Sockets,API 模式等提供支持。Sinatra 也是小應(yīng)用程序的不錯(cuò)選擇,2.0 版本預(yù)計(jì) 2017 年發(fā)布。
Python 有以 Django 和 Flask 的形式組合的全棧/最小框架。Django 1.10 在 8 月發(fā)布,為 Postgres 引入了全文搜索和一個(gè)大修改的中間件層。
Java 生態(tài)系統(tǒng)還有流行的 Web 框架可供選擇。Play 和 Spark 是兩個(gè)堅(jiān)定的選擇,作為獎(jiǎng)勵(lì),它們可以與 Scala 一起使用。
對(duì)于愛(ài)好者,還有 Phoenix 可供選擇,這是用 Elixir 語(yǔ)言編寫(xiě)的,并試圖成為一個(gè)功能完全替代 Rails 的框架而且具有卓越的性能。如果 Elixir 是你想在 2017 年學(xué)習(xí)的語(yǔ)言之一,不妨嘗試 Phoenix。
學(xué)習(xí)其中之一:全棧后端框架,一個(gè)微框架
PostgreSQL 今年發(fā)布了兩個(gè)完整版本 — 9.5 和 9.6。它們帶來(lái)了期待已久的 UPSERT 功能(又名 ON DUPLICATE KEY UPDATE
)、更好的全文搜索和速度改進(jìn),這都?xì)w功于并行查詢,更高效的復(fù)制、聚合、索引和排序。Postgres 適用于大規(guī)模、TB 級(jí)規(guī)模的數(shù)據(jù)集以及繁忙的 Web Apps,所以這些優(yōu)化都很受歡迎。
MySQL 8.0 將是該數(shù)據(jù)庫(kù)的下一個(gè)主要版本。正式版預(yù)計(jì) 2017 年發(fā)布,將給系統(tǒng)帶來(lái)很多改進(jìn)。MySQL 仍然是最受歡迎的數(shù)據(jù)庫(kù)管理系統(tǒng),整個(gè)行業(yè)都受益于這些新版本。
對(duì)于 NoSQL 的粉絲,推薦 CouchDB。它是一個(gè)快速和可擴(kuò)展的 JSON 存儲(chǔ)系統(tǒng),公開(kāi)了一個(gè) REST-ful HTTP API。這個(gè)數(shù)據(jù)庫(kù)易于使用,性能卓越。PouchDB 是一個(gè)開(kāi)源的 JavaScript 數(shù)據(jù)庫(kù),完全在瀏覽器中工作。可通過(guò) Couch 同步數(shù)據(jù)。在應(yīng)用程序離線的時(shí)候,可以將用戶數(shù)據(jù)保存在本地,在網(wǎng)絡(luò)連接可用后自動(dòng)同步。
Redis 是最受歡迎的 Key-Value 數(shù)據(jù)庫(kù)。它體積小,快速而且通用性好。作為 NoSQL 數(shù)據(jù)存儲(chǔ)或進(jìn)程消息傳遞和同步通道,你可以將其作為智能內(nèi)存緩存的替代方案。它提供了大量的數(shù)據(jù)結(jié)構(gòu)可供選擇,并且即將到來(lái)的 4.0 版本將有一個(gè)模塊系統(tǒng)和改進(jìn)的復(fù)制功能。
學(xué)習(xí)以下其中之一:Postgres,MySQL,CouchDB,Redis
Yarn 是由 Facebook 開(kāi)發(fā)的 Javascript 包管理器。它是對(duì) npm 命令行工具的升級(jí),提供了更快的安裝,更好的安全性和確定性構(gòu)建。它仍然使用 npm 包注冊(cè)表作為其后端,因此可以訪問(wèn)同一個(gè) JavaScript 模塊的生態(tài)系統(tǒng)。Yarn 與 npm 使用的 package.json
格式相兼容。
兩個(gè)最受歡迎的開(kāi)源代碼編輯器 — Visual Studio Code 和 Atom 在過(guò)去 12 個(gè)月中進(jìn)行了很多不可思議的創(chuàng)新。這兩個(gè)項(xiàng)目都使用網(wǎng)絡(luò)技術(shù)構(gòu)建,并吸引了大量的粉絲群體。編輯器有針對(duì)大部分語(yǔ)言的語(yǔ)法檢查,linting 和重構(gòu)工具的插件。
Git 是最流行的源代碼版本控制系統(tǒng)。它是無(wú)服務(wù)器的,你可以將計(jì)算機(jī)上的任何文件夾轉(zhuǎn)換為存儲(chǔ)庫(kù)。如果你想共享代碼,有很多選擇,像 GitLab,Bitbucket 和 Github(當(dāng)然還有碼云)。2017年,建議熟悉 git 命令行,因?yàn)樗鼤?huì)在比你想象中更多的場(chǎng)景派上用場(chǎng)。
桌面應(yīng)用程序還沒(méi)有死,即使 Web App 變得越來(lái)越強(qiáng)大。有時(shí)你需要強(qiáng)大的功能和 API,這是網(wǎng)絡(luò)平臺(tái)無(wú)法提供的。使用諸如 Electron 和 NW.js 之類(lèi)的工具,可以通過(guò)使用 Web 技術(shù)編來(lái)寫(xiě)桌面應(yīng)用程序。你可以完全訪問(wèn)操作系統(tǒng)和 npm 可用的廣度模塊。要了解這些工具的更多信息,請(qǐng)閱讀有關(guān) Electron 和 NW.js 的教程。
軟件開(kāi)發(fā)中的最近趨勢(shì)是讓開(kāi)發(fā)人員負(fù)責(zé)自己的系統(tǒng)部署 — 也稱為 DevOps,這能產(chǎn)生更快的發(fā)布和更快地修復(fù)生產(chǎn)中的問(wèn)題。具有運(yùn)維經(jīng)驗(yàn)的開(kāi)發(fā)人員會(huì)受到公司的高度重視,因此從現(xiàn)在開(kāi)始熟悉能實(shí)現(xiàn)這一目標(biāo)的技術(shù)將是巨大的進(jìn)步。推薦的一些工具是 Ansible 和 Docker。擁有 Linux 命令行和基本的系統(tǒng)管理技能也會(huì)為助你一臂之力。
嘗試其中的一個(gè)或多個(gè):Yarn,Git,Visual Studio Code,Electron,Ansible,Docker
云已經(jīng)贏得了整個(gè)軟件行業(yè),可以看到大型公司關(guān)閉了他們的數(shù)據(jù)中心而且將其整個(gè)基礎(chǔ)設(shè)施遷移到了云上。目前三個(gè)主要平臺(tái)是 AWS, Google Cloud 和 Azure。這三個(gè)平臺(tái)都有著功能強(qiáng)大,不斷擴(kuò)展的功能集,包括虛擬機(jī),數(shù)據(jù)庫(kù)托管,機(jī)器學(xué)習(xí)服務(wù)等。而且價(jià)格也正在迅速下降,所以云是小公司和個(gè)人開(kāi)發(fā)者可以接觸到的。對(duì)于 2017 年,部署一個(gè)業(yè)余的項(xiàng)目到這些提供商的平臺(tái)將會(huì)是一次很好的學(xué)習(xí)經(jīng)歷。
人工智能是 2016 年的流行詞。語(yǔ)音識(shí)別和圖像分類(lèi)只是該技術(shù)面向用戶的兩種應(yīng)用,人工智能的機(jī)器達(dá)到甚至超過(guò)了人類(lèi)的性能。當(dāng)下有很多創(chuàng)業(yè)公司將 AI 和機(jī)器學(xué)習(xí)應(yīng)用到新領(lǐng)域,也有許多開(kāi)源項(xiàng)目發(fā)布,例如谷歌的 Tensor Flow 和微軟的 Cognitive Toolkit。機(jī)器學(xué)習(xí)是一個(gè)與數(shù)學(xué)非常相關(guān)的主題,對(duì)于剛剛開(kāi)始的人,這里有全面的在線課程。
虛擬現(xiàn)實(shí)(VR)和增強(qiáng)現(xiàn)實(shí)(AR)已經(jīng)存在了一段時(shí)間,最終該技術(shù)已經(jīng)成熟到足以提供一個(gè)引人注目的體驗(yàn)。Facebook(Oculus Rift),Google(Daydream)和 Microsoft(Windows Holographic)都有歡迎第三方開(kāi)發(fā)者加入的虛擬現(xiàn)實(shí)平臺(tái)。VR 頭戴設(shè)備仍然面臨挑戰(zhàn),如消除惡心的感覺(jué)和在游戲之外提供引人注目的用例。
學(xué)習(xí)其中之一:云部署,機(jī)器學(xué)習(xí)庫(kù),VR 開(kāi)發(fā)
覺(jué)得這條資訊有幫助?請(qǐng)轉(zhuǎn)發(fā)給更多人
關(guān)注 技術(shù)最前線,看 IT 要聞
聯(lián)系客服