現(xiàn)在應(yīng)該學(xué)習(xí)哪些語(yǔ)言和框架
2015年,軟件開(kāi)發(fā)界發(fā)生了很多變化。有很多流行的新語(yǔ)言發(fā)布了,也有很多重要的框架和工具發(fā)布了新版本。下面有一個(gè)我們覺(jué)得最重要的簡(jiǎn)短清單,同時(shí)也有我們覺(jué)得值得你在2016年花時(shí)間精力去學(xué)習(xí)的新事物的一些建議。
大趨勢(shì)
在過(guò)去的幾年里,有一個(gè)越來(lái)越明顯的趨勢(shì)是web應(yīng)用的商業(yè)邏輯逐步從后端轉(zhuǎn)移到了前端,然后后端變得只需要處理簡(jiǎn)單的數(shù)據(jù)API。這就讓前端開(kāi)發(fā)框架的選擇變得尤為重要了。
另外一個(gè)重要的改變是2015年發(fā)布的 Edge 瀏覽器。這是IE的替代品,擁有全新的界面和更好的性能。跟IE不一樣的是它同樣采用了跟 FireFox 和 Chrome 一樣的快速發(fā)布策略。這讓JavaScript 開(kāi)發(fā)者社區(qū)能夠以周為單位獲得最新版JavaScript 和 Web標(biāo)準(zhǔn)特性支持而不是像過(guò)去一樣需要等很多年。
現(xiàn)在應(yīng)該學(xué)習(xí)哪些語(yǔ)言和框架
語(yǔ)言和平臺(tái)
Python 3.5 在今年發(fā)布了,帶來(lái)了很多新特性 比如 Asyncio,為你帶來(lái)了類似 node.js 的事件機(jī)制,還有type hints。 鑒于Python 3 終于真正地火起來(lái)了我們強(qiáng)烈建議你替換掉 Python 2。幾乎所有的庫(kù)都已經(jīng)支持 Python 3 了,所以現(xiàn)在是一個(gè)升級(jí)歷史遺留代碼的好時(shí)機(jī)。
PHP 7 是一個(gè)重要的新版本,這個(gè)版本修復(fù)了很多問(wèn)題并且?guī)?lái)了新特性和性能提升(看看概覽) 。 PHP 7 大約比 PHP 5.6 快2倍, 這對(duì)一些大型項(xiàng)目還有WordPress 和 Drupal之類的CMS系統(tǒng)影響很大。 我們強(qiáng)烈推薦 PHP之道,已經(jīng)更新到最新的PHP7版本。 如果你需要更快的速度并且不介意換一個(gè)解釋引擎的話,可以試試Facebook在用的 HHVM。
JavaScript 也以ES2015 標(biāo)準(zhǔn) (大家通常叫做 ES6)的形式發(fā)布了更新。 為我們帶來(lái)了激動(dòng)人心的新功能。 感謝大多數(shù)瀏覽器版本的快速更新, 對(duì) ES2015 的支持已經(jīng)非常棒了,并且還有 Babel.js 這樣的工具可以讓你的新代碼跑在低版本瀏覽器上。
Node.js 在這一年變化很多,開(kāi)發(fā)者社區(qū)曾經(jīng)分裂成 Node.js 和 io.js,然后又再度合并。 經(jīng)歷過(guò)這些之后的結(jié)局就是我們得到了一個(gè)有很多代碼貢獻(xiàn)者積極維護(hù)的項(xiàng)目,并且擁有了兩個(gè)版本的 Node : 一個(gè)穩(wěn)定的LTS (長(zhǎng)期支持) 版本,這個(gè)版本注重穩(wěn)定性,比較適合長(zhǎng)期項(xiàng)目和大公司,和一個(gè)非長(zhǎng)期支持但是最快實(shí)現(xiàn)新特征的版本。
Swift 2 在今年初發(fā)布了。 這是 Apple 出品的旨在簡(jiǎn)化 iOS 和 OS X 開(kāi)發(fā)的現(xiàn)代編程語(yǔ)言。 幾周前, Swift 正式開(kāi)源并已經(jīng)兼容 Linux。這意味著你可以用它來(lái)編寫服務(wù)端應(yīng)用了。
Go 1.5 在幾個(gè)月前發(fā)布了, 并帶來(lái)了重大的架構(gòu)調(diào)整。 在 2015 年它變得越來(lái)越流行并被早期創(chuàng)業(yè)項(xiàng)目和開(kāi)源項(xiàng)目所采納。這門語(yǔ)言是 非常簡(jiǎn)單的,所以花一個(gè)周末你就能學(xué)會(huì)。
TypeScript 是一個(gè)可編譯成 JavaScript 的靜態(tài)類型語(yǔ)言 。這是由微軟開(kāi)發(fā)的,所以跟Visual Studio 和開(kāi)源的 Visual Studio Code editors 完美地集成了。它很快就要大紅大紫了,因?yàn)榧磳⒌絹?lái)的 Angular 2 就是用它寫的。靜態(tài)類型對(duì)大型團(tuán)隊(duì)的大型項(xiàng)目特別有用,所以如果你正在大型團(tuán)隊(duì)中做大型項(xiàng)目,或者僅僅出于好奇,你也應(yīng)該嘗試一下 TypeScript 。
如果為了好玩兒,你也可以試試某種函數(shù)式編程語(yǔ)言比如 Haskell 或者 Clojure。也有有趣的高性能語(yǔ)言比如 Rust 和 Elixir。如果你在找一份程序員的工作的話, 職業(yè)開(kāi)發(fā)語(yǔ)言比如Java (在第8版中有一些很好的新特性) 和 C# (感謝 Visual Studio Code 和 .net core 實(shí)現(xiàn)了跨平臺(tái)開(kāi)發(fā)和運(yùn)行) 都值得你在2016年投入時(shí)間。
挑一個(gè)或幾個(gè)學(xué)習(xí): Python 3, Go, PHP 7, ES2015, Node.js, Swift, TypeScript
現(xiàn)在應(yīng)該學(xué)習(xí)哪些語(yǔ)言和框架
JavaScript 框架
JavaScript框架是web開(kāi)發(fā)技術(shù)棧中非常重要的一部分,所以我們單獨(dú)拿一小節(jié)來(lái)說(shuō)這個(gè)。今年有兩個(gè)新標(biāo)準(zhǔn)—— Service Workers 和 Web Assembly,基本改變了現(xiàn)代 Web APP的開(kāi)發(fā)方式。還有一些我們覺(jué)得你在2016年應(yīng)該保持關(guān)注的框架新版本發(fā)布。
Angular.js 已經(jīng)成為了大型企業(yè)首選的 JavaScript 框架。 這個(gè)框架即將發(fā)布下一個(gè)大版本的消息相信大家已經(jīng)聽(tīng)過(guò)一段時(shí)間了, 在今年初的時(shí)候 Angular 2 發(fā)布了開(kāi)發(fā)者預(yù)覽版。 相對(duì) Angular 1 而言是一次顛覆性的重構(gòu),而對(duì)我們而言帶來(lái)了巨大的改進(jìn)。一旦正式發(fā)布就很有可能成為企業(yè)應(yīng)用開(kāi)發(fā)框架的首選,所以 Angular 2 的開(kāi)發(fā)經(jīng)驗(yàn)將會(huì)是你簡(jiǎn)歷里很好的一個(gè)加分項(xiàng)。我們建議再等幾個(gè)月直到最終版正式發(fā)布之后才用于生產(chǎn),不過(guò)你不妨現(xiàn)在就讀一讀他們的 快速上手指南。
React 在2015年里持續(xù)升溫并且持續(xù)升級(jí),越來(lái)越多的新項(xiàng)目采用它開(kāi)發(fā)。 幾個(gè)月前他們發(fā)布了新的開(kāi)發(fā)工具 。 Facebook 還發(fā)布了用于開(kāi)發(fā)支持 Android 和 iOS 平臺(tái)原生應(yīng)用的 React Native 框架,這個(gè)框架使用了原生界面配合運(yùn)行在后臺(tái)的JavaScript線程實(shí)現(xiàn)基于React開(kāi)發(fā)原生應(yīng)用。 可以參考我們今年發(fā)表的React初級(jí)教程 。
Polymer 1.0 是在5月份發(fā)布的。 這是第一個(gè)穩(wěn)定且可用于生產(chǎn)的版本. Polymer 主要是基于 Web Components 標(biāo)準(zhǔn), 這是一份將 HTML, JS 和 CSS 打包成獨(dú)立組件并便于快速引用的標(biāo)準(zhǔn)。目前只有 Chrome 和 Opera 支持 Web Components標(biāo)準(zhǔn),但是 Polymer 搞定了瀏覽器兼容性問(wèn)題。
Ember.js 也發(fā)布了一個(gè)新版本。 Ember 2 帶來(lái)了模塊化功能、廢棄了一些舊特性并提升了性能。 Ember 遵循語(yǔ)義化版本并且開(kāi)發(fā)團(tuán)隊(duì)盡可能保證大家能夠平滑升級(jí)。如果你需要一個(gè)穩(wěn)定且易于升級(jí)的框架的話,Ember是個(gè)不錯(cuò)的選擇。
挑一個(gè)或幾個(gè)學(xué)習(xí): Angular 2, React, Ember.js, Polymer, Web Components, Service Workers
現(xiàn)在應(yīng)該學(xué)習(xí)哪些語(yǔ)言和框架
前端
Bootstrap 在過(guò)去的一年里變得更加流行了,正在成為Web開(kāi)發(fā)的標(biāo)配。 使用SASS 并支持 flexbox 的第四版將在幾個(gè)月之后發(fā)布,官方保證可以從V3平滑升級(jí) (不會(huì)像2年前從 v2 升級(jí)到 v3 那樣 ), 所以盡管放心,你學(xué)的第3版的相關(guān)知識(shí)照樣會(huì)適用于第4版。
Foundation 是另一個(gè)可替代Bootstrap的前端框架。 第6版在年初的時(shí)候發(fā)布了,這個(gè)版本主要側(cè)重于模塊化,你可以根據(jù)需要定制自己需要的部分以便縮短加載時(shí)間。
MDL 是一個(gè)Google官方發(fā)布的用于開(kāi)發(fā)material design web app 的框架。 這個(gè)框架在今年初發(fā)布并和Polymer目標(biāo)相似,但是更容易上手。我們?cè)?jīng)寫過(guò)一篇 精彩的 MDL 與 Bootstrap 差異總結(jié)。
CSS預(yù)處理器也在持續(xù)改良。LESS 和 SASS 是當(dāng)下最流行的兩個(gè),大部分功能都差不多。但是,最新的 Bootstrap 4 都已經(jīng)轉(zhuǎn)向了 SASS,所以2016年要學(xué)的CSS預(yù)處理器中 SASS 獲得了一些優(yōu)勢(shì)。當(dāng)然了,也還有更新的 PostCSS 工具值得留意,但是我們強(qiáng)烈建議先掌握了預(yù)處理器再來(lái)學(xué)這個(gè)。
挑一個(gè)或幾個(gè)學(xué)習(xí): Bootstrap, MDL, Foundation, SASS, LESS, PostCSS
現(xiàn)在應(yīng)該學(xué)習(xí)哪些語(yǔ)言和框架
后端
這幾年的Web開(kāi)發(fā)有一個(gè)非常明顯的趨勢(shì)。越來(lái)越多的應(yīng)用邏輯轉(zhuǎn)移到了前端,然后后端僅僅是API。然而傳統(tǒng)的后端生成頁(yè)面的應(yīng)用依然還有生存空間,所以我們覺(jué)得學(xué)一個(gè)經(jīng)典的全站框架依然是非常重要的。
關(guān)鍵取決于你更喜歡那種語(yǔ)言,可選擇的非常多。用PHP你可以選 Symfony, Zend, Laravel (還有 Lumen, 這是新一代專注于API開(kāi)發(fā)的框架), Slim 等。用Python 有 Django 和 Flask 。用 Ruby 有Rails 和Sinatra。用Java有 Play 和 Spark。用Node.js你可以選擇 Express, Hapi 和 Sails.js ,還有 Go 語(yǔ)言的Revel。
AWS Lambda去年就已經(jīng)發(fā)布了,但是這個(gè)概念到現(xiàn)在才穩(wěn)定并能用于生產(chǎn)。這是一種可無(wú)限擴(kuò)展的完全取代傳統(tǒng)后端服務(wù)器的云服務(wù)。你可以根據(jù)API被訪問(wèn)時(shí)的特定條件或者路由來(lái)定義不同的響應(yīng)方法。這意味著你可以完全不用管服務(wù)器。
另一個(gè)趨勢(shì)是靜態(tài)站點(diǎn)生成器比如 Jekyll 和 Octopress(這里有一個(gè)完整的同類清單)。這類工具的主要功能是把一堆文本和圖片文件渲染成一個(gè)完整的靜態(tài)網(wǎng)站。那些以前通常自己搭一個(gè)Wordpress博客程序的開(kāi)發(fā)者現(xiàn)在更喜歡事先生成并直接上傳一個(gè)靜態(tài)網(wǎng)站。這樣會(huì)更加安全(沒(méi)有后端服務(wù)器也不需要數(shù)據(jù)庫(kù))并且性能非常好。結(jié)合 MaxCDN 或 CloudFlare之類的CDN服務(wù)可以讓用戶就近訪問(wèn),明顯減少等待時(shí)間。
挑一個(gè)學(xué)習(xí): 傳統(tǒng)的全棧后端框架, AWS Lambda, 一種靜態(tài)生成器
現(xiàn)在應(yīng)該學(xué)習(xí)哪些語(yǔ)言和框架
內(nèi)容管理系統(tǒng)(CMS)
我們主要介紹兩種最流行的 CMS系統(tǒng)。都是用PHP寫的并且易于部署和上手。他們都因?yàn)镻HP7的發(fā)布獲得了明顯的速度提升。
最近幾年 Wordpress 已經(jīng)變得早就不僅僅是個(gè)博客程序了。它是一個(gè)成熟的 CMS/框架,配合插件可以做任何一種網(wǎng)站。高質(zhì)量的 Wordpress 皮膚是一個(gè)巨大的市場(chǎng),很多自由職業(yè)者以 Wordpress 相關(guān)開(kāi)發(fā)為生。配合類似 WP-API 之類的項(xiàng)目你可以把Wordpress變成一組 REST API 。
Drupal 8 在今年發(fā)布了。這是一次側(cè)重現(xiàn)代開(kāi)發(fā)最佳實(shí)踐的重構(gòu)。使用了 Symfony 2 組件、 Composer 包管理器 和 Twig 模板引擎。成千上萬(wàn)的網(wǎng)站在使用 Drupal,它確實(shí)是以內(nèi)容為主的門戶網(wǎng)站的一個(gè)很好的選擇。
現(xiàn)在應(yīng)該學(xué)習(xí)哪些語(yǔ)言和框架
數(shù)據(jù)庫(kù)
這一年Web開(kāi)發(fā)社區(qū)對(duì) NoSQL 數(shù)據(jù)庫(kù)失去了一些熱情,重新回到了關(guān)系型數(shù)據(jù)庫(kù)比如 Postgres 和 MySQL 身邊。這方面著名的例外是 RethinkDB 和 Redis ,他們都很火,我強(qiáng)烈建議你在2016年都試試。
MySQL 是最火并且大部分主機(jī)供應(yīng)商都支持的開(kāi)源數(shù)據(jù)庫(kù)。在5.7版里,MySQL 也提供了JSON columns來(lái)存儲(chǔ)非關(guān)系型數(shù)據(jù)。如果你剛開(kāi)始接觸后端開(kāi)發(fā),你可能正在找連接到服務(wù)器已安裝的數(shù)據(jù)庫(kù)的方法。很可能是舊版本的,所以你沒(méi)辦法嘗試 JSON 類型數(shù)據(jù)。MySQL已經(jīng)包含在了很流行的 XAMPP 或 MAMP 之類的軟件包里,所以上手很容易。
挑一個(gè)學(xué)習(xí): Redis, RethinkDB, MySQL/MariaDB, PostgreSQL
移動(dòng)應(yīng)用
移動(dòng)平臺(tái)一直在進(jìn)步并且智能機(jī)的硬件配置現(xiàn)在跟低端筆記本的性能差不多了。這對(duì)于 hybrid 移動(dòng)開(kāi)發(fā)框架來(lái)說(shuō)是個(gè)好消息,基于web技術(shù)開(kāi)發(fā)的移動(dòng)應(yīng)用將得到更加順滑、更像原生的體驗(yàn)了。
我們?cè)?jīng)寫過(guò)一篇不錯(cuò)的 Hybrid應(yīng)用開(kāi)發(fā)框架概覽 你或許會(huì)感興趣。最火的 Ionic 框架 和 Meteor 都在最近發(fā)布了1.0版本且都適合做移動(dòng)應(yīng)用開(kāi)發(fā)。Facebook 開(kāi)源的 React Native,可以在后臺(tái)JavaScript進(jìn)程里運(yùn)行 React 組件并更新原生的UI界面,讓你可以用幾乎同一套代碼同時(shí)寫 iOS和Android應(yīng)用。