一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

程序員,你的技術(shù)過氣了嗎?

 新用戶0175WbuX 2022-01-28

  對于開發(fā)者來說,如何緊跟技術(shù)的潮流、不和時代脫節(jié)是一個很頭疼的問題。本文即針對 21 個編程領(lǐng)域的新寵以及快要過氣的技術(shù),包括語言堆棧、容器大數(shù)據(jù)技術(shù)、移動開發(fā)、軟件編程等等,和各位程序員一一道來,究竟你的技術(shù)方向選對了嗎?

  程序員,你的技術(shù)過氣了嗎?

  以下為譯文:

  眾所周知,時尚圈的風(fēng)潮總是變來變?nèi)?。一會流行短裙,一會又流行長裙;一會講究樸素,一會又講究花哨;一會流行厚領(lǐng)帶,一會又流行薄領(lǐng)帶。程序員對此總是嗤之以鼻,在他們眼里,這樣的變來變?nèi)ズ喼蹦涿钋也豢衫碛???萍碱I(lǐng)域則沒有時尚圈這樣的飄忽不定,取而代之的是嚴(yán)謹(jǐn)、科學(xué)、數(shù)學(xué)和精確計算,一切都是那么理性。

  但是,這并意味著編程領(lǐng)域缺乏新的技術(shù)趨勢。事實(shí)上,編程趨勢同樣變化迅速,區(qū)別僅僅在于這些新的趨勢來源更加理性,通常是為了提升效率、可定制性和易用性。新的技術(shù)往往能夠讓現(xiàn)有的技術(shù)變得黯然失色,它們是理性與科技的結(jié)晶,而非簡單的奇思妙想。

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

  ▌預(yù)處理器 K.O 完整語言堆棧

  編譯的目的是將源碼轉(zhuǎn)化為機(jī)器可識別的可執(zhí)行程序,在早期,每次編譯都需要重新構(gòu)建所有東西。后來人們意識到可以讓編譯器自動完成一些工作,從而提升編譯效率。于是就有聰明人發(fā)明了預(yù)處理器,通過豐富的庫和API來翻譯新的代碼。

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

  喜歡動態(tài)語言的人發(fā)明了 Groovy,它是一個 Java 簡化版,沒有太多復(fù)雜的語言。目前能夠運(yùn)行在 JVM 上的語言有幾十種,比如 Groovy、Scala、Clojure、Kotlin,等等。同樣,能夠運(yùn)行在 .Net 虛擬機(jī)上的語言也很多。

  ▌Serverless K.O Docker

  說 Serverless 替代 Docker 其實(shí)不完全正確。Docker 容器無處不在。服務(wù)器一直在不斷啟停容器。然而,Docker 容器實(shí)際上遠(yuǎn)遠(yuǎn)超出了預(yù)期。

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

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

  過去我們時常抱怨異常鎖定且缺乏定制,如今 Serverless 的出現(xiàn)的確是所有開發(fā)、運(yùn)維以及配置人員的福音。

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

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

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

  這些僅僅針對 Web 應(yīng)用程序。而對于智能手機(jī)或者平板電腦的跨平臺開發(fā)框架也不少。比如 NativeScript、PhoneGap、Apache Cordova 和 React Native 等技術(shù)都可用于 HTML5 開發(fā)。

  ▌CSS框架 K.O 通用CSS

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

  諸如 SASS 和 Compass 這樣的 CSS 框架于是應(yīng)運(yùn)而生。它們提供了變量、嵌套、混合插件等編程結(jié)構(gòu),促使開發(fā)者進(jìn)行更加規(guī)范的編碼。這在編程領(lǐng)域并不新穎,但對于設(shè)計領(lǐng)域來說這確實(shí)是質(zhì)的飛躍。

  ▌SVG K.O Flash

  Flash 已經(jīng)風(fēng)靡多時。抗鋸齒渲染看起來不錯,于是一些才華橫溢的藝術(shù)家構(gòu)建了一堆高深的 Flash 代碼來提供復(fù)雜的轉(zhuǎn)場和動畫。得益于休閑游戲廣受大眾的歡迎,F(xiàn)lash 在網(wǎng)絡(luò)上占據(jù)著主導(dǎo)。

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

  ▌不使用Hadoop進(jìn)行大數(shù)據(jù)分析 K.O 使用Hadoop進(jìn)行大數(shù)據(jù)分析

  每個人都想要成為學(xué)校里的大個子,如果他們不是,變會尋找一個適合他們的學(xué)校。當(dāng)“大數(shù)據(jù)”開始流經(jīng)管理套件時,這些套件開始尋求最強(qiáng)大的大數(shù)據(jù)系統(tǒng),就好像他們購買游艇或者摩天大樓一樣,這并不奇怪。

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

  有些業(yè)務(wù)需要并行運(yùn)行 Hadoop 云中的幾十臺機(jī)器以加快響應(yīng)速度,但實(shí)際上可以在單臺機(jī)器上進(jìn)行,并且還不會出現(xiàn)協(xié)調(diào)或者通信的麻煩。

  ▌Spark K.O Hadoop

  這并不是說 Hadoop 完全被淘汰了。主要是 Apache Spark 當(dāng)前太過火爆,使得 Hadoop模型看上去有些古老。Spark 借鑒了 Hadoop 的一些思想,比如從大量數(shù)據(jù)中尋找規(guī)律并通過一些加快代碼運(yùn)行速度的改進(jìn)方法來對其更新。最大的差異可能在于,Spark 將數(shù)據(jù)保存在快速內(nèi)存中,而不是從分布式文件系統(tǒng)進(jìn)行文件讀寫。

  當(dāng)然,很多人將這兩者結(jié)合使用,在 Hadoop 分布式文件系統(tǒng)中利用 Spark 的數(shù)據(jù)處理速度優(yōu)勢。Hadoop 和 Spark 通常是合作伙伴的關(guān)系而非競爭對手。

  ▌數(shù)據(jù)庫配置 K.O 軟件編程

  很久以前,程序員經(jīng)常開玩笑說他們不知道下個世紀(jì)編程會是什么樣子,但他們知道它將被稱為 Fortran。這個笑話非常有趣,他們會從恐龍上掉下來,摔壞自己的木制內(nèi)衣。然后回到配置數(shù)據(jù)庫的時代。

  如今我們?nèi)匀辉诮?shù)據(jù)庫,但是現(xiàn)在我們認(rèn)為的“數(shù)據(jù)庫”更加復(fù)雜和強(qiáng)大?,F(xiàn)成的數(shù)據(jù)庫將進(jìn)行遠(yuǎn)距離同步,同時在一致性和速度之間進(jìn)行靈活的折衷。一些像 Firebase這樣的云服務(wù)會將新數(shù)據(jù)全部推送到運(yùn)行在移動客戶端上的 Web 應(yīng)用程序。

  大部分 serverless 革命都基于這樣的認(rèn)識,許多云存儲現(xiàn)在非常強(qiáng)大,我們只需編寫一些 if-then-else 這樣的簡單子句就可以構(gòu)建一個非??岬?Web 應(yīng)用程序。

  ▌游戲框架 K.O 原生游戲開發(fā)

  以前開發(fā)游戲就意味著需要雇傭大量的 C 語言程序員,然后從零開始編寫程序。當(dāng)然,它耗資高達(dá)數(shù)十億美元,但是它看起來非常棒,運(yùn)行速度像風(fēng)一樣快。如今,定制代碼變得無比奢侈。大多數(shù)游戲開發(fā)者都放棄了多年前的原始開發(fā)方式,開始使用Unity、Corona 或 LibGDX 這樣的庫來構(gòu)建系統(tǒng)。他們不會像編寫庫一樣使用 C 來編寫應(yīng)用程序。

  開發(fā)游戲游戲不再從零開始編寫代碼,而是使用二手游戲引擎。對此開發(fā)人員會因?yàn)閽仐壡閼讯呃??答案是否定的。事?shí)上,大部分開發(fā)人員都松了一口氣。因?yàn)樗麄儾槐卦偬幚砑?xì)節(jié),能夠更加專注于游戲人物和故事。

  ▌靜態(tài)網(wǎng)站生成器 K.O 單頁Web應(yīng)用

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

  開發(fā)者認(rèn)為這些靜態(tài)網(wǎng)站速度很快,事實(shí)上也的確如此。它與 WordPress 和 Drupal 這樣的動態(tài)系統(tǒng)的工作方式大致相同,只需保證最新數(shù)據(jù)生成的靜態(tài)頁面的緩存充足即可。

  ▌GraphQL K.O REST

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

  ▌云端IDE K.O 本地IDE

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

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

  ▌GPU K.O CPU

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

  另外,推崇 GPU 的人并不僅限于游戲玩家。計算機(jī)科學(xué)家正在將許多并行應(yīng)用程序轉(zhuǎn)到 GPU 上,這樣一來其運(yùn)行速度可以提升數(shù)百倍。此外,數(shù)據(jù)科學(xué)家也在服務(wù)器上更多使用 GPU 從而加速其機(jī)器學(xué)習(xí)模型的開發(fā)。

  ▌GitHub K.O 簡歷

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

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

  ▌租賃 K.O 購買

  亞馬遜在黑色星期五銷售計算機(jī)和其他電子產(chǎn)品,但是忘記了為其云計算服務(wù)提供超值優(yōu)惠。以前,公司都是自己開設(shè)數(shù)據(jù)中心,購買計算機(jī),并雇用員工。而如今,很多公司都不再購買,而是選擇租賃的方式。他們按小時租用電腦、數(shù)據(jù)中心、員工甚至軟件。沒有人在乎東西的所有權(quán),管理服務(wù)器只會給自己憑添麻煩。租而不是買,這是一個好主意,在你的網(wǎng)站爆發(fā)式增長之前,你只需根據(jù)點(diǎn)擊量付費(fèi)。

  ▌復(fù)雜云端 K.O 簡單云端

  過去云計算提供商向客戶宣傳時一直強(qiáng)調(diào)其服務(wù)的簡單,只需點(diǎn)擊一個按鈕即可開啟云服務(wù)。

  而現(xiàn)在,找到合適價格的機(jī)器可能比編寫代碼花費(fèi)的時間更多。機(jī)器的配置文件眾多,并且大多數(shù)云服務(wù)提供商支持的機(jī)型跨度比較大。各種服務(wù)級別代表不同的性能,你需要對其測試,找到性價比最高的方案。只要能夠滿足程序運(yùn)行需求,肯定選擇盡可能低的配置,因?yàn)檫@樣更省錢。

  云服務(wù)商還提供了多種優(yōu)惠方案,比如提前付款或者批量采購。這樣一來選擇云服務(wù)器的過程就變得更加復(fù)雜了,如果開設(shè)一個課程來教大家如何選擇云服務(wù)估計很暢銷。

  ▌移動Web應(yīng)用 K.O 原生移動APP

  假設(shè)你有一個 APP 的好點(diǎn)子。你可能會急于為 iOS、Android、Windows 10 Mobile 甚至黑莓 OS 編寫單獨(dú)的 APP 版本。每個平臺的 APP 都需要一個單獨(dú)的團(tuán)隊,使用不同的編程語言,然后再發(fā)布每個平臺的應(yīng)用程序商店。這種原生的 APP 開發(fā)方式耗時耗力。

  除了原生的開發(fā)方式之外,你可以構(gòu)建一個 HTML 應(yīng)用程序并將其放置在網(wǎng)站上,所有平臺都可以訪問。如果需求有變,你只需在線修改即可,無需乞求應(yīng)用商店進(jìn)行錯誤修復(fù)。隨著芯片的速度越來越快,HTML 的運(yùn)行速度也越來越快,Web 應(yīng)用與原生 APP 的速度差異越來越小,即使是復(fù)雜的交互式應(yīng)用,HTML 應(yīng)用也幾乎可以和原生 APP 媲美。

  ▌Android K.O iOS

  過去幾年蘋果產(chǎn)品風(fēng)頭正勁,而如今時代已變。雖然 iPhone 和 iPad 仍然擁有大量的粉絲,但是其銷量已遠(yuǎn)遠(yuǎn)不及 Android。根據(jù)報道,Android 手機(jī)占比已經(jīng)超過了80%。

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

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

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

  服務(wù)器一直在不斷優(yōu)化線程模型,讓操作系統(tǒng)彌補(bǔ)程序員的低效或者不合理的行為。無論是愚蠢的循環(huán)還是浪費(fèi)的計算,操作系統(tǒng)都通過線程切換來平衡性能。

  Node.js 的誕生充分應(yīng)用了 JavaScript 的回調(diào)編程模型,代碼的運(yùn)行效率得到大幅提升。創(chuàng)建新線程的開銷變得明顯,Node.js 開始大放異彩。當(dāng)程序員的代碼寫得很糟糕時,系統(tǒng)容易出現(xiàn)問題。正是因?yàn)橘Y源限制,才迫使程序員寫出效率更高的代碼。

  Node.js 通殺瀏覽器和服務(wù)器端,兩者都運(yùn)行相同的代碼,因此開發(fā)人員可以更輕松地沿用和重復(fù)功能。Node.js 的火爆理所當(dāng)然。

  ▌PHP7.2 K.O 舊版PHP

  過去,PHP 的出現(xiàn)淘汰了一些動態(tài)網(wǎng)頁。如果你想要更加豐富的功能,可以在 HTML標(biāo)簽之間嵌入簡單的代碼。這對于 Web 開發(fā)人員來說確實(shí)可行,但是核心程序員會對此嗤之以鼻,因?yàn)檫@種做法太慢了。

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

  ▌在線教育 K.O 傳統(tǒng)教育

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

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

  為什么要參加編譯器的課程?因?yàn)槟惆l(fā)現(xiàn)工作中需要了解編譯器原理。如果老板想從關(guān)系數(shù)據(jù)庫切換到 NoSQL 引擎,那么你可以花些時間學(xué)習(xí)現(xiàn)代數(shù)據(jù)存儲的課程。當(dāng)你需要的時候,去學(xué)習(xí)最新的課程即可,而沒必要讓那些占時毫無用處的知識白白占用自己的大腦。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品老司机视频在线观看 | 欧洲亚洲精品自拍偷拍| 国产av大片一区二区三区| 国产精品免费自拍视频| 不卡免费成人日韩精品| 日本三区不卡高清更新二区| 国产精品不卡一区二区三区四区| 风间中文字幕亚洲一区| 欧美av人人妻av人人爽蜜桃| 成人国产激情在线视频| 91人人妻人人爽人人狠狠| 国产成人精品午夜福利| 日本人妻精品有码字幕| 久久国产人妻一区二区免费| 尹人大香蕉一级片免费看| 高清一区二区三区大伊香蕉 | 国产级别精品一区二区视频| 国产精品美女午夜视频| 亚洲中文在线男人的天堂| 亚洲国产精品一区二区| 国产乱久久亚洲国产精品| 国产毛片对白精品看片| 国产专区亚洲专区久久| 久久精品国产一区久久久| 日韩欧美高清国内精品| 欧美日韩国产另类一区二区| 精品老司机视频在线观看| 国产欧美日韩视频91| 一区二区三区精品人妻| 国产一区二区不卡在线播放| 亚洲一区二区三区中文久久| 国产成人精品资源在线观看| 人妻熟女中文字幕在线| 91麻豆视频国产一区二区| 国产成人精品视频一区二区三区| 国产精品日韩欧美第一页| 激情视频在线视频在线视频| 亚洲美女国产精品久久| 九九热精品视频免费观看| 免费在线观看欧美喷水黄片| 91日韩在线观看你懂的|