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

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

在過去的一年裡,軟體開發行業繼續大踏步地向前邁進。回顧 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 的程式設計語言,像 KotlinScala,你也可以瞭解下。

Swift 3 已經在今年早些時候發布了。簡化 iOS 和 MacOS 上應用程式的開發,是蘋果公司對現代程式設計語言的願景。由於 Swift 是開源的,所以也湧現了大量的社區。Swift 4 計劃於 2017 年發布,此版本將會改進語言並引入伺服器 API,致力使其成為編寫 Web 應用程式和後端的不錯選擇。

如果你在尋找一些讓你感到興奮的東西,你可以嘗試下 CrystalElixir。它們都擁有類似與 Ruby 的友好文法以及卓越的效能,或者你也可以看看類似於 HaskellClojure 這類函數式語言。另外兩種快速程式設計語言,我們推薦給你 RustGo 語言。

挑一個或多個學習: 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 架構的另一個不錯的選擇。它支援資料雙向繫結,並能夠自動更新模板、組件以及伺服器端渲染。與其他競爭者相比,使用它的好處是它更加成熟與穩定,而其架構的重大更改頻率之低,社區重視向後的相容性,也使得此架構成為開發較長生命週期的應用程式的不二之選。

另外兩個值得一提的架構是 AureliaReact。在過去的一年裡 React 的生態系統變得越來越複雜,因此很難推薦給初學者。但經驗豐富的開發人員可以將庫與 GraphQLRelayFluxImmutable.js 組合成一個全面完整的全棧解決方案。

沒有提及 Bootstrap 的前端終歸是不完整的。而 Bootstrap 4 目前也正處於 Alpha 階段,預計在 2017 年發布。值得關注的變化是新的通用卡片組件和 Flexbox 網格(查看與常規網格的對比),這使得架構更加現代化,並且讓使用者使用它進行工作時更加得舒心。

SASSLESS 仍然是當前最流行的兩種 CSS 前置處理器。儘管 Vanilla CSS 已經實現了對變數的支援,但對 mixins、函數和程式碼群組織上的支援,SASS 和 LESS 依然更勝一籌。如果您還沒有瞭解它們,可以看看我們的 SASSLESS 快速入門手冊。

挑一個或多個學習: Angular 2、Vue.js、Ember、Bootstrap、LESS/SASS

後端

後端有眾多的選擇,但所有的選擇都取決於你對程式設計語言或特定效能需求的偏好上。Web 開發中的一個持續趨勢是遠離後端的商務邏輯,並將該層轉換為由前端和行動裝置 App程式使用的 API 上。但一個全棧的架構通常是能夠更簡單、快速的應用於開發,並且它仍然是 Web 應用程式最有效選擇。

Node.js 是在瀏覽器之外運行 JS 的主要方式。在今年,我們也看到了它發布了許多新的版本。除了提升了效能外,也添加了對整個 ES6 規範的覆蓋。Node 具有構建快速 API、伺服器、傳統型應用程式甚至機器人的架構,同時它可以建立想象到的各種模組的龐大社區。這裡有一些你可能想研究的架構:ExpressKoaNextNodal.

PHP 是一種擁有大量 Web 架構可供你選擇的 Web 開發語言。由於其擁有出色的文檔和功能,Laravel 已建成了一個活躍的社區。Zend Framework 發布了第 3 版,這標誌著面向業務架構的巨大升級。在今年,我們也看到了 Symfony 發行了很多新的版本,使它成為了全棧解決方案中更好的選擇。

對於 Ruby 來說,Rails 架構是首選的。Rails 5.0 版本已於今年發布,並為 Web Sockets、API 模型等方面提供了支援。對於小型應用程式而言,Sinatra 也是一個不錯的選擇,Sinatra 2.0版本預計在 2017 年發布。

Python 有著以 DjangoFlask 為組合的全棧/迷你型架構。Django 1.10 已在今年 8 月發布了,它為 Postgres 引入了全文檢索搜尋和一個重大修改的中介軟體層。

Java 的生態系統中,依舊有很多流行的 Web 架構可供你選擇。PlaySpark 便是兩個必備的選擇,同時它們也可以與 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 CodeAtom ,在過去一年中,我們看到了它們進行了很多不可思議的創新。這兩個項目都是使用 Web 技術構建的,社區中也吸引了大量的粉絲。編輯器具備高擴充,提供了諸如語法檢查、linting 和重構工具的相關外掛程式。

作為最流行的原始碼版本控制系統,Git 當之無愧。雖然它無伺服器,但你可以將電腦上的任何檔案夾轉換為存放庫。如果你想共用代碼,像 GitLabBitbucketGitHub 都是不錯的選擇。在 2017 年,我們建議你熟悉 git 命令列,因為它會比您想象的更加方便。

傳統型應用程式依然沒有消失。即使 Web App 變得越來越強大,有時你依然會需要強大的功能和 API,這是 Web 平台無法提供的。你可以使用諸如 ElectronNW.js 之類的工具,利用 Web 技術來建立傳統型應用程式,同時你也可以完全訪問作業系統和 npm 可用的廣度模組。要瞭解這些工具的更多資訊,請閱讀有關 ElectronNW.js 的教程。

軟體Team Dev中的最新趨勢是讓開發人員負責自己軟體項目中的部署,也稱為 DevOps.這能產生更快地發布和更迅速地修複生產中出現的問題。而具有營運經驗的開發人員將得到公司的高度重視,因此從現在開始熟悉能夠實現這一目標的技術,將對你來說是一個巨大的提升。我們推薦的工具是 AnsibleDocker 。同時,具備 Linux 命令列和基本系統管理技能,也將為你的職場生涯大大的加分。

嘗試一個或多個學習: Yarn、Git、Visual Studio Code、Electron、Ansible、Docker.

技術

伴隨著大型公司關閉資料中心,並調整其整個基礎設施到雲上,我們可以看到雲已經贏得了整個軟體行業。目前三個主要的平台是 AWS , Google CloudAzure。這三大平台都有著強大的功能,同時不斷地擴充其功能集,涉及虛擬機器、資料庫託管、機器學習服務等。由於價格的迅速下降,小公司和個人開發人員也都可以接觸到雲。對於 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程式獅

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.