2020-04-18 分類: 網(wǎng)站建設(shè)
時(shí)至今日,程序員們需要跟世界各地使用不同編程語言的人打交道并且還得忍受不同版本的編譯器。而陪伴程序員生活的代碼也變得不再單純了,有的代碼才誕生不久,有的則在舊函數(shù)庫里躺了幾十年了,而有的甚至連源代碼都不知道。團(tuán)隊(duì)協(xié)作機(jī)制和多樣復(fù)雜的開發(fā)特性是如今程序員開發(fā)的大環(huán)境。
那么,是什么改變了程序員曾經(jīng)簡單而安逸的生活呢?讓我們來看看這15個(gè)改變程序員開發(fā)方式的技術(shù)吧。
1. 持續(xù)性集成連接加載代碼庫的時(shí)候,在以前你能夠用這段時(shí)間休息、喝咖啡甚至去吃個(gè)午飯。而現(xiàn)在呢,你可沒有這么悠閑的時(shí)間了。代碼庫現(xiàn)在與持續(xù)構(gòu)建的系統(tǒng)緊密相連,編譯你的代碼、檢查當(dāng)前構(gòu)架、啟動(dòng)數(shù)以百計(jì)測試并隨時(shí)在你萎靡不振的時(shí)候提醒你每一個(gè)潛在的錯(cuò)誤。在你準(zhǔn)備離開辦公桌去休息的時(shí)候,它都在隨時(shí)提醒你:快回到工作上來,這兒有些東西需要處理——你已經(jīng)徹底成為了它的奴隸了。
2. 框架
重用他人的工作成果就好比是站在巨人肩膀上,這并不是一個(gè)新的概念,但在今日這種方式已經(jīng)成為了應(yīng)用開發(fā)的絕對主流。人們極少選擇重頭開發(fā),而是將選擇自認(rèn)為最好最適合的框架,研究其應(yīng)用接口并編寫連接到這些接口的代碼來當(dāng)作是最有意義的工作。網(wǎng)站頁面離不開HTML和CSS;而代碼部分則會(huì)以Ext JS、ExpressJS等為基礎(chǔ)。當(dāng)然,你可以選擇拋棄一切,重頭開發(fā),但是那意味著你是在自尋死路,因?yàn)槟阋粋€(gè)人的工作始終無法與一大群人相比。你需要明白,成為一個(gè)框架改良者才是你要做的事,如果你想編寫代碼的話,你要做的就是停止重頭開發(fā)找到一個(gè)現(xiàn)成的好框架去改良它。
3. 庫
庫是框架的近親,是常用代碼的集合,程序員的開發(fā)離不開它。有誰可以在不使用jQuery庫的情況下編寫瀏覽器的代碼?有誰能記住內(nèi)置函數(shù)GetElementByID寫的是什么?也許極少有人能夠做到吧,jQuery這樣的庫已經(jīng)廣泛的管理著各個(gè)層面的堆棧了。
人們經(jīng)常談?wù)撍麄冏钕矚g的語言,卻很少談?wù)撨@些語言是如何工作的。如果你打算雇傭程序員,你應(yīng)當(dāng)了解他對庫方面的了解情況。比如,JavaScript程序員了解jQuery和 Dojo tribe這一類庫么?會(huì)使用C++的程序員知道Allegro、Unity、Corona和其它的庫么?對庫的了解和對程序語言來龍去脈的了解同樣重要!
4. API
在以前,程序員們會(huì)很擔(dān)心數(shù)據(jù)結(jié)構(gòu),他們將信息包裝成位元組塊,并挨個(gè)逐一統(tǒng)計(jì)位元組個(gè)數(shù),以確保指針中的值能安排正確的間隔。如今,謝天謝地,編譯器幫我們幫處理了這一麻煩的事。
目前,我們使用更加嚴(yán)謹(jǐn)?shù)慕涌趤硖幚磉@個(gè)工作,它有一個(gè)動(dòng)聽的好名字:API。它們被安裝在完全不同的機(jī)器上,由完全不同的公司管理著,處理著我們的每一次請求。當(dāng)你需要將一個(gè)街道地址和一個(gè)郵政編碼轉(zhuǎn)化成經(jīng)緯度時(shí),只需要一點(diǎn)錢,購買一個(gè)API就可以幫你完成關(guān)于這個(gè)問題的所有答案。
在大多數(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è)程序庫在等著幫你處理了。
5. PaaS
現(xiàn)在也許再也用自己來構(gòu)建網(wǎng)站了。我們可以在別人的網(wǎng)站上創(chuàng)建一個(gè)賬戶并進(jìn)行定制。需要的只是網(wǎng)頁表單上的一些字段,你的新網(wǎng)站就可以擁有所有你想要的功能了,比如上傳一個(gè)關(guān)于貓的視頻到Y(jié)ouTube上或者在eBay上為一個(gè)糖果盒出價(jià)。
當(dāng)然,這有點(diǎn)夸張。如今許多PaaS選項(xiàng)需要程序員能夠熟知每個(gè)網(wǎng)頁表單需要放入什么。例如,Microsoft Azure平臺(tái)需要你放入一些能夠描述網(wǎng)站如何響應(yīng)的JavaScript函數(shù),然后Azure就會(huì)把它們包裝成正確的庫并把它們運(yùn)行在Node.js上。
6. 瀏覽器以前有段時(shí)間,程序員編寫的桌面軟件、服務(wù)器軟件以及設(shè)備軟件都是不同的。它們都有各自與用戶溝通的方式?,F(xiàn)在這些東西都通過瀏覽器了,當(dāng)我在家里建立一個(gè)本地文件服務(wù)器用于保存音樂,我會(huì)將它放到網(wǎng)站上并定位一個(gè)URL地址。蘋果的桌面小工具多年來一直使用JavaScript和HTML。而許多跨平臺(tái)的移動(dòng)應(yīng)用程序也都是從HTML和附帶了Apache Cordova的JavaScript開始的。
當(dāng)然,也有一些例外。最好的游戲仍然使用自定義應(yīng)用,不需要瀏覽器。但是這一切也在慢慢的改變,越來越多的JavaScript開發(fā)人員找到了如何編寫屏幕畫布對象(可參見用CSS3繪制的湯普森一家)。而憤怒的小鳥等游戲已經(jīng)運(yùn)行在了瀏覽器窗口中。
7. 應(yīng)用程序容器
構(gòu)建服務(wù)器在過去是一件艱苦的工作。程序員想要在其它地方運(yùn)行他們的代碼,需要向團(tuán)隊(duì)的服務(wù)器管理員發(fā)送關(guān)于哪些軟件需要安裝的備忘錄。有些時(shí)候服務(wù)器調(diào)用了正確的庫,但是有些時(shí)候卻沒有,這就需要重新再弄。
現(xiàn)在,象Docker這樣的應(yīng)用程序容器可以讓我們只需一個(gè)按鈕就可以將所有庫正確的打包到可移植的容器中。如果它能夠運(yùn)行在我們的測試機(jī)上,那么它就幾乎肯定可以運(yùn)行在服務(wù)器上。由于所有的東西都是相互捆綁在一起的,所以大多數(shù)工作平臺(tái)和服務(wù)器的兼容性問題將蕩然無存。
8. IaaS
前面提到的服務(wù)器管理員到哪里去了?在過去這些人可都是悠閑的很啊?,F(xiàn)在的服務(wù)器管理員你已經(jīng)看不到了,他們已經(jīng)被抽象出來放進(jìn)了云層里,作為全球范圍內(nèi)的數(shù)據(jù)中心從事著過去服務(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ù)器轉(zhuǎn)的牢獄中拯救了出來。
9. Node.js和JavaScript
在很多程序員都還沒有誕生的時(shí)候,Web服務(wù)器只支持靜態(tài)HTML。然后有人想到了如何創(chuàng)建與數(shù)據(jù)庫交互的動(dòng)態(tài)服務(wù)器。那個(gè)時(shí)候,每一個(gè)團(tuán)隊(duì)都需要一個(gè)人編寫SQL數(shù)據(jù)庫,一個(gè)人用PHP或者Java編寫服務(wù)器代碼,一個(gè)人去設(shè)計(jì)HTML模板。當(dāng)客戶端的AJAX和JavaScript技術(shù)風(fēng)靡的時(shí)候,網(wǎng)站還需要有人會(huì)使用這些語言。現(xiàn)在,這些都是由JavaScript技術(shù)來完成了。在瀏覽器方面使用的是JavaScript,而在服務(wù)器層和數(shù)據(jù)庫層則分別是由Node.js和MongoDB/CouchDB來完成。甚至對于HTML頁面,都可以使用JavaScript代碼在Ext JS或者jQueryMobile框架上進(jìn)行客戶端生成來完成。
10. 二級市場
如果你正在做一款游戲,你可以請?jiān)O(shè)計(jì)師來為你設(shè)計(jì)令人驚嘆的模型,甚至可以請幾個(gè)程序員來幫你添加視覺效果使游戲看起來更酷。當(dāng)然你也可以選擇去二級市場購買開發(fā)需要的東西,這跟去實(shí)體零售店去購買需要的物品一樣。當(dāng)我在寫這篇文章的時(shí)候,二級市場的一個(gè)下水道場景拼圖工具包正在打折,這是一個(gè)用于構(gòu)建不同尺寸的下水道游戲場景的模塊化工具包。但即使是恢復(fù)原價(jià),這個(gè)工具包的價(jià)格也不會(huì)超過45美元。如果換作是設(shè)計(jì)師或者程序員,你開這個(gè)價(jià)格他肯定不會(huì)做了。這些出售插件、擴(kuò)展包、庫和其它附件的二級市場現(xiàn)在變得越來越火爆了。與前面所說的庫和框架一樣,通過合適的價(jià)格購買需要的部件,無需過多的編程就可以融入開發(fā)項(xiàng)目中。在國內(nèi),這一類二級市場通常被稱為控件網(wǎng)。
11. 虛擬機(jī)
為硅片寫代碼的日子已經(jīng)離我們遠(yuǎn)去了。現(xiàn)在我們的大部分代碼都運(yùn)行在虛擬機(jī)上,它能夠把你的指令轉(zhuǎn)化成芯片能夠理解的語言。Java虛擬機(jī)、C#/.Net虛擬機(jī)以及現(xiàn)在的JavaScript引擎成為了編寫代碼的最主要對象。
大受歡迎的虛擬機(jī)不斷地將許多東西吸收進(jìn)堆棧里。在過去,如果你想創(chuàng)建一個(gè)新的語言,你需要構(gòu)建從預(yù)處理器到寄存器分配器的整個(gè)堆?!,F(xiàn)在新的語言站在了虛擬機(jī)這個(gè)巨人的肩膀上。Clojure、Scala、Jython、JRuby等語言都使用了Sun公司(現(xiàn)在已經(jīng)Oracle公司的一部分了)的偉大虛擬機(jī)技術(shù)。
瀏覽器的世界與上面所述很相似。你可以選擇創(chuàng)建自己的瀏覽器和語言,或者在 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)大家找到它之后,如果需要再次訪問這個(gè)頁面則必須記住它的URL地址。現(xiàn)在,越來越多的網(wǎng)頁被放進(jìn)了Facebook或者Salesforce這樣的大容器里,如果你建立了自己的網(wǎng)站,可能只有很少的人來訪問它,因?yàn)榻^大多數(shù)用戶都去點(diǎn)擊訪問Facebook或者Salesforce這樣的社交媒體網(wǎng)站了。
而具體的解決方案就是建立一個(gè)Facebook或Salesforce的應(yīng)用,它們會(huì)讓你加入進(jìn)來,然后將你的網(wǎng)頁集成進(jìn)來成為平臺(tái)上的一個(gè)點(diǎn)??墒堑筋^來,你的應(yīng)用仍然會(huì)受到很大的限制和操控??墒牵氵€有什么辦法呢?要么為選擇大型門戶網(wǎng)站服務(wù),要么選擇被互聯(lián)網(wǎng)洪流所吞沒。
13. 開發(fā)工具
曾幾何時(shí),我們在服務(wù)器上安裝的軟件非常單一,現(xiàn)在我們租用大量服務(wù)器來滿足成百上千臺(tái)機(jī)器的需求,這些服務(wù)器為滿足不同需求,需要更新多種最新軟件,它們能夠自動(dòng)完成這些用手動(dòng)不能勝任的工作。
進(jìn)入“devops”模式,那些基礎(chǔ)工具如Chef和Puppet可以幫助你完成服務(wù)器的維護(hù)。將最新的軟件放置在云端,這些工具將會(huì)通過讓每臺(tái)機(jī)器運(yùn)行相同的代碼來處理這些工作,它們自動(dòng)化的完成了我們過去在每臺(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)以前,軟件就是由你自己來編寫并且只能與自己分享成果的東西,如果某人想要復(fù)制你的代碼,在征求到你的同意后,他們需要從你這里接收一個(gè)tar壓縮文件包。
現(xiàn)在代碼共享已經(jīng)成為社交網(wǎng)絡(luò)的一部分。SourceForge和GitHub等網(wǎng)站會(huì)發(fā)布所有代碼供大家觀看和下載。它們將程序的維護(hù)、共享和代碼注釋合并到了一個(gè)易于訪問的地方。你可以在同一個(gè)界面閱讀代碼并提出修改建議。這就是為什么許多項(xiàng)目在一周時(shí)間時(shí)間內(nèi)有數(shù)萬甚至數(shù)十萬的訪問次數(shù),而這在以前是絕不可能出現(xiàn)的。
這種代碼共享的主流模式被大多數(shù)專利項(xiàng)目推崇,象GitHub和BitBucket這樣的網(wǎng)站都支持它們?yōu)槌鍪鄯枪_存儲(chǔ)庫而將項(xiàng)目代碼共享給權(quán)限受限的用戶群的做法。15. 性能監(jiān)控
在最早的時(shí)候,代碼跟蹤是非常簡單的事情。當(dāng)編碼開始時(shí)開始打印,編碼結(jié)束時(shí)打印終止。如果你有了一些新的想法,那么你可以在原來的程序后面增加一些關(guān)于調(diào)整的運(yùn)算。
但現(xiàn)在,這種方式已經(jīng)過時(shí)了,許多問題都不僅發(fā)生在機(jī)器本身,就算添加一個(gè)代碼分析器也并不能完全解決問題,因?yàn)楣收显蜻€包括網(wǎng)絡(luò)線路以及數(shù)據(jù)庫緩慢等方面?,F(xiàn)代工具追蹤網(wǎng)絡(luò)要求軟件網(wǎng)絡(luò)與獨(dú)立模塊的性能一致,這是辨別是否正常工作的唯一方法。
網(wǎng)站標(biāo)題:改變程序員開發(fā)方式的15個(gè)技術(shù)
標(biāo)題URL:http://redsoil1982.com.cn/news8/81908.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站維護(hù)、外貿(mào)建站、云服務(wù)器、網(wǎng)頁設(shè)計(jì)公司、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容