>
學(xué)校機(jī)構(gòu) >
北京尚腦互聯(lián)軟件測(cè)試培訓(xùn)中心 >
學(xué)習(xí)資訊>
最近十年,編程領(lǐng)域有什么重要進(jìn)展?
最近十年,編程領(lǐng)域有什么重要進(jìn)展?
53 2017-05-23
編程語言層出不窮,然而內(nèi)核是萬變不離其宗。我個(gè)人看法覺得是以下幾個(gè)方面的變化比較明顯。
語言本身:
1.工業(yè)標(biāo)準(zhǔn)
網(wǎng)頁標(biāo)準(zhǔn)有w3c控制,尤其是瀏覽器的開發(fā),所有主流的瀏覽器都會(huì)自覺符合這個(gè)組織的標(biāo)準(zhǔn),當(dāng)然這些開發(fā)商本身就是這個(gè)組織的成員。所以新的HTML5,CSS3,ES6javascript的新特性的得到順利推動(dòng),讓大部分主流瀏覽器都支持它,w3c功不可沒。
PHP有PHPFIG組織,雖然不是強(qiáng)制性的,但是很多新的框架和庫都自覺遵守這個(gè)組織的編程標(biāo)準(zhǔn)。
Java,C語言都有各自的工業(yè)標(biāo)準(zhǔn)準(zhǔn)則,來維護(hù)各自工業(yè)標(biāo)準(zhǔn)。
這個(gè)標(biāo)準(zhǔn)其實(shí)不是強(qiáng)制性的,雖然很多程序員在自己工作上,不遵守這些工業(yè)標(biāo)準(zhǔn),但是要推出新的模塊的話,不遵守這些工業(yè)標(biāo)準(zhǔn)的模塊,是沒有人會(huì)去使用的。如今是不是面向標(biāo)準(zhǔn)編程,是體現(xiàn)一個(gè)程序員是否專業(yè),一個(gè)模塊是不是專業(yè)模塊的一個(gè)重要指標(biāo)。
2.第三方模塊走紅
各種語言的框架和庫,可能比自己的語言還出名,比如css的Bootstrap,javascript的jQuery;一個(gè)好的框架和庫甚至可以推動(dòng)這個(gè)這個(gè)語言的發(fā)展,比如說PHP的Laravel框架,Javascript的jQuery。
模塊化的發(fā)展,大大加快了開發(fā)的速度。很多人也愿意開發(fā)各種框架和模塊,不但可以鍛煉自己的開發(fā)技能,也是一種展示自己的能力。
過去,程序員要成名,要開發(fā)出有用的軟件,比如說求伯君開發(fā)出了wps,牛;張曉龍開發(fā)出了foxmail,牛。
現(xiàn)在,程序員要成名,開發(fā)出一個(gè)大家都會(huì)用的框架和模塊也行。比如EvanYou開發(fā)的vue.js,玉伯開發(fā)的seajs。
3.模塊化編程和依賴管理
在2010前,依賴管理工具只是個(gè)很時(shí)髦的概念,大家習(xí)慣手動(dòng)到庫的官方網(wǎng)站上下載后手動(dòng)導(dǎo)入到項(xiàng)目中。升級(jí)也是個(gè)麻煩事。所以一般大家也就下載一兩個(gè)必要的庫,其他都自己手寫完成。
如今,依賴管理工具已經(jīng)是必備的了,大家不再手動(dòng)導(dǎo)入庫了;而且是能找到第三方模塊的功能,就不再自己編寫了,統(tǒng)統(tǒng)用工具導(dǎo)入項(xiàng)目;自己編寫的程序代碼,能模塊化的代碼統(tǒng)統(tǒng)模塊化,甚至是獨(dú)立出來,網(wǎng)上開源,然后使用依賴管理工具進(jìn)行管理導(dǎo)入到自己的項(xiàng)目中。
這樣好處也明顯:
代碼量減少
加快開發(fā)速度
高度解耦
定位bug容易,改動(dòng)影響小
寫單元測(cè)試容易
如今大家更加愿意寫小模塊,而不是重復(fù)造輪子了。
4.框架使用
更愿意先選一個(gè)合適的框架,再開始編程,而不是所有功能自己從頭開始寫了.
javascript的框架多了,vue,react,backbone,angularjs等;
css有bootstrap,fundation等;
PHP有l(wèi)aravel,cakephp等
C#有MVC
Java有spring+hibernate+struts
框架要先選好,模塊的話,等需要慢慢加就行了。
5.測(cè)試代碼
2006年,單元測(cè)試在開發(fā)過程中,重要性不是很大,可有可無,程序完成,功能能用就行。
如今的代碼,沒有單元測(cè)試部分,這個(gè)工程就不能算完結(jié)。甚至是,測(cè)試驅(qū)動(dòng)開發(fā)已經(jīng)成為主流,先寫測(cè)試代碼,然后開發(fā)。
測(cè)試代碼的發(fā)展有不單單是單元測(cè)試部分。單元測(cè)試,集成測(cè)試,功能測(cè)試,性能測(cè)試,壓力測(cè)試等等,都在開發(fā)過程中占了極大的位置。以前測(cè)試都是由專門的測(cè)試員進(jìn)行人工測(cè)試,或者他們負(fù)責(zé)測(cè)試;如今單元測(cè)試和集成測(cè)試都是要開發(fā)者自己寫。
6.跨設(shè)備,跨平臺(tái)
Java提出的跨平臺(tái),一次編譯到處運(yùn)行的夢(mèng)想,其實(shí)至今未很好的實(shí)現(xiàn)。但是如今這個(gè)跨設(shè)備,跨平臺(tái)編程趨勢(shì)卻越來越明顯了。
跨設(shè)備,主要是指桌面和手機(jī),尤其是針對(duì)顯示器的最佳實(shí)踐是層出不窮,如今是響應(yīng)式成為了主流。
跨平臺(tái),出自于Java的一個(gè)概念,如今已經(jīng)算普及了,尤其是JavaScript,桌面,手機(jī),服務(wù)器,瀏覽器,嵌入式都能看到j(luò)avascript的身影,這大大歸功于JavaScript標(biāo)準(zhǔn)化的推廣??缙脚_(tái)過去是說一次編譯到處運(yùn)行;如今是只要這個(gè)平臺(tái)支持這個(gè)語言或標(biāo)準(zhǔn),就能用。如今的跨平臺(tái)編程,更講究特性檢查這個(gè)功能,如果你這個(gè)平臺(tái)沒有這個(gè)特性,那么就關(guān)閉這個(gè)有這個(gè)特性的功能,但其他功能還可以繼續(xù)使用。
今后,各種設(shè)備層出不窮,VR頭盔,AR眼鏡,巨型屏幕,物聯(lián)網(wǎng)等等,跨平臺(tái)會(huì)有進(jìn)一步的發(fā)展。
工程方面的:
1.工具化
我覺得工具化非常突出了,凡是能工具完成的事情,絕對(duì)不手工完成。以下幾個(gè)方面都是可以找到相應(yīng)工具,幫助開發(fā)者管理代碼質(zhì)量
代碼風(fēng)格檢查
工業(yè)標(biāo)準(zhǔn)檢查
代碼整理
代碼復(fù)雜度檢查
單元測(cè)試覆蓋率檢查
依賴管理
壓縮代碼
重復(fù)代碼檢查
無用代碼檢查
等等。
2.工程化
工程化也是近年來最最突出的一個(gè)發(fā)展趨勢(shì),過去只是選擇性的,現(xiàn)在是必須的。
工程化是以工具化為基礎(chǔ)的,沒有工具,那么工程化也無從談起。
工程的核心就是流程自動(dòng)化,又稱之為構(gòu)建,這些包括了:代碼質(zhì)量檢測(cè),代碼壓縮,代碼合并,代碼優(yōu)化,代碼編譯,單元測(cè)試等等部分。構(gòu)建就是把這些以工作流程的方式組合起來,然后用一個(gè)命令行運(yùn)行這整個(gè)流程。它有點(diǎn)像批處理,但是是程序開發(fā)中使用的特殊批處理
在網(wǎng)頁編程的過程中,現(xiàn)在又流行“實(shí)時(shí)編程”,就是當(dāng)你在保存代碼的時(shí)候,以上的構(gòu)建流程就開始工作完成后自動(dòng)刷新瀏覽器,保證新代碼效果立刻反應(yīng)在瀏覽器上。
現(xiàn)在,你去github的項(xiàng)目庫中找軟件,首先翻看,是否有工程文件,看看它的構(gòu)建流程是什么,就知道這個(gè)項(xiàng)目的專業(yè)程度和項(xiàng)目的質(zhì)量了
而自己,沒有一個(gè)配置一個(gè)工程化的流程系統(tǒng),都不好意思說自己在做軟件工程。
3.自動(dòng)化
自動(dòng)化是以工程化為基礎(chǔ)的,工程化本身就是一種流程自動(dòng)化。而自動(dòng)化有在工程化的過程中更進(jìn)一步的自動(dòng)化。
持續(xù)集成就是全自動(dòng)化的一個(gè)終極體現(xiàn)。他的主要流程是:版本控制庫->構(gòu)建->測(cè)試->報(bào)告.
持續(xù)集成有點(diǎn)像windows的定時(shí)任務(wù),但是它是程序開發(fā)專用的定時(shí)任務(wù)。
持續(xù)集成的特點(diǎn)就是全自動(dòng),一個(gè)項(xiàng)目一次配置好了后,要求不變的話,就不用管了;然后開發(fā)者不斷把代碼加入到版本控制庫里就行了,每當(dāng)庫有新代碼時(shí)候,持續(xù)集成就會(huì)下載代碼進(jìn)行構(gòu)建;當(dāng)它完成構(gòu)建和測(cè)試后,如果測(cè)試沒有通過,就會(huì)報(bào)告給你,然后你根據(jù)報(bào)告結(jié)果進(jìn)行修改代碼。所以你每次往版本庫加的新代碼時(shí)候,持續(xù)集成就會(huì)全自動(dòng)的幫你構(gòu)建和測(cè)試代碼,盡快的通知你代碼的問題。這樣程序員就可以更加集中精力編寫功能代碼和測(cè)試代碼,而不用擔(dān)心新代碼是否會(huì)影響到過去的代碼了。
持續(xù)集成在多人一起開發(fā)的時(shí)候,更是有用,誰上傳的代碼沒通過測(cè)試,能馬上知道。這樣保證多人項(xiàng)目在代碼順利合并,體現(xiàn)“持續(xù)集成”的功效。
另外還有個(gè)持續(xù)部署,其實(shí)就是持續(xù)集成在測(cè)試成功后部署上產(chǎn)品服務(wù)器上的流程。如今有些網(wǎng)站一天就要部署幾十次,有了持續(xù)部署后,部署多少次都毫無壓力。
工具化,工程化,自動(dòng)化的關(guān)系挺有意思,前者是后者的基礎(chǔ),而后者卻極大推動(dòng)了前者的發(fā)展。它們是相互積極作用,相互推動(dòng)了對(duì)方的發(fā)展,形成了一個(gè)很好的良性循環(huán)。
其他方面:
1.版本控制,git,github
版本控制在編程界中的地位是越來越重要了。在編程界中有個(gè)說法:沒有版本控制的項(xiàng)目,就等于沒有這個(gè)項(xiàng)目。
版本控制的工具很多過去有svn,如今git的強(qiáng)大,用的人也是越來越多,而它和github的相同作用下,對(duì)編程界的積極影響和積極推動(dòng),是令人無法忽視的。比如幾乎所有的依賴管理工具的庫下載源,都是和github綁定的,就這一點(diǎn)來說,github的重要性在IT就不可估量。
而github上和git的方便管理,上傳,查看,統(tǒng)計(jì),bug報(bào)告等功能更是極大地推動(dòng)了程序員之間的合作;github上的開源更是改變了開源軟件對(duì)世界的影響力。
github不是git的全部,git也不是版本控制的全部,本質(zhì)上來說,github只是一個(gè)網(wǎng)站而已;然后github確實(shí)又是這個(gè)編程世界不可缺少的一個(gè)重要的模塊,已經(jīng)成為了一個(gè)不可或缺的組成部分了。甚至github已經(jīng)跳出了編程界,成為了一個(gè)世界級(jí)的不可或缺的服務(wù)平臺(tái)了。然而github是2008年建立的,真正開始流行是在2012年的。在2015年google宣布關(guān)閉自己的googlecode??梢奼ithub的影響力,以及在業(yè)界的重要程度了。
2.生態(tài)圈意識(shí)
生態(tài)圈意識(shí)在業(yè)界是越來越強(qiáng)了,它應(yīng)該和編程工具化和工程化有極大的關(guān)系。一個(gè)語言,框架或者庫的出現(xiàn),人們用它們,不但是因?yàn)樗鼈儽旧淼膹?qiáng)大,更是因?yàn)樗鼈儽澈蟮纳鷳B(tài)圈。
比如說人們選一個(gè)javascript的框架,選react還是選ember.js,更多是看支持他們的生態(tài)圈如何,react是有facebook支持的,更有很多程序員為它開發(fā)相關(guān)工具和庫以及有很多文檔教程。這樣react的生態(tài)圈就很大,會(huì)讓更多人愿意選擇react作為第一開發(fā)框架。而ember.js相對(duì)來說生態(tài)圈小,選擇它的人可能就不會(huì)很多。
選語言也一樣,選javascript編寫爬蟲還是選php編寫爬蟲還是用python?更多的是看他們的生態(tài)系統(tǒng)了,python的爬蟲庫強(qiáng)大且豐富,所以更多人選用python編寫爬蟲。
一個(gè)新的語言出現(xiàn),成熟與否,看的就是它的生態(tài)圈了,比如是否有測(cè)試框架,是否有mvc框架,成熟的時(shí)間庫,數(shù)據(jù)庫sdk等等,這些都是其必要的生態(tài)圈組成部分。
總結(jié):
以上的這些現(xiàn)象和趨勢(shì),其實(shí)都是相輔相成的,最終成了一種良性循環(huán)。這些現(xiàn)象和趨勢(shì)都會(huì)繼續(xù)發(fā)展下去,并成為以后新趨勢(shì)的基矗所以這些特點(diǎn)都是非常重要的,而且應(yīng)該成為每個(gè)程序員都應(yīng)該知道的知識(shí)。
給學(xué)生們的一些建議:
我在讀編程專業(yè)的時(shí)候,這些東西大學(xué)都沒有教過,甚至在工作中,公司都沒有這些要求。大學(xué)主要教的是代碼編寫,能編譯通過,能出正確結(jié)果就可以了。在工作中,代碼能用,沒有明顯bug就行。
然而,在我個(gè)人工作實(shí)踐中,逐漸的體會(huì)到這些趨勢(shì)的重要性了,可維護(hù)性的高質(zhì)量代碼可以大大減少自己在維護(hù)中的難度和壓力。作為準(zhǔn)備成為一個(gè)合格的開發(fā)人員,應(yīng)該熟練掌握這些知識(shí)和技能。如果大學(xué)沒有教過,一定想辦法自己學(xué)習(xí)和提高。
請(qǐng)聯(lián)系網(wǎng)站客服,了解詳細(xì)的優(yōu)惠課程信息~
優(yōu)質(zhì)、權(quán)威、便捷、省心
掃一掃
獲取更多福利
獵學(xué)網(wǎng)企業(yè)微信
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)服務(wù)號(hào)