中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

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

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

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

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

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

1. 持續(xù)性集成

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

2. 框架

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

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

3. 庫

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

人們經(jīng)常談論他們最喜歡的語言,卻很少談論這些語言是如何工作的。如果你打算雇傭程序員,你應當了解他對庫方面的了解情況。比如,JavaScript程序員了解jQuery和 Dojo tribe這一類庫么?會使用C++的程序員知道Allegro、Unity、Corona和其它的庫么?對庫的了解和對程序語言來龍去脈的了解同樣重要!

4. API

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

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

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

5. PaaS

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

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

6. 瀏覽器

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

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

7. 應用程序容器

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

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

8. IaaS

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

9. Node.js和JavaScript

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

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

10. 二級市場

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

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

11. 虛擬機

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

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

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

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

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

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

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

13. 開發(fā)工具

曾幾何時,我們在服務器上安裝的軟件非常單一,現(xiàn)在我們租用大量服務器來滿足成百上千臺機器的需求,這些服務器為滿足不同需求,需要更新多種最新軟件,它們能夠自動完成這些用手動不能勝任的工作。

進入“devops”模式,那些基礎工具如Chef和Puppet可以幫助你完成服務器的維護。將最新的軟件放置在云端,這些工具將會通過讓每臺機器運行相同的代碼來處理這些工作,它們自動化的完成了我們過去在每臺機器手動處理的事情。

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

14. GitHub、SourceForge等代碼共享的社交平臺

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

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

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

15. 性能監(jiān)控

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

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

網(wǎng)站標題:改變程序員開發(fā)方式的15個技術(shù)
標題URL:http://www.rwnh.cn/news8/81908.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站維護外貿(mào)建站、云服務器、網(wǎng)頁設計公司、靜態(tài)網(wǎng)站

廣告

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

成都定制網(wǎng)站網(wǎng)頁設計
嘉峪关市| 阜城县| 观塘区| 同心县| 门头沟区| 洮南市| 阜平县| 天长市| 类乌齐县| 镇原县| 米泉市| 修文县| 右玉县| 阳江市| 深州市| 阿荣旗| 馆陶县| 达州市| 三门峡市| 镇康县| 安多县| 汉川市| 松溪县| 尉犁县| 察隅县| 安塞县| 襄樊市| 定南县| 富阳市| 澄城县| 巫山县| 博罗县| 瑞金市| 色达县| 高安市| 维西| 阿拉尔市| 从江县| 洪湖市| 师宗县| 将乐县|