改變程序員開發(fā)方式的15個(gè)技術(shù)

2020-04-18    分類: 網(wǎng)站建設(shè)

很久以前,那些傳說(shuō)中的“古董級(jí)”程序員和他們的匯編語(yǔ)言過(guò)著簡(jiǎn)單而安逸的生活。當(dāng)經(jīng)費(fèi)寬松的時(shí)候,程序員們會(huì)花錢雇傭人來(lái)幫他們撥動(dòng)連接在機(jī)器上用于存儲(chǔ)代碼的紙帶(參見穿孔紙帶);當(dāng)經(jīng)費(fèi)緊張的時(shí)候,程序員們則會(huì)自己親自動(dòng)手。那段時(shí)間的編程過(guò)程很簡(jiǎn)單:軟件加載內(nèi)存數(shù)據(jù),做一些算法,然后發(fā)送出來(lái)。這些就是全部的工作了。

時(shí)至今日,程序員們需要跟世界各地使用不同編程語(yǔ)言的人打交道并且還得忍受不同版本的編譯器。而陪伴程序員生活的代碼也變得不再單純了,有的代碼才誕生不久,有的則在舊函數(shù)庫(kù)里躺了幾十年了,而有的甚至連源代碼都不知道。團(tuán)隊(duì)協(xié)作機(jī)制和多樣復(fù)雜的開發(fā)特性是如今程序員開發(fā)的大環(huán)境。

那么,是什么改變了程序員曾經(jīng)簡(jiǎn)單而安逸的生活呢?讓我們來(lái)看看這15個(gè)改變程序員開發(fā)方式的技術(shù)吧。

1. 持續(xù)性集成

連接加載代碼庫(kù)的時(shí)候,在以前你能夠用這段時(shí)間休息、喝咖啡甚至去吃個(gè)午飯。而現(xiàn)在呢,你可沒(méi)有這么悠閑的時(shí)間了。代碼庫(kù)現(xiàn)在與持續(xù)構(gòu)建的系統(tǒng)緊密相連,編譯你的代碼、檢查當(dāng)前構(gòu)架、啟動(dòng)數(shù)以百計(jì)測(cè)試并隨時(shí)在你萎靡不振的時(shí)候提醒你每一個(gè)潛在的錯(cuò)誤。在你準(zhǔn)備離開辦公桌去休息的時(shí)候,它都在隨時(shí)提醒你:快回到工作上來(lái),這兒有些東西需要處理——你已經(jīng)徹底成為了它的奴隸了。

2. 框架

重用他人的工作成果就好比是站在巨人肩膀上,這并不是一個(gè)新的概念,但在今日這種方式已經(jīng)成為了應(yīng)用開發(fā)的絕對(duì)主流。人們極少選擇重頭開發(fā),而是將選擇自認(rèn)為最好最適合的框架,研究其應(yīng)用接口并編寫連接到這些接口的代碼來(lái)當(dāng)作是最有意義的工作。網(wǎng)站頁(yè)面離不開HTML和CSS;而代碼部分則會(huì)以Ext JS、ExpressJS等為基礎(chǔ)。

當(dāng)然,你可以選擇拋棄一切,重頭開發(fā),但是那意味著你是在自尋死路,因?yàn)槟阋粋€(gè)人的工作始終無(wú)法與一大群人相比。你需要明白,成為一個(gè)框架改良者才是你要做的事,如果你想編寫代碼的話,你要做的就是停止重頭開發(fā)找到一個(gè)現(xiàn)成的好框架去改良它。

3. 庫(kù)

庫(kù)是框架的近親,是常用代碼的集合,程序員的開發(fā)離不開它。有誰(shuí)可以在不使用jQuery庫(kù)的情況下編寫瀏覽器的代碼?有誰(shuí)能記住內(nèi)置函數(shù)GetElementByID寫的是什么?也許極少有人能夠做到吧,jQuery這樣的庫(kù)已經(jīng)廣泛的管理著各個(gè)層面的堆棧了。

人們經(jīng)常談?wù)撍麄冏钕矚g的語(yǔ)言,卻很少談?wù)撨@些語(yǔ)言是如何工作的。如果你打算雇傭程序員,你應(yīng)當(dāng)了解他對(duì)庫(kù)方面的了解情況。比如,JavaScript程序員了解jQuery和 Dojo tribe這一類庫(kù)么?會(huì)使用C++的程序員知道Allegro、Unity、Corona和其它的庫(kù)么?對(duì)庫(kù)的了解和對(duì)程序語(yǔ)言來(lái)龍去脈的了解同樣重要!

4. API

在以前,程序員們會(huì)很擔(dān)心數(shù)據(jù)結(jié)構(gòu),他們將信息包裝成位元組塊,并挨個(gè)逐一統(tǒng)計(jì)位元組個(gè)數(shù),以確保指針中的值能安排正確的間隔。如今,謝天謝地,編譯器幫我們幫處理了這一麻煩的事。

目前,我們使用更加嚴(yán)謹(jǐn)?shù)慕涌趤?lái)處理這個(gè)工作,它有一個(gè)動(dòng)聽的好名字:API。它們被安裝在完全不同的機(jī)器上,由完全不同的公司管理著,處理著我們的每一次請(qǐng)求。當(dāng)你需要將一個(gè)街道地址和一個(gè)郵政編碼轉(zhuǎn)化成經(jīng)緯度時(shí),只需要一點(diǎn)錢,購(gòu)買一個(gè)API就可以幫你完成關(guān)于這個(gè)問(wèn)題的所有答案。

在大多數(shù)情況下,數(shù)據(jù)不需要被緊密包裝,那些清點(diǎn)位元組的老游戲已經(jīng)被JSON、XML等可分析的數(shù)據(jù)結(jié)構(gòu)所代替了,當(dāng)你需要在某個(gè)位置插入正確的標(biāo)點(diǎn)的時(shí)候,已經(jīng)有一個(gè)程序庫(kù)在等著幫你處理了。

5. PaaS

現(xiàn)在也許再也用自己來(lái)構(gòu)建網(wǎng)站了。我們可以在別人的網(wǎng)站上創(chuàng)建一個(gè)賬戶并進(jìn)行定制。需要的只是網(wǎng)頁(yè)表單上的一些字段,你的新網(wǎng)站就可以擁有所有你想要的功能了,比如上傳一個(gè)關(guān)于貓的視頻到Y(jié)ouTube上或者在eBay上為一個(gè)糖果盒出價(jià)。

當(dāng)然,這有點(diǎn)夸張。如今許多PaaS選項(xiàng)需要程序員能夠熟知每個(gè)網(wǎng)頁(yè)表單需要放入什么。例如,Microsoft Azure平臺(tái)需要你放入一些能夠描述網(wǎng)站如何響應(yīng)的JavaScript函數(shù),然后Azure就會(huì)把它們包裝成正確的庫(kù)并把它們運(yùn)行在Node.js上。

6. 瀏覽器

以前有段時(shí)間,程序員編寫的桌面軟件、服務(wù)器軟件以及設(shè)備軟件都是不同的。它們都有各自與用戶溝通的方式。現(xiàn)在這些東西都通過(guò)瀏覽器了,當(dāng)我在家里建立一個(gè)本地文件服務(wù)器用于保存音樂(lè),我會(huì)將它放到網(wǎng)站上并定位一個(gè)URL地址。蘋果的桌面小工具多年來(lái)一直使用JavaScript和HTML。而許多跨平臺(tái)的移動(dòng)應(yīng)用程序也都是從HTML和附帶了Apache Cordova的JavaScript開始的。

當(dāng)然,也有一些例外。最好的游戲仍然使用自定義應(yīng)用,不需要瀏覽器。但是這一切也在慢慢的改變,越來(lái)越多的JavaScript開發(fā)人員找到了如何編寫屏幕畫布對(duì)象(可參見用CSS3繪制的湯普森一家)。而憤怒的小鳥等游戲已經(jīng)運(yùn)行在了瀏覽器窗口中。

7. 應(yīng)用程序容器

構(gòu)建服務(wù)器在過(guò)去是一件艱苦的工作。程序員想要在其它地方運(yùn)行他們的代碼,需要向團(tuán)隊(duì)的服務(wù)器管理員發(fā)送關(guān)于哪些軟件需要安裝的備忘錄。有些時(shí)候服務(wù)器調(diào)用了正確的庫(kù),但是有些時(shí)候卻沒(méi)有,這就需要重新再弄。

現(xiàn)在,象Docker這樣的應(yīng)用程序容器可以讓我們只需一個(gè)按鈕就可以將所有庫(kù)正確的打包到可移植的容器中。如果它能夠運(yùn)行在我們的測(cè)試機(jī)上,那么它就幾乎肯定可以運(yùn)行在服務(wù)器上。由于所有的東西都是相互捆綁在一起的,所以大多數(shù)工作平臺(tái)和服務(wù)器的兼容性問(wèn)題將蕩然無(wú)存。

8. IaaS

前面提到的服務(wù)器管理員到哪里去了?在過(guò)去這些人可都是悠閑的很啊。現(xiàn)在的服務(wù)器管理員你已經(jīng)看不到了,他們已經(jīng)被抽象出來(lái)放進(jìn)了云層里,作為全球范圍內(nèi)的數(shù)據(jù)中心從事著過(guò)去服務(wù)器管理員的工作,管理著從云端這頭到那頭的不同公司。很少有程序員需要基礎(chǔ)設(shè)施團(tuán)隊(duì)為他們的新項(xiàng)目構(gòu)建一個(gè)新的服務(wù)器。大多數(shù)的人只需要登錄一個(gè)網(wǎng)站,按一個(gè)按鈕,使服務(wù)器運(yùn)行就可以了。這一切都如此容易,這些IaaS管理網(wǎng)站讓你無(wú)需再專門為服務(wù)器管理員開一份薪水,也將服務(wù)器管理員從整日圍著服務(wù)器轉(zhuǎn)的牢獄中拯救了出來(lái)。

9. Node.js和JavaScript

在很多程序員都還沒(méi)有誕生的時(shí)候,Web服務(wù)器只支持靜態(tài)HTML。然后有人想到了如何創(chuàng)建與數(shù)據(jù)庫(kù)交互的動(dòng)態(tài)服務(wù)器。那個(gè)時(shí)候,每一個(gè)團(tuán)隊(duì)都需要一個(gè)人編寫SQL數(shù)據(jù)庫(kù),一個(gè)人用PHP或者Java編寫服務(wù)器代碼,一個(gè)人去設(shè)計(jì)HTML模板。當(dāng)客戶端的AJAX和JavaScript技術(shù)風(fēng)靡的時(shí)候,網(wǎng)站還需要有人會(huì)使用這些語(yǔ)言。

現(xiàn)在,這些都是由JavaScript技術(shù)來(lái)完成了。在瀏覽器方面使用的是JavaScript,而在服務(wù)器層和數(shù)據(jù)庫(kù)層則分別是由Node.js和MongoDB/CouchDB來(lái)完成。甚至對(duì)于HTML頁(yè)面,都可以使用JavaScript代碼在Ext JS或者jQueryMobile框架上進(jìn)行客戶端生成來(lái)完成。

10. 二級(jí)市場(chǎng)

如果你正在做一款游戲,你可以請(qǐng)?jiān)O(shè)計(jì)師來(lái)為你設(shè)計(jì)令人驚嘆的模型,甚至可以請(qǐng)幾個(gè)程序員來(lái)幫你添加視覺效果使游戲看起來(lái)更酷。當(dāng)然你也可以選擇去二級(jí)市場(chǎng)購(gòu)買開發(fā)需要的東西,這跟去實(shí)體零售店去購(gòu)買需要的物品一樣。當(dāng)我在寫這篇文章的時(shí)候,二級(jí)市場(chǎng)的一個(gè)下水道場(chǎng)景拼圖工具包正在打折,這是一個(gè)用于構(gòu)建不同尺寸的下水道游戲場(chǎng)景的模塊化工具包。但即使是恢復(fù)原價(jià),這個(gè)工具包的價(jià)格也不會(huì)超過(guò)45美元。如果換作是設(shè)計(jì)師或者程序員,你開這個(gè)價(jià)格他肯定不會(huì)做了。

這些出售插件、擴(kuò)展包、庫(kù)和其它附件的二級(jí)市場(chǎng)現(xiàn)在變得越來(lái)越火爆了。與前面所說(shuō)的庫(kù)和框架一樣,通過(guò)合適的價(jià)格購(gòu)買需要的部件,無(wú)需過(guò)多的編程就可以融入開發(fā)項(xiàng)目中。在國(guó)內(nèi),這一類二級(jí)市場(chǎng)通常被稱為控件網(wǎng)。

11. 虛擬機(jī)

為硅片寫代碼的日子已經(jīng)離我們遠(yuǎn)去了。現(xiàn)在我們的大部分代碼都運(yùn)行在虛擬機(jī)上,它能夠把你的指令轉(zhuǎn)化成芯片能夠理解的語(yǔ)言。Java虛擬機(jī)、C#/.Net虛擬機(jī)以及現(xiàn)在的JavaScript引擎成為了編寫代碼的最主要對(duì)象。

大受歡迎的虛擬機(jī)不斷地將許多東西吸收進(jìn)堆棧里。在過(guò)去,如果你想創(chuàng)建一個(gè)新的語(yǔ)言,你需要構(gòu)建從預(yù)處理器到寄存器分配器的整個(gè)堆棧?,F(xiàn)在新的語(yǔ)言站在了虛擬機(jī)這個(gè)巨人的肩膀上。Clojure、Scala、Jython、JRuby等語(yǔ)言都使用了Sun公司(現(xiàn)在已經(jīng)Oracle公司的一部分了)的偉大虛擬機(jī)技術(shù)。

瀏覽器的世界與上面所述很相似。你可以選擇創(chuàng)建自己的瀏覽器和語(yǔ)言,或者在 JavaScript上作為模擬進(jìn)行交叉編譯。這就是人們構(gòu)建CoffeeScript這樣的清理工具想要完成的事。如果你覺得這樣很容易混淆,谷歌產(chǎn)品GWT(Google Web Toolkit)還可以幫你把Java轉(zhuǎn)換成JavaScript。

12. 社交媒體網(wǎng)站

在早期的互聯(lián)網(wǎng),當(dāng)你建立網(wǎng)站的時(shí)候,你會(huì)交叉手指祈禱大家能夠找到它,當(dāng)大家找到它之后,如果需要再次訪問(wèn)這個(gè)頁(yè)面則必須記住它的URL地址。

現(xiàn)在,越來(lái)越多的網(wǎng)頁(yè)被放進(jìn)了Facebook或者Salesforce這樣的大容器里,如果你建立了自己的網(wǎng)站,可能只有很少的人來(lái)訪問(wèn)它,因?yàn)榻^大多數(shù)用戶都去點(diǎn)擊訪問(wèn)Facebook或者Salesforce這樣的社交媒體網(wǎng)站了。

而具體的解決方案就是建立一個(gè)Facebook或Salesforce的應(yīng)用,它們會(huì)讓你加入進(jìn)來(lái),然后將你的網(wǎng)頁(yè)集成進(jìn)來(lái)成為平臺(tái)上的一個(gè)點(diǎn)。可是到頭來(lái),你的應(yīng)用仍然會(huì)受到很大的限制和操控。可是,你還有什么辦法呢?要么為選擇大型門戶網(wǎng)站服務(wù),要么選擇被互聯(lián)網(wǎng)洪流所吞沒(méi)。

13. 開發(fā)工具

曾幾何時(shí),我們?cè)诜?wù)器上安裝的軟件非常單一,現(xiàn)在我們租用大量服務(wù)器來(lái)滿足成百上千臺(tái)機(jī)器的需求,這些服務(wù)器為滿足不同需求,需要更新多種最新軟件,它們能夠自動(dòng)完成這些用手動(dòng)不能勝任的工作。

進(jìn)入“devops”模式,那些基礎(chǔ)工具如Chef和Puppet可以幫助你完成服務(wù)器的維護(hù)。將最新的軟件放置在云端,這些工具將會(huì)通過(guò)讓每臺(tái)機(jī)器運(yùn)行相同的代碼來(lái)處理這些工作,它們自動(dòng)化的完成了我們過(guò)去在每臺(tái)機(jī)器手動(dòng)處理的事情。

某些服務(wù)項(xiàng)目如Google App Engine已經(jīng)著手從內(nèi)部處理這些工作了。你所要做的全部工作就是上傳你的應(yīng)用程序,然后它就會(huì)自動(dòng)為你服務(wù)了。除了能夠看到CPU的使用狀況清單,你甚至在不知道后臺(tái)都發(fā)生了什么的情況下就完成了軟件的更新和維護(hù)。

14. GitHub、SourceForge等代碼共享的社交平臺(tái)

代碼共享網(wǎng)站為開源世界作出了大貢獻(xiàn),在SourceForge等出現(xiàn)以前,軟件就是由你自己來(lái)編寫并且只能與自己分享成果的東西,如果某人想要復(fù)制你的代碼,在征求到你的同意后,他們需要從你這里接收一個(gè)tar壓縮文件包。

現(xiàn)在代碼共享已經(jīng)成為社交網(wǎng)絡(luò)的一部分。SourceForge和GitHub等網(wǎng)站會(huì)發(fā)布所有代碼供大家觀看和下載。它們將程序的維護(hù)、共享和代碼注釋合并到了一個(gè)易于訪問(wèn)的地方。你可以在同一個(gè)界面閱讀代碼并提出修改建議。這就是為什么許多項(xiàng)目在一周時(shí)間時(shí)間內(nèi)有數(shù)萬(wàn)甚至數(shù)十萬(wàn)的訪問(wèn)次數(shù),而這在以前是絕不可能出現(xiàn)的。

這種代碼共享的主流模式被大多數(shù)專利項(xiàng)目推崇,象GitHub和BitBucket這樣的網(wǎng)站都支持它們?yōu)槌鍪鄯枪_存儲(chǔ)庫(kù)而將項(xiàng)目代碼共享給權(quán)限受限的用戶群的做法。

15. 性能監(jiān)控

在最早的時(shí)候,代碼跟蹤是非常簡(jiǎn)單的事情。當(dāng)編碼開始時(shí)開始打印,編碼結(jié)束時(shí)打印終止。如果你有了一些新的想法,那么你可以在原來(lái)的程序后面增加一些關(guān)于調(diào)整的運(yùn)算。

但現(xiàn)在,這種方式已經(jīng)過(guò)時(shí)了,許多問(wèn)題都不僅發(fā)生在機(jī)器本身,就算添加一個(gè)代碼分析器也并不能完全解決問(wèn)題,因?yàn)楣收显蜻€包括網(wǎng)絡(luò)線路以及數(shù)據(jù)庫(kù)緩慢等方面。現(xiàn)代工具追蹤網(wǎng)絡(luò)要求軟件網(wǎng)絡(luò)與獨(dú)立模塊的性能一致,這是辨別是否正常工作的唯一方法。

分享名稱:改變程序員開發(fā)方式的15個(gè)技術(shù)
轉(zhuǎn)載源于:http://www.muchs.cn/news/81908.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站策劃營(yíng)銷型網(wǎng)站建設(shè)、ChatGPT虛擬主機(jī)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)