經過前一天Messenger應用平臺、Parse物聯網開發者工具等驚喜的轟炸,Facebook于今天凌晨在F8開發者大會上正式開源了React Native。不過目前,只有iOS版,Android版還需要再等一段時間,這是最新的用JavaScript語言開發原生App的嘗試,其示例代碼相當簡潔,內置控件也不少。同時還為React Native開發了一款基于Atom的IDE——Nuclide,也已開源。
React Native主要特性如下:
React Native主張“Learn once, write everywhere”而非其他跨平臺工具一直宣揚的“Write once, run everywhere”。通過React Native,開發者可以使用UITabBar、UINavigationController等標準的iOS平臺組件,讓應用界面在其他平臺上亦能保持始終如一的外觀、風格。
var React = require('react-native'); var { TabBarIOS, NavigatorIOS } = React; var App = React.createClass({ render: function { return ( <TabBarIOS> <TabBarIOS.Item title="React Native" selected={true}> <NavigatorIOS initialRoute={{ title: 'React Native' }} /> </TabBarIOS.Item> </TabBarIOS> ); }, });
JavaScript應用代碼和原生平臺之間所有的操作都采用異步執行模式,原生模塊使用額外線程,開發者可以解碼主線程圖像、后臺保存至磁盤、無須顧忌UI等諸多因素直接度量文本設計布局。
React Native引入了一個類似于iOS上Responder Chain響應鏈事件處理機制的響應體系,并基于此為開發者提供了諸如TouchableHighlight等更高級的組件。
var React = require('react-native'); var { ScrollView, TouchableHighlight, Text } = React; var TouchDemo = React.createClass({ render: function { return ( <ScrollView> <TouchableHighlight onPress={ => console.log('pressed')}> <Text>Proper Touch Handling</Text> </TouchableHighlight> </ScrollView> ); }, });
Facebook在 React Native的主頁上詳細介紹了React Native的種種功能特性,想要了解更多細節,可直接進入主頁查看,而其為React Native搭配的開源IDE Nuclide支持React Native、Web和原生移動開發,基于Atom構建,不過也需要翻墻。
當今互聯網時代,JavaScript作為一門廣泛應用于前端和后端開發的編程語言,其重要性和流行度不言而喻。對于JavaScript開發者來說,選擇一款適合自己的集成開發環境(IDE)工具是至關重要的。一個好的IDE能夠提供豐富的功能和工具,幫助開發者更高效、更愉悅地編寫和調試代碼。在本文中,我們將向大家推薦幾款值得嘗試的JavaScript開發IDE工具,讓你能夠選擇適合自己的工具,提升開發效率和質量。
VisualStudio Code:
VisualStudioCode是由Microsoft開發的免費且開源的編輯器。它的出現引起了巨大的關注,并迅速成為JavaScript開發者中最受歡迎的集成開發環境(IDE)之一。這并非偶然,因為VisualStudio Code提供了許多功能和優勢,使其成為JavaScript開發者的絕佳選擇。
首先,VisualStudioCode提供了強大的調試支持。它內置了調試器,可以輕松地在代碼中設置斷點、觀察變量值以及單步執行代碼,從而方便地進行代碼調試和故障排除。這對于JavaScript開發者來說尤為重要,因為JavaScript是一門動態類型的語言,調試代碼時可能會出現錯誤或不符合預期的結果。VisualStudio Code的調試功能能夠幫助開發者快速定位和解決問題,提高開發效率。
其次,VisualStudioCode具有強大的IntelliSense功能,即代碼完成。當你輸入代碼時,編輯器會自動顯示相關的方法、屬性和變量建議,以減少手動輸入和減少潛在的拼寫錯誤。這個功能極大地提升了編碼速度和準確性,同時也提供了更好的代碼可讀性和可維護性。
此外,VisualStudioCode還與Git集成得非常緊密。它提供了直觀的Git界面,使得開發者能夠方便地進行代碼版本控制、分支管理和代碼提交。通過VisualStudio Code,開發者可以輕松地查看文件更改、解決沖突以及與團隊協作開發,在保持代碼庫的整潔和可追溯性的同時,確保項目的順利進行。
WebStorm:
WebStorm是由JetBrains開發的一款備受歡迎的IDE工具,為JavaScript、TypeScript和Node.js等技術棧提供了出色的支持。其強大而智能的功能使得WebStorm成為許多前端開發者的首選工具。
首先,WebStorm在代碼完成方面表現出色。它具有智能代碼補全功能,可以根據上下文和你的編碼習慣提供準確的建議。這不僅可以減少輸入時間,還能避免拼寫錯誤和語法問題。此外,WebStorm還能識別不同的庫和框架,并提供相應的代碼補全,從而加快開發速度并提高代碼質量。
其次,WebStorm內置了錯誤檢測功能。它能夠實時分析你的代碼,檢測潛在的錯誤和問題,并在編輯器中進行標記和提示。這幫助開發者在編碼過程中盡早發現并糾正問題,提高代碼的可靠性和穩定性。同時,WebStorm提供了豐富的靜態代碼分析工具,可以幫助你遵循最佳實踐、優化性能和避免常見的代碼陷阱。
WebStorm還提供了強大的重構功能,使得修改和重組代碼變得更加容易和安全。你可以輕松地重命名變量、提取函數、調整代碼結構等,而無需手動修改每個引用。這大大減少了重構過程中的錯誤和繁瑣操作,提高了代碼維護和演進的效率。
今天的分享到這里就結束啦,感興趣的小伙伴趕快去試一試吧!
理 | 彎月,責編 | 郭芮
頭圖 | CSDN 下載自視覺中國
出品 | CSDN(ID:CSDNnews)
這篇報告將重點介紹六大方面的主題,其中每個主題部分都包含可視化圖表,通過數據為開發人員社區提供對未來趨勢的分析和見解。
1、編程語言社區:通常編程語言是構成強力社區的核心,但也是最富爭議的主題。該報告統計了活躍在各種主流編程語言上的軟件開發人員數量,數據覆蓋到了全球所有類型的程序員。
2、為開源軟件做貢獻:在開發人員的世界中,開源軟件無處不在,但并非每個開發人員都是開源人員。該報告探討了哪些開發人員為開源軟件做過貢獻,他們愿意做貢獻的原因,以及他們希望從各個公司獲得哪些開源支持。
3、開發運維的參與和采用:開發運維改變了軟件構建的方式。但是,并非所有的開發人員和組織都經歷了這種文化轉變。該報告統計了有多少開發人員在使用CI/CD工具(這是開發運維流程的核心技術)。此外,還分析了哪些開發人員正在使用這些工具、他們的工作經驗、所在公司規模以及技術背景。
4、機器學習開發人員通過哪些方式運行代碼?對于某些數據科學家和機器學習開發人員而言,他們的工作并不僅僅是純粹的模型開發。實際上,他們的工作重點已經轉移到與推理性能、擴展、負載平衡等問題相關的實際生產場景。這些都需要計算能力,而在過去這一直是機器學習開發人員面臨的巨大難題。該報告將探討機器學習開發人員通過何種方式運行應用程序或項目的代碼,以及他們應用機器學習/ AI的方式有何不同,他們的使用目的是什么,此外他們使用的算法和框架又有哪些。
5、增強現實與虛擬現實:增強現實(AR)和虛擬現實(VR)是兩個不斷發展的領域,且隨著近年來技術的成熟以及越來越多的設備支持AR和VR功能而迅速普及。該報告將探討AR和VR開發人員以及非開發人員的概況,重點介紹他們在其他領域的參與度,他們的技術和設備選擇以及他們構建的產品。
6、新興技術:該報告從新興技術的發展出發,討論過去一年中哪些技術的普及程度有所提高或下降。
要點總結:
JavaScript仍然是目前流行度最高的編程語言,全球超過1200萬開發人員都在使用JavaScript。
2018年Python凈增了220萬開發人員,并且在受歡迎程度方面超過Java。如今,從整體來看Python擁有第二大編程語言社區。
Kotlin是增長最快的語言社區。在過去的兩年中,它的規模幾乎翻了一番。
五分之三的開發人員曾為開源軟件貢獻代碼。
開發人員最有動力為開源項目做出貢獻,這是因為他們可以借此提高編程技術力(29%),而且他們相信開源帶來的好處(26%)。
將近一半的開源貢獻者都希望各大公司能夠支持開源社區并為之做出貢獻。
使用CI / CD工具的開發人員成為專業開發人員的比例要高出20%。
58%的使用CI / CD工具的開發人員在員工超過10人的公司任職。
盡管業余人員不如專業的機器學習開發人員那般熟悉云計算基礎架構,但是他們在CPU以外的硬件上運行代碼的比例更高。
使用大數據和深度學習框架的機器學習開發人員更傾向于在混合云和多個云上部署他們的代碼。
從事數據提取的機器學習開發人員更傾向于在私有云和本地服務器上運行代碼,而從事模型部署的機器學習開發人員更傾向于使用公共云來部署機器學習解決方案。
增強現實(AR)和虛擬現實(VR)的工作人員大多擁有廣泛的興趣和技術愛好。
大多數AR和VR愛好者(57%)都在兼任其他領域(至少一個)的專業工作。
22%的AR和VR非開發人員在學習編程,他們最喜愛的編程語言包括Java、C++和C#。
大多數開發人員(59%)的工作都涉及開發運維,其中27%目前正在從事涉及開發運維的項目。
在過去的12個月中,霧計算/邊緣計算在參與度和采用率方面呈現了最高的增長。
編程語言社區
編程語言的選擇對開發人員來說非常重要,因為開發人員都希望自己的技術力能夠跟得上市場的最新需求。編程語言是最富爭議性的熱門話題,也是一部分強大的開發人員社區的核心。另外,編程語言對于工具的開發商也至關重要,因為他們需要確保提供最有用的SDK。
評估某種編程語言的使用范圍非常困難。Tiobe、Redmonk、Stack Overflow的年度調查以及Github Octoverse都是不錯的數據來源,但在大多數情況下他們只提供了語言之間的相對比較,因此我們無法了解各個社區的規模。此外,常見的調查報告可能會因為地理區域產生偏見,或偏向軟件開發的某些領域,或偏向開源開發人員。
該報告統計了活躍在各種主流編程語言上的軟件開發人員數量,數據覆蓋到了全球所有類型的程序員。報告主要基于兩個數據。首先,對全球軟件開發人員的數量進行獨立估算。預計到2019年底,全球活躍的軟件開發人員高達2040萬。其次,通過每六個月對開發人員進行一次大規模、低偏差的調查,該報告收集了十個開發領域中開發人員使用編程語言的情況,并總結出了哪些人在何種情況下使用每種編程語言的可靠信息。
過去兩年中JavaScript、Python以及Kotlin的增長速度最快。
圖:2019年第四季度全球活躍的軟件開發人員
目前,JavaScript仍然是最受歡迎的編程語言,全球約有1200多萬開發人員在使用這種編程語言。而JavaScript社區也是增長最快的社區之一。從2017年第四季度至2019年第四季度期間,超過300萬的發人員加入了該社區,這是絕對數量增長最快的編程語言。不僅新手開發人員認為JavaScript的入門非常簡單,而且經驗豐富的開發人員也愿意嘗試這種技術。因此,如今超過半數的Web應用程序、云服務或第三方生態系統的擴展開發人員都在使用JavaScript。
還有兩種因快速持續增長脫穎而出的編程語言:Python和Java。在過去兩年中,兩者新增的開發人員加起來高達400萬。
2018年,Python新增了220萬開發人員,并且在受歡迎程度方面超過了Java。盡管2019年Python的增長沒有那么迅速,但從整體來看Python仍然是第二大編程語言。其流行度的增加主要來源于數據科學和機器學習的興起。最令人驚訝的是75%的機器學習開發人員和數據科學家都在使用Python,而只有不足20%的人在使用R。
Java在移動生態系統(Android應用程序)和后端開發中非常流行。盡管Java已有二十多年的歷史了,但其在開發人員中的吸引力一直在穩定增長。自2017年底以來,每年都有超過50萬的開發人員加入Java社區,如今Java開發人員總規模已超過800萬。
從百分比來看,增長最快的語言社區是Kotlin。在過去兩年中,Kotlin的規模幾乎翻了一番,從2017年第四季度的110萬開發人員增長到2019年第四季度的200萬。鑒于Google推薦Kotlin作為Android開發的首選語言,預期這種增長會持續下去,并且Kotlin會成為移動開發的核心語言。
就社區規模而言,C#和PHP非常接近,分別擁有580萬和570萬活躍的軟件開發人員。在過去的一年中,兩者似乎都停止了增長。詳細來看的話,2019年C#損失了大約100萬開發人員。C#在AR / VR(Hololens)以及游戲開發人員的生態系統中占有一席之地,但其在桌面開發的優勢已無可挽回,可能是由于基于Web技術的跨平臺工具的出現。PHP的整體采用率并未出現明顯的下降趨勢,數據表明,該語言在Web開發人員中的流行度逐漸沒落(盡管它仍然是僅次于JavaScript的第二大廣泛采用的編程語言)。
2018年,使用C和C++的開發人員社區增長了15%(從550萬增長到630萬),但此后規模并未增加。到2019年底,約有540萬開發人員使用C++,而使用C的開發人員約為320萬。這兩種語言在物聯網項目中(對于設備級和應用程序級編程而言)都很重要,因為在這些項目中性能和底層訪問至關重要。
其他相對小眾編程語言的開發人員數量未出現明顯的增長。蘋果社區非常重視Swift和Objective-C,然而使用這兩種編程語言的開發人員數量卻在下降。Ruby和Lua的開發人員似乎正在大面積流失。最后,Go和Rust的社區仍然相對較小(不到150萬開發人員)。
為開源軟件做貢獻
開源軟件是開發世界的重中之重。不僅每種開發工具都有相應的開源方案,而且某些領域完全由開源產品主導。此外,開源社區的協作本質體現了共享代碼、知識和最佳實踐的價值,而這是開發人員文化的核心。
在開發人員的世界中,開源軟件無處不在,但并非每個開發人員都是開源人員。該報告探討了哪些開發人員為開源軟件做過貢獻,他們愿意做貢獻的原因,以及他們希望從各個公司獲得哪些開源支持。
圖:59%的開發人員曾為開源軟件做貢獻
59%這個數字本身就讓很多人非常吃驚,這代表了在數百萬開發人員中,只有五分之二沒有為開源軟件做過貢獻。下面讓我們來看看為開源做出過貢獻的開發人員與那些沒有做出貢獻的開發人員之間有什么區別。
總體來看,開源貢獻者比非貢獻者更年輕。為開源做出過貢獻的開發人員中,三分之一(33%)的人不到24歲,而非貢獻者中只有26%。但并不是說他們都是沒有經驗的程序員。41%的開源貢獻者擁有1-5年的開發經驗,甚至比非貢獻者高4%。
然而出人意料的是,開源貢獻者不一定是專業人員。實際上,他們與非貢獻者一樣都是業余愛好者。即便是非軟件行業的從業者也可以參與開源軟件的開發,并為之做出貢獻。
開源貢獻者涉獵多個開發領域的比例高于非貢獻者。但是,開源貢獻者更傾向于參與新興領域,例如機器學習/AI以及AR / VR,這些領域的創新主要由開源工具推動。
最后,我們可以通過開源托管網站Github上的活動,洞悉開發人員對開源軟件做出貢獻的可能性。這種關聯性非常明顯。在非貢獻者之中,有三分之二(67%)沒有個人公開的Github代碼庫,而近一半的貢獻者(48%)擁有兩個或多個公共代碼庫。我們通過Stack Overflow也發現了相似的關聯性。非貢獻者中不使用該網站的比例更高,或雖然訪問該網站卻沒有賬號。另一方面,在開源貢獻者中,至少獲得了一枚獎章的開發人員是非貢獻者的兩倍(30%與15%)。從事開源項目有助于推動開發人員積極地通過問答網站與同行互動。
以上我們分析了為開源軟件項目做出了貢獻的開發人員。下面我們來深入探討這些開發人員為開源做貢獻的原因。
三分之一的開發人員致力于開源軟件是為了提高編程技術
推動開發人員為開源項目做出貢獻的最大動力在于提高編程技術(29%),以及相信開源帶來的好處(26%)。
此外,22%的開發人員為開源軟件做貢獻是因為覺得開源項目很有趣,或者是為了解決開源軟件項目現有的問題,例如修復bug或創建新功能。
相比之下,金錢上的資助是最不重要的動機:只有3%的開發人員可以通過開源項目的工作而獲得報酬。事實證明,開發人員更傾向于通過開源項目建立自己的口碑(14%)或培養人際關系(11%),而不是直接獲得經濟收益。此外,與在其他原因的推動下為開源做貢獻的開發人員相比,以獲得報酬為目標的開發人員認為開源有趣的比例低了20%。通過開源獲得報酬的開發人員在意識形態上也不太相信開源是自由之源。
通常,開發人員為開源做貢獻的動機并不唯一,他們往往會受到多種因素的激勵。例如,在為開源代碼做出貢獻的目的是為了提高編程技術的開發人員之中,有一半的人也認為這項工作很有趣;同時為了培養人際關系的貢獻者之中,56%的人還認為這項工作讓他們有歸屬感。
圖:29%的開發人員為開源軟件貢獻代碼的目的是為了提高編程技術
將近一半的開源貢獻者希望各個公司支持開源社區并為之做貢獻
該報告還詢問開發人員他們希望各個公司提供哪些開源支持。在沒有為開源軟件做出過貢獻的開發人員中,有33%的人對各個公司沒有任何期望,而在開源貢獻者之中只有15%的人不抱期望。盡管如此,三分之二的非貢獻者仍然認為各個公司應當參與其中,并為開源軟件運動提供支持。他們明白開源的重要性,并相信各大公司都應該參與開源。
另一方面,44%的開源貢獻者希望各個公司支持開源社區并為之做出貢獻。另外,希望為解決實際問題做貢獻的開發人員比例高達55%。
許多貢獻者(44%)希望獲得有關如何在公司產品或服務上使用開源軟件的完整文檔。這對于通過開源獲得報酬的開發人員來說尤為重要(53%)。
有趣的是,開源開發人員并不一定希望公司基于開源軟件來構建產品和服務(39%)。就對開源軟件的支持而言,開發人員在這方面對各個公司的期望最低。
開源軟件貢獻者的構成包含形形色色的人群。他們的貢獻動機非常廣泛,包括學習、享受樂趣、建立口碑以及培養人際關系。總而言之,開發人員為開源做貢獻的理由各種各樣,而且他們希望各個公司能夠提供支持。
開發運維的參與和采用
開發運維重新定義了軟件開發的流程,讓整個行業進入了一個迭代過程,同時也讓軟件開發更具彈性和靈活性。盡管開發運維是軟件開發革命的新篇章,且已經獲得了廣泛的關注,但仍然算不上標準的開發制度中的一部分。
在過去的三年半中,我們追蹤了移動、桌面和Web開發人員使用持續集成和交付(CI / CD)工具以及服務的情況。盡管從技術上講開發運維是一種文化,而不是一套工具,但CI / CD是運營和開發人員之間協作的核心。這些工具實現了向這種新文化轉變的主要優勢。如下圖所示,大多數開發人員都沒有使用這些工具,而且使用率也沒有增長。
盡管許多研究表明許多公司都在采用開發運維,但數據表明,這種文化轉變并非貫穿所有的組織。CI / CD工具的使用是否在開發人員中間得到了普及?或者還存在一定的市場障礙?
圖:移動、桌面和Web開發人員使用CI/CD的情況
CI / CD用戶的詳細分析
與未使用CI / CD的開發人員相比,使用CI / CD的開發人員可以提供更多有關為什么使用率達不到預期的見解。通常,使用CI / CD工具的開發人員都是在擁有較大開發團隊的公司里工作的專業人員,與未使用CI / CD的開發人員相比,他們的經驗更豐富。
最近的一次調查數據顯示,與沒有使用CI / CD工具的開發人員相比,使用CI / CD工具的開發人員是專業開發人員的比例更高——就Web開發人員而言,使用CI / CD的人員是專業開發人員的比例比不使用CI/CD工具的人高20%。對于移動和桌面開發人員而言,這種差異分別為22%和18%。
圖:CI/CD用戶詳細信息
最新調查還顯示,使用CI / CD工具的開發人員中,58%就職于員工數超過10人的組織。相比之下,不使用CI / CD的開發人員就職于員工數超過10人組織的只有43%。CI / CD用戶在較小的開發人員團隊中工作的比例較小,這種情況表明小型公司的需求較低。這可能是由于不太復雜的開發操作對于自動化、對于IT與開發結合的需求也較低。
圖:軟件開發人員就職的公司規模
采用CI/CD的開發運維規模
與未使用CI/CD的開發人員相比,使用CI / CD的開發人員更有經驗。在使用CI / CD的Web開發人員中,44%擁有6年以上的經驗,而沒有使用CI / CD的開發人員中只有28%。在桌面開發人員中,我們看到了相同的趨勢——使用CI / CD的開發人員中49%擁有6年以上的工作經驗。相比之下,只有34%的未使用CI/CD的開發人員擁有豐富的經驗。使用CI / CD的移動開發人員經驗略少,但總體趨勢依然相同,49%的使用CI / CD的開發人員擁有3年以上的經驗,比未使用CI / CD的開發人員高17%。
采用開發運維文化是為了提高成功的幾率,開發人員應該對整個開發過程有所了解。越是經驗豐富的開發人員,越容易管理開發運維。
盡管有些人會不適應,但有些開發人員已經完全接受了向開發運維的轉變,并掌握了各種技能,還成功地掌握了開發運維專家的角色。
開發運維專家
開發運維專家在推動開發運維文化方面起著重要作用,而且他們往往都是帶頭的人。這樣的專家相對少見,在我們的調查中只有5%的開發人員擁有這份工作。缺乏推廣的專家可能是限制整個組織文化轉變的重要因素。
尋找擁有各項技術的專業人員來擔任這些職務可能是導致開發運維專家人數減少的原因。成功實施開發運維的關鍵之一就是文化的融合,因此推動流程改進的專業人員必須清楚和理解IT以及開發人員的工作方式,這一點很重要。
開發運維專家是一個多元化的群體,他們在組織中除了開發運維專家之外還擔任著其他職責。開發運維專家可以是架構師、管理員(數據和系統)、工程師和測試人員。這些技術在開發運維的實施中起著重要作用。開發運維伴隨著迭代開發過程的每個步驟,需要架構師來實現流程自動化,需要管理員來管理發布時間表,另外還需要測試人員和QA工程師來測試軟件。
圖:開發運維專家還承擔了哪些工作?
在深入研究開發運維專家的技術棧之后我們還發現,除了開發運維專家本身之外,許多人還承擔著多項工作。如下表所示,我們可以看到這些開發人員承擔的各色職責。開發運維專家中23%的人既是程序員又是系統管理員,27%是程序員和架構師。擁有開發技術力以及理解管理和設計系統是引領開發運維策略的基本要求。
圖:開發運維專家承擔的其他職責
機器學習開發人員通過哪些方式運行代碼
機器學習(ML)為我們日常使用的越來越多的應用程序和服務提供了動力。對于有些組織和數據科學家而言,機器學習不僅僅是獲取業務洞察或訓練預測模型。他們的工作實際上已從純粹的模型開發轉移到了涉及推理性能、擴展、負載平衡、訓練時間、可再現性以及可見性等問題的實際生產場景。這都需要計算能力,而在過去,計算能力一直是機器學習開發人員巨大的難題。
從在筆記本和臺式機上運行代碼到云計算解決方案的轉變
在2019年中期至年底之間,在筆記本電腦或臺式計算機上編寫應用或項目代碼的機器學習開發人員的比例從61%降至56%。
盡管5%的下降幅度很大,但大多數開發人員仍在本地運行代碼。業余愛好者更加傾向于在本地運行代碼,他們與專業機器學習發人員在本地運行代碼的比例分別為65%和51%。
相比之下,在同一時期,我們發現在公共云或大型計算機上部署代碼的開發人員所占比例略有增加。在本次調查中,針對問題:“您通過何種方式運行應用程序/項目的代碼?”,我們加入了多云(multi cloud)作為其中一個備選答案,目的是為了確認在一個項目中使用多個公共云的開發人員。
結果發現,19%的機器學習發人員使用多云解決方案來部署代碼。由于加入了這個備選項,我們可能低估了運行代碼的公共云使用量的實際增長;有些開發人員可能選擇了多云代替公共云。也就是說,啟動多個實例并在其上運行機器學習模型變得越來越容易,也變得越來越便宜。實際上,大多數領先的云托管解決方案都提供免費的Jupyter notebook環境,無需設置即可完全在云中運行代碼。例如,Google Colab預先安裝了大多數機器學習庫,是用戶克服依賴性和計算能力難題、隨時隨構建機器學習解決方案的理想場所。
盡管業余愛好者利用云計算基礎架構的傾向性不如專業開發人員高,但與專業人士一樣,他們也可以在CPU以外的硬件上運行代碼。正如稍后的分析,超過三分之一的機器學習愛好者在大型數據集上訓練深度學習模型時,會使用GPU、TPU之類的硬件架構來運行資源密集型代碼。
圖:機器學習開發人員將代碼部署到了何處
使用大數據和深度學習框架的開發人員更喜歡在混合以及多云環境中部署代碼
從事ML / AI研究的開發人員在本地計算機上運行代碼的比例(60%)超出了其他ML開發人員(54%),主要是因為他們大多需要使用較小的數據集。另一方面,負責部署由其他團隊成員構建的模型的開發人員或負責構建機器學習框架的開發人員更傾向于在云托管解決方案上運行代碼。
ML / AI或數據科學方面的老師使用云解決方案的比例超過了一般人,更具體地說是混合云或多云。應當指出的是,在講授ML / AI的開發人員中,有很大一部分還以不同的方式參與了數據科學和ML / AI。 例如,41%的人使用第三方API,而37%的人在應用或項目中訓練和部署ML算法。他們不一定將混合和多云架構作為教學活動的一部分。
ML開發人員使用的ML框架或庫的類型是在云計算體系結構上運行代碼的另一個體現。當前正在使用大數據框架(例如Hadoop,尤其是Apache Spark)的開發人員更傾向于使用公共云和混合云。Spark開發人員還會大量使用私有云來部署他們的代碼(40%,而其他ML開發人員為31%),或使用本地服務器(36%,而其他ML開發人員為30%)。
相比使用其他機器學習框架/庫(例如流行的Scikit-learn python庫)的開發人員,深度學習開發人員更傾向于在云實例或本地服務器上運行代碼。
然而,使用Keras和TensorFlow(最流行、最易訪問的python深度學習庫)的開發人員與使用Torch、DeepLearning4j或Caffe的開發人員之間存在明顯的區別。前者大多喜歡在他們的筆記本電腦或臺式機上運行代碼,而后者則傾向于使用混合和多云、本地服務器和大型機。這些差異主要是由于開發人員在機器學習開發方面的經驗造成的。例如,只有19%的TensorFlow用戶擁有3年以上的經驗,而Torch和DeepLearning4j開發人員擁有3年以上經驗的比例分別為25%和35%。Torch非常適合關心效率的ML開發人員,因為它擁有簡單快速的腳本語言,以及LuaJIT和底層C / CUDA的實現。
ML開發人員在語音識別、網絡安全、機器人移動和生物工程等領域使用硬件體系結構的比例較高。這些開發人員更傾向于使用生成對抗網絡等高級算法,而且他們需要處理大型數據集,因此需要額外的計算機功能。同樣,當前正在使用C++機器學習庫的開發人員也會大量使用除CPU(38%,其他開發人員為31%)和大型機以外的硬件體系結構,大概是因為他們非常在意性能。
最后,ML開發人員運行代碼的方式與他們從事機器學習/數據科學哪個階段的工作之間存在明顯的聯系。參與數據提取的ML開發人員更傾向于在私有云和本地服務器上運行代碼,而參與模型部署的ML開發人員則更多地使用公共云來部署機器學習解決方案。31%的開發人員參與了機器學習工作流程的所有階段(端到端),而未能參與全過程的開發人員為26%。他們也更傾向于在公共云和混合云上運行代碼。
相比之下,參與數據可視化或數據探索的開發人員傾向于在本地環境中運行其代碼(分別為62%和60%),甚至比參與數據科學工作流其他階段的ML開發人員(54%)還要多。
增強現實與虛擬現實
增強現實(AR)和虛擬現實(VR)實現了數十年來人類的想象。從《星際迷航》中的Holodeck到《鋼鐵俠》中的抬頭顯示(HUD),AR和VR就是未來的代名詞。然而,最近AR和VR處理已在智能手機上變得司空見慣,而且Oculus和Sony等公司已經發布了消費級的頭盔。該報告分析了AR和VR生態系統中的趨勢,重點關注活躍于該領域的開發人員與非開發人員之間的主要差異。
AR和VR是最小的軟件開發領域
單獨來看,增強現實和虛擬現實仍然是最小的軟件領域(相對于移動、桌面、Web、游戲、后端、工業物聯網、消費電子、數據科學和機器學習來說)。即便將二者結合起來,AR和VR(AR / VR)也僅比第二小的消費電子產品領域略大。僅有0.4%只從事AR或只從事VR領域的工作,其余的開發人員都在其他開發領域任職。
在9%的從事AR或VR領域工作的人中,將近一半(46%)的人同時涉足AR和VR。這表明這兩個領域的工作所需的技術力有很大一部分是重復的。與AR(24%)相比,僅涉足VR(31%)的人更多。AR的發展狀況不如VR,而且AR存在一些技術上的難題仍需解決,這也意味著AR產品的市場較小,因此技術也不夠成熟。結果表明,與VR相比,AR的門檻較高,因此涉足的人數更少。
圖:46%的開發人員同時涉足AR和VR
涉足AR和VR的開發人員大多出自興趣愛好
從事AR和VR工作的人員的特征之一是他們也兼任各色開發領域的工作。如前所述,僅參與AR和VR的人數很少,實際上,其中許多人還涉足多個開發領域。在從事AR和VR工作的人員,超過60%都涉足5個以上的行業。而在未曾涉足AR或VR工作的開發人員之中,只有9%涉足5個以上的行業,兩個群體之間形成了鮮明的對比。
涉足AR和VR的開發人員大多出自興趣愛好,而不僅僅是從事這方面工作的人。與未曾涉足AR或VR工作的人員相比,這些人對工作之外的技術領域感興趣的傾向性更大。他們都是技術愛好者,喜歡在自己的專業職責范圍之外進行實驗,而且目前正在嘗試使用AR與VR,他們希望在現有的開發項目中應用AR與VR的技術。
從另一方面來看,28%的VR專業人員也是這方面的愛好者。在AR專業人士中,24%的人利用業余愛好時間從事AR項目。這比其他大多數部門都高,機器學習以26%名列第二,其次是游戲(25%)。這表明,從事AR和VR工作的人對該行業充滿熱情,對個人的業余項目充滿熱情。
我們還看到,從事AR和VR工作的人所擔任的職業類型也很多樣化。由于AR和VR的工作兼具藝術和技術,因此專業人員常常需要兼顧多個職責(技術和非技術角色)。實際上,35%的AR從業者擔任著多個職責。與其他行業的人員相比,從事AR / VR的人員不太可能是“純開發人員”(僅擔任開發工作的人員)。在僅從事VR或從事AR和VR工作的人中間,這種差異尤為明顯,分別只有34%和38%僅擔任開發人員的工作,而在僅從事AR工作的人員當中,只有50%是純開發人員。
圖:從事AR和VR工作的人員常常身兼多職
與僅從事AR工作的非開發人員相比,僅從事VR或從事VR和AR的工作人員擔任非開發工作的比例是兩倍以上。這表明非開發人員傾向于以某種身份從事VR工作。
深入研究角色,我們看到49%的AR從業者同時兼任程序員或軟件工程師的工作,而VR從業者以及同時從事VR和AR工作的人分別只有37%和32%。許多AR從業人員也參與了Web和移動開發以及機器學習的工作。這表明,這些程序員對AR這項技術很感興趣,希望通過使用最先進的技術挑戰自己或在項目中實現AR。
另一方面,VR從業人員以及參與AR和VR的人員成為游戲設計師或產品經理的比例是AR從業人員的兩倍以上。這些職責的普及反映了游戲市場對VR的迅速接受——從新興技術到創收。
AR和VR開發人員中,使用3D動畫軟件的人與使用IDE的人一樣多
雖然從事VR工作的開發人員和非開發人員使用的部分技術相同,但是這些技術無法同時吸引這兩種人。Oculus技術套件是最適合開發人員和非開發人員使用的平臺,35%的VR從業人員都在使用該平臺。Playstation VR、Windows 10 Mixed Reality和Google Daydream都吸引了大量的非開發人員(分別為36%、28%和26%),但未能吸引VR開發人員。這種情況對于愿意擴大受眾的技術供應商來說是一個很好的機會,因為統一的技術棧可以通過統一其他工具和平臺提供巨大的優勢,簡化培訓需求,并減少使用的工具種類。
圖:oculus在所有從業者中處于領先地位,但PlayStation VR在非開發人員中同樣受歡迎
Unity Mobile AR、AR Core和AR Kit在AR產品的軟件工具包中占據領導地位,但所有這些工具在開發人員中的受歡迎程度遠遠超過了非開發人員。這表明AR軟件市場還存在很大空間,為非開發人員提供一種能夠輕松地實現創造力的工具。
圖:與非開發人員相比,AR軟件工具對AR開發人員的吸引力更大
超過半數的開發人員使用游戲引擎,而48%的開發人員使用3D建模和渲染軟件。這些技術在AR / VR開發人員中的廣泛采用證明了他們提供的抽象技術可帶來巨大的效率提升,而且很適合AR(尤其是VR)開發游戲。
我們看到,同時兼任開發人員和非開發人員角色(混合開發人員)的從業人員在AR和VR工作中占了非常大的比例,而且這一點也體現在了AR和VR開發人員使用的技術中——3D動畫軟件(39%)和設計工具(30%)。事實上,使用3D動畫軟件的AR和VR開發人員甚至與使用IDE的開發人員幾乎一樣多。
使用后端即服務、ML API和應用商店分析的AR和VR開發人員不足15%。AR和VR開發人員使用應用商店分析的比例比游戲開發人員低3%,比移動開發人員低10%。這表明AR / VR開發人員比較注重基礎技術,而并非通過應用的營銷渠道獲取最大價值。
我們看到非開發人員使用的工具也很類似:49%使用3D建模和渲染軟件,43%使用游戲引擎,42%使用3D動畫軟件。鑒于嚴格來講這些人并不是開發人員,因此越先進的技術被使用的概率越高。
22%的AR/VR非開發人員在學習編程
在從事AR和VR工作的非開發人員中,有15%的人對編程一無所知,而17%的人積極地通過編程完成工作。雖然AR/VR從業人員涉及的技術種類繁多,但很多人都在努力嘗試學習編程,其中22%的AR/VR非開發人員在學習編程。
這表明,雖然無代碼工具對完成任務很有用,但并不能滿足五分之一以上的AR和VR從業者的需求,他們正在學習編程以克服這些限制。盡管工具開發商付出了巨大的努力,而且市場將有這樣的定位:將無代碼工具作為非編程人員進入AR和VR的解決方案,而不必擔心編寫代碼,但是該領域的從業人員還是決定通過學習編程技巧來實現他們的愿景。對于希望吸引非編程人員的平臺來說,這是一個機會,他們可以在這些工具中創建更多功能,以吸引這一部分的手中。
在希望提高編程技術的非開發人員中,最受歡迎的語言是Java(28%)、C++(26%)、C#(25%)以及JavaScript(22%)。17%的AR / VR項目人員不需要編寫代碼,而15%的人使用可視化開發工具。這表明非開發人員的AR和VR工作者明白掌握編程技術的價值,但是他們仍然想在學習的同時創建產品。
圖:非開發人員正在積極學習Java、C++和C#
游戲是開發人員和非開發人員最喜歡的應用類別
AR和VR的從業者主要致力于創建娛樂和服務產品,但開發人員和非開發人員的側重點有所不同。77%的AR / VR開發人員在構建服務類的產品(例如業務物流產品),而只有67%的非開發人員在構建這類的產品。
AR和VR從業者最喜歡的應用類別是游戲和玩具,其中52%的開發人員和44%的非開發人員在開發這個類別的產品。對于其他娛樂產品(如移動和動畫),情況有所不同,其中有65%的非開發人員在開發此類應用,而只有47%的開發人員在從事此類工作。這表明開發人員在利用他們的編程經驗通過AR和VR來嘗試和創建游戲,而非開發人員則受到了其他用例的啟發。
無論是AR / VR開發人員和非開發人員都對工業應用(例如制造和建筑)不太感興趣,但是與非開發人員相比,開發人員在此類別中創建產品的比例更大。隨著AR和VR的成熟和穩定,商業應用的可行性增大,我們有望在開發人員和非開發人員中看到工業領域的進一步創新,但是構建娛樂應用的吸引力仍然很大。
圖:AR和VR從業人員主要側重于創建娛樂和服務產品
新興技術
隨著人們對某項技術的興趣日漸消逝,該技術的影響力也會不斷下降。面對新的挑戰和機遇,昨日的熱門話題很快就會煙消云散。許多因素都會影響技術的影響力,了解開發人員喜歡使用和學習的新興技術,可以為我們提供有關這些新興技術何時以及如何改變世界的寶貴見解。
在截至2019年第四季度的兩年中,我們通過四項調查跟蹤了開發人員對不同技術的參與和采用情況。為衡量參與度和采用情況,我們詢問開發人員是否正在研究某種新興技術,或是正在學習,或者只是感興趣或不感興趣。為了方便分析,“從事某項技術的開發人員”代表感興趣、正在學習或正在研究該技術的開發人員。而采用率則表示使用某種技術并正在致力于該技術的開發人員比例。
圖:開發人員大多涉足開發運維
圖:各項技術的采用率各有不同
開發人員最常涉足的是開發運維活動,其中59%的開發人員對開發運維感興趣、了解或正在使用。這一點不足為奇,因為隨著公司在不斷接納CI / CD,該領域在去年獲得了極大的關注。與六個月前的60%相比,該比例略有下降,這表明開發運維可能已觸及炒作曲線的頂點。這就是說,了解開發運維的開發人員的比例(占參與開發人員的30%)大于當前正在研究開發運維的比例(27%),因此在該領域積累知識的開發人員隊伍仍然很龐大。
圖:開發運維和霧計算/邊緣計算的采用率和參與度同比增長最大
機器人技術和計算機視覺的參與度分別達到了54%和53%,但是這種參與并不等價于采用率。
目前,13%參與了該領域的開發人員正在使用計算機視覺,另有25%的人對此有所了解。另一方面,8%參與了該領域的開發人員正在積極使用機器人技術,另有21%的人對此有所了解。機器人技術的門檻比計算機視覺技術高很多,這說明了采用率的差異,但機器人技術也具有很強的文化意義,并且是技術領域中令人興奮的領域,這就說明了為什么大量開發人員被動地參與其中。盡管如此,在過去的12個月中,參與機器人技術的人員比例還是減少了2%,而計算機視覺的參與度卻增加了2%。
量子計算和無人駕駛汽車也是如此。這兩種技術都吸引了開發人員的高度參與,其中46%的人感興趣、正在學習或正在研究這些技術,但這種參與尚未轉化為采用——僅有5%的開發人員正在從事自動駕駛汽車的開發,而在量子計算中該比例為4%。這些新興技術仍處于發展階段,但進展很快,隨著技術的發展,采用率一定會上升。在過去的12個月中,量子計算的采用率提高了2%;而對于無人駕駛汽車技術,在過去6個月的使用率提高了1%。
在那些開發人員參與度不高的技術中,不同技術的采用率也存在許多差異。霧計算/邊緣計算(32%)、加密貨幣(41%)和5G(42%)都在在開發人員參與度方面排在最后,但背后的原因卻不盡相同。
2018年底比特幣熱潮帶來的宣傳浪潮促成了目前約2,500-3,000種加密貨幣的存在。相對較高的參與開發人員(35%)正在學習或正在研究加密貨幣,但是,只有41%的開發人員參與其中,這表明加密貨幣的疲軟才剛剛開始。事實上,參與度在過去六個月中下降了1%(盡管去年有所增加)。更多的開發人員正在參與加密貨幣以外的區塊鏈應用。我們看到45%的開發人員正在參與其他區塊鏈應用,其中32%的開發人員在積極地學習或投身于該技術。
盡管就開發人員的參與度而言,霧計算/邊緣計算和5G排在最后,但與量子計算和無人駕駛汽車等更具未來主義的技術相比,它們的采用率更高。這些基礎設施技術可能無法像科幻技術那樣吸引公眾的想象,但是它們會更快進入公眾的視野,并且隨著技術的成熟,其采用率也將增加。在接受調查的所有技術中,霧計算/邊緣計算的采用率(2%)和參與度(5%)是過去十二個月中增幅最大的技術(僅落后于開發運維)。
許多因素決定了技術從興起到采用的過程,其中最重要的是商業實用性。開發運維和微型應用之類的技術可通過提高效率或打開新市場等方式立刻提供顯著的價值,因此,它們理所當然地獲得了開發人員的高度采用率和參與度。同樣,5G和霧計算 / 邊緣計算將迅速證明其價值和投資回報,然后快速引發商業采用。而那些更雄心勃勃長期發展的技術(例如量子計算和機器人技術)的門檻很高,其商業化還有很長的路要走。盡管如此,它們依然吸引了各地開發人員,盡管許多人還沒有參與涉及的技能或資源,但是當這些技術平民化時,將會有大量熱心的開發人員積極參與。
?深度學習技術干貨免費聽,AirPods2任性抽...520有場AI峰會不可錯過!
?誹謗、竊密、禁令、和解:文遠知行創始團隊糾紛暫時完結
?寒武紀與華為海思分庭抗禮:中立芯片公司的成人禮
?作詞家下崗系列:教你用 AI 做一個寫歌詞的軟件!
?手把手教你配置VS Code 遠程開發工具,工作效率提升N倍
?區塊鏈必讀“上鏈”哲學:“胖鏈下”與“瘦鏈上”
*請認真填寫需求信息,我們會在24小時內與您取得聯系。