如今各種智能設(shè)備層出不窮,編程培訓(xùn)學(xué)校如雨后春筍般大量涌出,自然也為 IT 領(lǐng)域輸送了大批的編程人才。那么,在這個(gè)互聯(lián)網(wǎng)/移動(dòng)互聯(lián)網(wǎng)崛起的時(shí)代,編程領(lǐng)域發(fā)生了哪些變化,又取得了哪些重要進(jìn)展呢?知乎各路大神給出了自己的見解,我們一起看下。
注:本文由DevStore小編整理自知乎,本著分享的原則整理發(fā)布,以下回答內(nèi)容版權(quán)歸原作者所有。
@caoglish作者分析的比較詳細(xì)全面,還給學(xué)生們提出了一些建議:
編程語言層出不窮,然而內(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,ES6 javascript的新特性的得到順利推動(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ì)用的框架和模塊也行。比如Evan You開發(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)閉自己的google code。可見github的影響力,以及在業(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ì)的基礎(chǔ)。所以這些特點(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í)和提高。
補(bǔ)充:
1. WEB技術(shù)的桌面化和JavaScript的全棧化
JavaScript 近些年發(fā)展火熱,逐漸印證了一個(gè)Atwood法則:凡是可以用javascript實(shí)現(xiàn)的,最終都會(huì)用javascript實(shí)現(xiàn)
· Nodejs的出現(xiàn),奠定了JavaScript走出瀏覽器,走向了服務(wù)器端
· NW的出現(xiàn)和electron正式版發(fā)布,JavaScript走向了桌面
· MongoDB的出現(xiàn),JavaScript走向了數(shù)據(jù)庫
· Tessel的出現(xiàn),走向了硬件和物聯(lián)網(wǎng)
如今一個(gè)全棧系統(tǒng),從前端到數(shù)據(jù)庫,可以完全使用JavaScript一種語言。還有很多人正在致力于把JavaScript推向更多的領(lǐng)域中。
而Web技術(shù)(html+css+javascript)由于NW和Electron的出現(xiàn),已經(jīng)可以編寫桌面程序了。正是由于JS的優(yōu)秀模塊很多,以及HTML+CSS的界面容易編寫和掌控,糾錯(cuò)工具豐富,很多人愿意用Web技術(shù)進(jìn)行開發(fā)。現(xiàn)在比較火的桌面工具有VS-Code編輯器和Atom編輯器。
總結(jié)一下:由于web技術(shù)的便利性,WEB技術(shù)涉及的領(lǐng)域也就越來越多,再也不是瀏覽器的專利了。
2. Web API的全面發(fā)展
Web API雖然歷史悠久,但是真正使其推廣流行的應(yīng)該是Twitter,而后移動(dòng)設(shè)備的普及使其得到更大發(fā)展和普及。移動(dòng)設(shè)備如果沒有Web API基本就不能工作了。Web API的普及,也使得網(wǎng)絡(luò)服務(wù)之間相互連通,形成一個(gè)更大的服務(wù)網(wǎng)絡(luò)。總之,如今的Web API已經(jīng)是不可或缺的存在了。
Web API更多的是一種服務(wù),或是一種數(shù)據(jù)交換模式。只要語言帶有HTTP的網(wǎng)絡(luò)訪問功能,就都能使用。提供Web API的公司,發(fā)布Web API后,一般也會(huì)同時(shí)發(fā)布一些常用語言的SDK,方便相應(yīng)語言開發(fā)人員快速上手;但是如果語言比較小眾,沒有提供相應(yīng)的SDK也沒有關(guān)系,編寫一段HTTP的請(qǐng)求,也是可以交換數(shù)據(jù)。
從編程的角度來歸納一下Web API特點(diǎn)就是:
· 容易編寫,就是個(gè)函數(shù),無需界面;
· 語言無關(guān)性,無論Web API是個(gè)語言編寫,幾乎任何語言都能調(diào)用;
· 訪問性好,無論在哪,只要網(wǎng)絡(luò)能訪問,Web API就可以用。
3. 語言之間的相互借鑒
語言之間的相互借鑒也越來越明顯了,比如:
· PHP5.0后支持了類,5.4 后支持了Trait,5.5后支持了生成器(Generator)
· Javascript ES6 支持了箭頭匿名函數(shù),生成器(Generator),類(不是Prototype的類)
· C# 和 Java相互借鑒
· Coffee Script借鑒Python和Ruby
與其說是相互借鑒,不如說隨著語言的發(fā)展,一些語言概念逐漸成為了標(biāo)配,如果沒有,就算是一個(gè)不完整的語言了。比如說類,匿名函數(shù),常用數(shù)據(jù)結(jié)構(gòu)等都成為了標(biāo)配。
4. 語言解析器的工具化
語言解析器(Parser)在過去自是作為編譯器的一部分存在的。如今,它已經(jīng)獨(dú)立出來作為一個(gè)模塊或者工具來使用了,這個(gè)對(duì)于一個(gè)語言的生態(tài)有著很大的意義,促進(jìn)了語言生態(tài)圈的良好發(fā)展。
獨(dú)立出來的解析器,可以用來編寫以下和語言有關(guān)的工具,這些工具都是用來優(yōu)化代碼質(zhì)量的,提高編碼體驗(yàn)的。
語法檢查,javascript的jshint用的就是javascript的一個(gè)解釋器,被javascript重新解釋一遍,把可能有問題的地方標(biāo)記出來通知程序員,程序員可修改避免潛在錯(cuò)誤。
代碼最小化,代碼重寫的一種形式,javascript的最小化項(xiàng)目(比如urglify),是把語法正確讀取后,進(jìn)行最小化壓縮。把單詞變量轉(zhuǎn)換成單字母變量。甚至是if else轉(zhuǎn)換成?: 形式。
語法擾亂器,就是代碼重寫的一種形式,讓代碼無法閱讀,保護(hù)代碼。
語法整理器,代碼重新的一個(gè)形式,把無法閱讀的代碼,轉(zhuǎn)換成可閱讀的代碼,比如beautifier
語法高亮,一般用于代碼編輯器和代碼顯示組件的。
代碼分析器, 把可用的代碼部分進(jìn)行掃描,列出代碼相關(guān)數(shù)據(jù),比如用了多少類,多少對(duì)象,多少變量,多少全局變量等等
代碼清理器,分析器的加強(qiáng),清理不用的變量,不用的對(duì)象和,不用的函數(shù)等。
自動(dòng)完成,一些IDE可以分析已經(jīng)存在的變化和函數(shù),以后在不斷的打字中可以智能的自動(dòng)完成。
代碼追蹤,比如說某段代碼被執(zhí)行了幾次,程序報(bào)錯(cuò)時(shí)候,函數(shù)被執(zhí)行的順序,測(cè)試程序時(shí)候的代碼覆蓋率等等
虛擬執(zhí)行,javascript代碼在一個(gè)保護(hù)區(qū)域內(nèi)或環(huán)境執(zhí)行,代碼可以返回值,但不能影響非虛擬環(huán)境內(nèi)的代碼執(zhí)行。比如說,代碼里面有全局變量,但是虛擬執(zhí)行后這個(gè)全局變量只在虛擬環(huán)境內(nèi),非虛擬環(huán)境的沒有這個(gè)全局變量。
5. 數(shù)據(jù)交換語言的發(fā)展
數(shù)據(jù)交換語言發(fā)展總體來說就是從XML主流逐漸發(fā)展到JSON主流的過程. 雖然xml現(xiàn)在應(yīng)用還是非常廣泛,但是由于其復(fù)雜和標(biāo)簽占用空間大,逐漸被輕量級(jí)的JSON給代替了。尤其JSON與javascript天然兼容,無需解析,直接使用。所以在很多網(wǎng)絡(luò)技術(shù)中JSON是優(yōu)先使用的。
而如今很多配置文件也是用JSON實(shí)現(xiàn)的,比如Composer和node的配置文件。
JSON的閱讀方式更符合程序員的閱讀習(xí)慣,格式化后的結(jié)構(gòu)一目了然,容易理解。
JSON好處:
· 結(jié)構(gòu)符合程序員閱讀習(xí)慣
· 文件大小相對(duì)更小
· Javascript可以直接使用
· 在非JavaScript的腳步語言中,轉(zhuǎn)化成數(shù)據(jù)結(jié)構(gòu)更容易
· 學(xué)習(xí)曲線很短
正是以上這些原因,使用JSON作為數(shù)據(jù)交換語言可以說在編程界里,是大勢(shì)所趨了。
@王雷作者主要從開源、敏捷開發(fā)、大數(shù)據(jù),以及云計(jì)算等方面分析:
開源軟件、開源社區(qū)的發(fā)展大大減少了程序員的重復(fù)勞動(dòng)。10年前,開源仍然是比較小眾的(還記得大明湖畔的sourceforge嗎?),但近幾年Github的出現(xiàn),以及各大廠商開始擁抱開源以后,軟件開發(fā)變成了軟件拼裝,開源組件+業(yè)務(wù)邏輯的開發(fā)模式降低了產(chǎn)品研發(fā)的成本,讓很小的研發(fā)團(tuán)隊(duì)就能駕馭超大型的軟件項(xiàng)目。
軟件開發(fā)變得無比敏捷。瀑布開發(fā)模型已然是歷史遺跡,持續(xù)集成、持續(xù)交付、微服務(wù)、DevOps這些工程實(shí)踐,讓軟件的發(fā)布速率提高了一個(gè)甚至數(shù)個(gè)數(shù)量級(jí)。
數(shù)據(jù)成為新的寶藏。互聯(lián)網(wǎng)的發(fā)展和智能手機(jī)的普及讓人類累積了大量的數(shù)據(jù),而這些數(shù)據(jù)的挖掘和探索,將會(huì)產(chǎn)生無法想象的價(jià)值。10年前, Google的GFS/MR/Bigtable三篇論文剛剛發(fā)布, Hadoop項(xiàng)目也剛剛開始。今天,大數(shù)據(jù)項(xiàng)目已經(jīng)成為互聯(lián)網(wǎng)公司的標(biāo)配,走在前沿的企業(yè)開始在深度學(xué)習(xí)領(lǐng)域布局。
云計(jì)算的普及。10年間,云服務(wù)從一個(gè)云里霧里的概念發(fā)展成為軟件產(chǎn)品交付的主要模式。AWS,Heroku, Saleforce,Slack這些公司的成功讓IaaS/PaaS/SaaS/CaaS(容器云)的價(jià)值都得到了充分驗(yàn)證。對(duì)于互聯(lián)網(wǎng)企業(yè)來說,開源降低了研發(fā)成本,而云服務(wù)進(jìn)一步降低了運(yùn)營(yíng)成本,初創(chuàng)互聯(lián)網(wǎng)公司如雨后春筍,大眾創(chuàng)業(yè)成為可能。
程序運(yùn)行范式的變化。雖然現(xiàn)在大部分互聯(lián)網(wǎng)產(chǎn)品仍然遵循客戶端-服務(wù)器的范式。但是分布式的軟件產(chǎn)品已經(jīng)初露端倪,區(qū)塊鏈、比特幣的出現(xiàn)不單是金融領(lǐng)域的創(chuàng)新,也可能預(yù)示著軟件產(chǎn)品從中心化走向分散化的一種趨勢(shì)。
軟件開發(fā)的民主化。軟件開發(fā)曾經(jīng)是少數(shù)專業(yè)人員才能駕馭的黑魔法,如今,編程的門檻大大降低,很多人經(jīng)過簡(jiǎn)單培訓(xùn)、自學(xué)就可以勝任開發(fā)工作。而今后,更多DSL的出現(xiàn)可能讓編程成為各個(gè)領(lǐng)域、各個(gè)職業(yè)的必備技能。
@馮子浩:感受最大的,應(yīng)該是大部分人認(rèn)為加班應(yīng)該是開發(fā)的常態(tài)。
@jun lee:分工更細(xì)了。語言更多了。php火了。
@任逍遙:Python的出現(xiàn)和流行讓編程入門變得越來越容易;全世界范圍內(nèi),開始學(xué)習(xí)編程的年齡越來越小,學(xué)習(xí)編程的人也越來越多;未來,編程會(huì)像英語一樣成為每個(gè)人必備的技能,其門檻也會(huì)越來越低。
培訓(xùn)班火了是真,加班更多了也是真……屏幕前的你看完后有何感想,歡迎評(píng)論區(qū)分享哦~