當前位置:
首頁 > 知識 > 程序員,你的技術過氣了嗎?

程序員,你的技術過氣了嗎?

【CSDN編者按】對於開發者來說,如何緊跟技術的潮流、不和時代脫節是一個很頭疼的問題。本文即針對 21 個編程領域的新寵以及快要過氣的技術,包括語言堆棧、容器大數據技術、移動開發、軟體編程等等,和各位程序員一一道來,究竟你的技術方向選對了嗎?

程序員,你的技術過氣了嗎?

以下為譯文:

眾所周知,時尚圈的風潮總是變來變去。一會流行短裙,一會又流行長裙;一會講究樸素,一會又講究花哨;一會流行厚領帶,一會又流行薄領帶。程序員對此總是嗤之以鼻,在他們眼裡,這樣的變來變去簡直莫名其妙且不可理喻。科技領域則沒有時尚圈這樣的飄忽不定,取而代之的是嚴謹、科學、數學和精確計算,一切都是那麼理性。

但是,這並意味著編程領域缺乏新的技術趨勢。事實上,編程趨勢同樣變化迅速,區別僅僅在於這些新的趨勢來源更加理性,通常是為了提升效率、可定製性和易用性。新的技術往往能夠讓現有的技術變得黯然失色,它們是理性與科技的結晶,而非簡單的奇思妙想。

本文展示了當前程序員中最熱門的技術以及逐漸開始變得冷門的技術。我相信肯定有不少人對這個列表表示質疑。編程總是充滿樂趣,引人入勝,各種技術日新月異且不斷變化,有時會引來激烈,某些看似「陳舊」的技術也許突然又火起來。

預處理器 K.O 完整語言堆棧

編譯的目的是將源碼轉化為機器可識別的可執行程序,在早期,每次編譯都需要重新構建所有東西。後來人們意識到可以讓編譯器自動完成一些工作,從而提升編譯效率。於是就有聰明人發明了預處理器,通過豐富的庫和API來翻譯新的代碼。

像 Python 或 JavaScript 這樣的腳本語言曾經只能局限於小項目,而如今它們變得越來越重要。有些人不喜歡 JavaScript ,於是創建了 CoffeeScript 這個預處理器,它可以讓程序員不依賴繁瑣語法的情況下重新編碼。此外,它還具有幾十種預測語法。

喜歡動態語言的人發明了 Groovy,它是一個 Java 簡化版,沒有太多複雜的語言。目前能夠運行在 JVM 上的語言有幾十種,比如 Groovy、Scala、Clojure、Kotlin,等等。同樣,能夠運行在 .Net 虛擬機上的語言也很多。

Serverless K.O Docker

說 Serverless 替代 Docker 其實不完全正確。Docker 容器無處不在。伺服器一直在不斷啟停容器。然而,Docker 容器實際上遠遠超出了預期。

仔細想想,你會發現微服務的代碼可能只有幾十行,但是為了讓 Node.js 或者其他模塊和 Docker 配合運行,你不得不在配置文件中寫很多行配置代碼。雖然配置文件有模板可循,但是有時依然讓人摸不著頭腦。

而使用新的 Serverless 架構,我們僅需幾行簡單的 if-then-else 語句即可完成項目部署。剩下的工作交給 Serverless 服務提供商就可以了。

過去我們時常抱怨異常鎖定且缺乏定製,如今 Serverless 的出現的確是所有開發、運維以及配置人員的福音。

JavaScript MV*框架 K.O 原始JavaScript文件

過去,開發者使用 JavaScript 幾乎都是從零開始編寫,比如彈出一個警告框,或者檢查表單中的電子郵件地址是否包含了 @ 符號。而如今,HTML AJAX 應用程序已經變得非常複雜,很少有人再完全從頭開始編寫。開發者往往會採用一個現成的框架,在其基礎上修改和添加一些代碼從而完成自己的業務。

目前市面上有多種框架來幫助你處理 Web 應用的事件和內容,比較常見的有 Kendo、Sencha、jQuery Mobile、AngularJS、Ember、Backbone、Meteor JS,等等。

這些僅僅針對 Web 應用程序。而對於智能手機或者平板電腦的跨平台開發框架也不少。比如 NativeScript、PhoneGap、Apache Cordova 和 React Native 等技術都可用於 HTML5 開發。

CSS框架 K.O 通用CSS

曾幾何時,給網頁添加一些新功能通常需要打開 CSS 文件然後增加一個諸如 font-style:italic 這樣的新命令。然後,你保存文件,結束了一上午的辛勤工作去吃午餐。如今的網頁已經變得非常複雜,用這樣簡單的命令修改 CSS 文件的方式不再可取。哪怕是調整一個顏色參數,都會讓頁面的整體效果亂作一團。

諸如 SASS 和 Compass 這樣的 CSS 框架於是應運而生。它們提供了變數、嵌套、混合插件等編程結構,促使開發者進行更加規範的編碼。這在編程領域並不新穎,但對於設計領域來說這確實是質的飛躍。

SVG K.O Flash

Flash 已經風靡多時。抗鋸齒渲染看起來不錯,於是一些才華橫溢的藝術家構建了一堆高深的 Flash 代碼來提供複雜的轉場和動畫。得益於休閒遊戲廣受大眾的歡迎,Flash 在網路上佔據著主導。

而如今,JavaScript 也能夠做同樣的事,於是瀏覽器廠商和開發人員欣喜若狂。他們發現像 SVG 這種新的格式能夠與 DOM 層更好地結合。並且 SVG 和 HTML 還包含了豐富的標籤,這對與網頁開發人員來說非常容易使用。此外,它們的 API 在 Canvas 對象上提供了精細的繪圖功能,同時還可以充分利用視頻卡。面對如此強大的功能,簡直沒有理由再使用 Flash。

不使用Hadoop進行大數據分析 K.O 使用Hadoop進行大數據分析

每個人都想要成為學校里的大個子,如果他們不是,變會尋找一個適合他們的學校。當「大數據」開始流經管理套件時,這些套件開始尋求最強大的大數據系統,就好像他們購買遊艇或者摩天大樓一樣,這並不奇怪。

不過比較諷刺的在於,很多業務體量都不夠大,不足以應用大數據解決方案。當然,像谷歌或者雅虎這樣的公司能夠跟蹤我們所有的網頁瀏覽記錄,他們有大到 PB 甚至 YTB 的數據文件。但是大多數公司擁有的數據量很小,甚至可以很容易地裝入普通 PC 的 RAM 中。我在一台配有16GB RAM 的 PC 上編寫一個程序,變足以處理十億數量的事件。在大多數演算法中,數據並不需要讀入內存,從 SSD 流式傳輸即可。

有些業務需要並行運行 Hadoop 雲中的幾十台機器以加快響應速度,但實際上可以在單台機器上進行,並且還不會出現協調或者通信的麻煩。

Spark K.O Hadoop

這並不是說 Hadoop 完全被淘汰了。主要是 Apache Spark 當前太過火爆,使得 Hadoop模型看上去有些古老。Spark 借鑒了 Hadoop 的一些思想,比如從大量數據中尋找規律並通過一些加快代碼運行速度的改進方法來對其更新。最大的差異可能在於,Spark 將數據保存在快速內存中,而不是從分散式文件系統進行文件讀寫。

當然,很多人將這兩者結合使用,在 Hadoop 分散式文件系統中利用 Spark 的數據處理速度優勢。Hadoop 和 Spark 通常是合作夥伴的關係而非競爭對手。

資料庫配置 K.O 軟體編程

很久以前,程序員經常開玩笑說他們不知道下個世紀編程會是什麼樣子,但他們知道它將被稱為 Fortran。這個笑話非常有趣,他們會從恐龍上掉下來,摔壞自己的木製內衣。然後回到配置資料庫的時代。

如今我們仍然在建立資料庫,但是現在我們認為的「資料庫」更加複雜和強大。現成的資料庫將進行遠距離同步,同時在一致性和速度之間進行靈活的折衷。一些像 Firebase這樣的雲服務會將新數據全部推送到運行在移動客戶端上的 Web 應用程序。

大部分 serverless 革命都基於這樣的認識,許多雲存儲現在非常強大,我們只需編寫一些 if-then-else 這樣的簡單子句就可以構建一個非常酷的 Web 應用程序。

遊戲框架 K.O 原生遊戲開發

以前開發遊戲就意味著需要僱傭大量的 C 語言程序員,然後從零開始編寫程序。當然,它耗資高達數十億美元,但是它看起來非常棒,運行速度像風一樣快。如今,定製代碼變得無比奢侈。大多數遊戲開發者都放棄了多年前的原始開發方式,開始使用Unity、Corona 或 LibGDX 這樣的庫來構建系統。他們不會像編寫庫一樣使用 C 來編寫應用程序。

開發遊戲遊戲不再從零開始編寫代碼,而是使用遊戲引擎。對此開發人員會因為拋棄情懷而羞愧嗎?答案是否定的。事實上,大部分開發人員都鬆了一口氣。因為他們不必再處理細節,能夠更加專註於遊戲人物和故事。

靜態網站生成器 K.O 單頁Web應用

還記得通過 URL 指向充滿靜態文本和圖片的網頁嗎?之後,動態的單頁 Web 應用程序出現了,這是一個可以獲取相關數據的 Web 應用程序。世事輪迴,如今又回到了過去,現在開發者開始使用靜態網站生成器。目前的生成器多達幾十個。就像 hybrid 一樣,它將所有數據積成一堆,然後編寫一些代碼將數據粘貼到某些模板中,以便每個靜態 URL 都有一個 HTML 文件,並且這些文件都來自數據表中。

開發者認為這些靜態網站速度很快,事實上也的確如此。它與 WordPress 和 Drupal 這樣的動態系統的工作方式大致相同,只需保證最新數據生成的靜態頁面的緩存充足即可。

GraphQL K.O REST

這並不意味著 REST 已死。我們只是想在 API 上做更多的事情,而 GraphQL 恰如其分。GraphQL 和 REST 一樣都是以 JSON 的形式返回數據。與許多 REST 調用一樣,GraphQL 也是通過 HTTP POST 觸發。只需少量的代碼即可通過 GraphQL 語法進行非常複雜的查詢。這使得程序員可以更簡單地詢問他們想要的內容,當有人需要稍微不同的 API 時,這樣也可減少伺服器端的工作量。

雲端IDE K.O 本地IDE

最早的時候,編譯器是命令行的形式。之後有人將編輯器和其他工具進行集成,從而創建了 IDE。而如今,基於瀏覽器的在線工具提供代碼編輯功能,甚至是運行中的系統代碼也可編輯,這足以淘汰傳統的 IDE。如果你不喜歡 WordPress 的功能,它帶有一個內置的編輯器,可以讓你隨時更改代碼。微軟的 Azure 允許你在其門戶中編寫JavaScript 代碼。儘管這些系統不提供太好的調試環境,編輯生產代碼也存在一些危險,但是這個想法是有價值的。

比較常見的有 AWS Cloud9、Codenvy 以及 Mozilla 的 WebIDE。這些基於 Web 的在線工具變得越來越強大。比如,你可以在微軟的 Azure 網站上構建一個完整的大數據分析項目。如果你正在探索 serverless,你可以將所有代碼寫入網頁的表單元素中,這個表格並不比你用 Facebook 更新朋友的表格大太多。

GPU K.O CPU

當程序很簡單並且指令安排得當時,CPU 處理這些簡單的程序非常得心應手,它就是電腦的核心。而如今的大型3D遊戲需要並行運行大量的圖形程序,此時 CPU 就顯得力不從心,視頻卡開始大放異彩。玩家經常在視頻卡上花費五六百美元甚至更多的錢,一些資深玩家會購買多個視頻卡,價格相對昂貴。

另外,推崇 GPU 的人並不僅限於遊戲玩家。計算機科學家正在將許多並行應用程序轉到 GPU 上,這樣一來其運行速度可以提升數百倍。此外,數據科學家也在伺服器上更多使用 GPU 從而加速其機器學習模型的開發。

GitHub K.O 簡歷

當然,你可以通過查看應聘者的成績單來了解此人。但是通過閱讀實際代碼來判斷候選人的能力更加直接。他們代碼注釋寫得如何?代碼功能是否豐富?架構是否具有高度擴展性?只要看一看他們的代碼,這些問題都迎刃而解。

參與開源項目對於找工作來說變得越來越重要。想要把實際工作中的代碼共享出來是很難的,但是開源代碼卻無處不在。

租賃 K.O 購買

亞馬遜在黑色星期五銷售計算機和其他電子產品,但是忘記了為其雲計算服務提供超值優惠。以前,公司都是自己開設數據中心,購買計算機,並僱用員工。而如今,很多公司都不再購買,而是選擇租賃的方式。他們按小時租用電腦、數據中心、員工甚至軟體。沒有人在乎東西的所有權,管理伺服器只會給自己憑添麻煩。租而不是買,這是一個好主意,在你的網站爆髮式增長之前,你只需根據點擊量付費。

複雜雲端 K.O 簡單雲端

過去雲計算提供商向客戶宣傳時一直強調其服務的簡單,只需點擊一個按鈕即可開啟雲服務。

而現在,找到合適價格的機器可能比編寫代碼花費的時間更多。機器的配置文件眾多,並且大多數雲服務提供商支持的機型跨度比較大。各種服務級別代表不同的性能,你需要對其測試,找到性價比最高的方案。只要能夠滿足程序運行需求,肯定選擇儘可能低的配置,因為這樣更省錢。

雲服務商還提供了多種優惠方案,比如提前付款或者批量採購。這樣一來選擇雲伺服器的過程就變得更加複雜了,如果開設一個課程來教大家如何選擇雲服務估計很暢銷。

移動Web應用 K.O 原生移動APP

假設你有一個 APP 的好點子。你可能會急於為 iOS、Android、Windows 10 Mobile 甚至黑莓 OS 編寫單獨的 APP 版本。每個平台的 APP 都需要一個單獨的團隊,使用不同的編程語言,然後再發布每個平台的應用程序商店。這種原生的 APP 開發方式耗時耗力。

除了原生的開發方式之外,你可以構建一個 HTML 應用程序並將其放置在網站上,所有平台都可以訪問。如果需求有變,你只需在線修改即可,無需乞求應用商店進行錯誤修復。隨著晶元的速度越來越快,HTML 的運行速度也越來越快,Web 應用與原生 APP 的速度差異越來越小,即使是複雜的互動式應用,HTML 應用也幾乎可以和原生 APP 媲美。

Android K.O iOS

過去幾年蘋果產品風頭正勁,而如今時代已變。雖然 iPhone 和 iPad 仍然擁有大量的粉絲,但是其銷量已遠遠不及 Android。根據報道,Android 手機佔比已經超過了80%。

核心因素在於價格。儘管目前 iOS 設備的價格與過去相比已經非常便宜,但是由於 Android 領域的充分競爭,其設備的價格僅為蘋果的五分之一。在功能差不多的情況下,很多人選擇 Android,沒有人跟錢過不去。

另一個因素在於開源的影響力。iOS 系統閉源,Android 系統則完全開源,任何人、任何產品都可以使用。市面上的 Android 設備豐富多彩,五花八門。有 Android 相機,甚至有 Android 冰箱。如果有人想基於 Android 開發產品,他們不需要徵求谷歌同意。想做就做,因此 Android 在越來越多的電子設備上大放異彩。

Node.js K.O Java EE, Ruby on Rails

伺服器一直在不斷優化線程模型,讓操作系統彌補程序員的低效或者不合理的行為。無論是愚蠢的循環還是浪費的計算,操作系統都通過線程切換來平衡性能。

Node.js 的誕生充分應用了 JavaScript 的回調編程模型,代碼的運行效率得到大幅提升。創建新線程的開銷變得明顯,Node.js 開始大放異彩。當程序員的代碼寫得很糟糕時,系統容易出現問題。正是因為資源限制,才迫使程序員寫出效率更高的代碼。

Node.js 通殺瀏覽器和伺服器端,兩者都運行相同的代碼,因此開發人員可以更輕鬆地沿用和重複功能。Node.js 的火爆理所當然。

PHP7.2 K.O 舊版PHP

過去,PHP 的出現淘汰了一些動態網頁。如果你想要更加豐富的功能,可以在 HTML標籤之間嵌入簡單的代碼。這對於 Web 開發人員來說確實可行,但是核心程序員會對此嗤之以鼻,因為這種做法太慢了。

如今,即時編譯器的加入讓 PHP 變得更快,JAVA 也曾採用了同樣的方法。藉助 HipHop 虛擬機,PHP 7.2 的速度是舊版 PHP 的兩倍。

在線教育 K.O 傳統教育

在線教育盛行已久,通過在線教育,每個人都可以調整課程播放速度,重複某些關鍵的知識點。在過去舊的研討會中,一次只能一人發言,而在線論壇對其進行了改進,每個人隨時都可以暢所欲言,大大提升了交流效率。

在線教育不僅讓教育變得簡單,還帶來了巨大的靈活性,學員隨時隨地都可學習。這也大大改變了人們的學習方式,不再需要投入四年的時間和昂貴的學費,並且所學的課程可能與生活毫不相關。

為什麼要參加編譯器的課程?因為你發現工作中需要了解編譯器原理。如果老闆想從關係資料庫切換到 NoSQL 引擎,那麼你可以花些時間學習現代數據存儲的課程。當你需要的時候,去學習最新的課程即可,而沒必要讓那些占時毫無用處的知識白白佔用自己的大腦。


原文:https://www.infoworld.com/article/3188464/application-development/21-hot-programming-trends-and-21-going-cold.html

作者:Peter Wayner

譯者:安翔,責編:言則

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

一文了解區塊鏈開發最全技術資料!
賈躍亭與孫宏斌的塑料兄弟情

TAG:CSDN |