整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

资深程序员推荐七大JavaScript编程工具

文将推荐七大生产力工具来帮助程序员充分利用JavaScript,并使整个过程更轻松。在现实世界中,JavaScript是最常用和使用最广泛的编程语言之一。这些JS开发工具不仅为程序员提供了更多可能,还可以帮助他们进行调试,并为HTML5提供重要支持。

这些工具在几年前并不常见,但现在每个程序员都习惯使用Javascript编程工具来开发或编程。这个工具包可以为开发人员提供非常有用的帮助,因为它可以轻松地编写和执行代码,并找到代码中的问题。

jQuery UI

借助jQuery UI,程序员可以为多个网站应用程序设计自定义用户界面,还可以减少为不同互动特征和网站小部件编写的代码量。 jQuery UI包含多个保持状态的窗口小部件,因此与通常的jQuery插件相比具有更加独特的使用数组。所有jQuery UI的小部件都具有相似的模式,因此只要掌握了其中一个,就可以了解全部。

Express JS

Express.js是一个基本框架,允许程序员在Node.js的帮助下开发网站应用程序。它具有非常高的灵活性,对于程序员来说,它是一个高度响应和可靠的开发框架。Express JS非常稳定、具体,程序员可轻松使用。快速JS的一些功能使得它对程序员来说是独一无二的,非常优先。Express JS主要特征之一是允许程序员以非常可达的方式创建API,同时还提供了一个URL路由器。

Bytescout

使用Bytescout PDF generator SDK,程序员可以创建有丰富图像和文本的客户端PDF代码。该工具有许多可供任何级别开发人员使用的选项,你可以轻松地从画布或URL添加图像,绘制符号,线条以及设置页面方向,旋转等。

Jx

Jx是用于开发用户图形界面的JavaScript库。Jx有助于向JavaScript提供AJAX支持。它公开地支持GET和POST方法。纯文本和JSON是Jx两种主要支持的返回类型。在GET方法的帮助下,用户可以将数据传输到服务器端脚本。GET方法的一个例子是url.php?.连接解锁后,POST方法将传输数据。

  • GET方法的语法:

  • GET方法的示例:

WaveMaker

WaveMaker是一款开源软件,可用于开发任何类型的网站应用程序,并且有助于部署这些应用程序。新开发的网站应用程序可以通过WaveMaker运行,它也有助于API开发。在WaveMaker的帮助下,开发人员可以减少开发应用程序时可能发生的浪费,并以更快的速度交付产品。由于WaveMaker允许开发人员立即创建应用程序,并且使他们有机会立即进行测试,可能的错误和故障将被完全消除。

JSDoc Toolkit

JSDoc Toolkit帮助开发人员轻松地记录其代码。所有用JavaScript编写的代码都可以在JSDoc Toolkit的帮助下轻松记录。由具有独特编码风格的不同开发人员开发的大规模应用程序可以通过JSDoc Toolkit轻松管理。

  • JSDOC工具包的语法:

  • JSDOC工具包的一个例子:

该代码可以输入任何JavaScript,不需要任何单独的文件。

Firebug

Firebug被认为是用于前端调试的最佳Javascript编程工具之一。它有能力在代码中设置分区,以便开发人员可以方便地浏览代码。对于在Mozilla浏览器外工作的开发人员,建议使用Firebug Lite。Firebug Lite本身就是一个JavaScript库,允许开发人员将其数据库包含在网页中,以便可以使用Firebug的某些功能。

所有使用JavaScript编写的命令都可以被Firebug命令行轻易接受。一旦输入了JavaScript命令,每个命令的结果都会以超链接的形式出现在控制台中。有与Firebug应用程序相关联的多个窗口,并且每个窗口显示应用程序的不同功能。它还让开发人员看到单个文件的下载时间。它分解多种形式的对象,如JavaScript的文件和图像,并指出从浏览器缓存加载的文件。

dobe公司是一家专注于大型专业设计软件开发的公司。喜欢互联网的朋友都有了解他的产品 比如平面设计软件 photoshop(简称PS)矢量绘图工具illustrator(简称AI)Adobe公司开发的软件设计领域特别广泛 几乎是互联网各行各业有设计 同样有很多网友们就对他家的软件感兴趣今天来盘点一下Adobe的全家桶都有哪些 都是干什么的?


Adobe全家桶介绍

1.photoshop


Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑工作。ps有很多功能,在图像、图形、文字、视频、出版等各方面都有涉及。

2.Adobe Illustrator


illustrator也是用于图像编辑工作,但它与Photoshop不同的是,Photoshop主要是以像素型数字图像编辑为主,而illustrator是以矢量图像编辑为主,例如印刷出版、广告海报、图形插画等。

采用矢量图像的好处就是,图像大小不再受限于分辨率影响,可以自由放大缩小而不失真,特别适合需要配合广告包装来改变尺寸的印刷工作。所以作为设计工作者,illustrator也是经常会用到工具软件。

3.After Effects

After Effects主要以动画编辑工作为主,可以处理2D和3D图形的后期合成,有丰富的动画特效可以选择。一般用于电视及影视片头制作,影视特效,网页动画,广告,动漫等。

4.Premiere

Premiere是一款专业视频编辑软件,虽然说很多视频编辑软件都能提供视频剪辑、特效、调色、配音、字幕等常见功能,但是Premiere能在这些方面做得更细致更强大。基本上那些视频自媒体、广告制作、电视节目以及电影制作都会用到它来编辑。如果喜欢在社交网站分享短视频的用户,也可以用它来编辑日常生活的视频。

5.LightRoom

LightRoom是一款可以快速导入照片和调色处理的软件。主要在摄影过程中或者后期批量处理会用到它,也可用它来分类管理照片。LightRoom其实是弥补Photoshop在批量处理照片效率上的不足,主要特色就是要快快快地调色,是摄影师的好帮手。

6.Audition

Audition是一款专业音频编辑软件,原名为cool edit pro,被Adobe收购后,改名为Audition。

Audition可以提供先进的音频混合、编辑、控制和效果处理功能,专门为音频、视频专业人员设计。

7.Adobe Spark

Adobe Spark 網頁版和行動版可讓您輕鬆地製作社交圖像、網頁和短片。使用 Spark (可透過 Adobe Creative Cloud 計劃附屬內容的方式取得,亦可透過獨立訂閱取得),您就能獲得进阶范本、Adobe Fonts 等項目的完整存取權。您甚至可以加入自己的品牌,將您製作的所有內容變成獨一無二的原創作品。

8.AdobeXD

Adobe XD 是一个功能强大的协作式易用平台,可帮助您和您的团队为网站、移动应用程序、语音界面、游戏等创建设计。

9.ADOBE DREAMWEAVER

制作适用于各种浏览器或设备的精美网站。

利用支持 HTML、CSS、JavaScript 等内容的 Web 设计软件,几乎随处都能快速制作并发布网页。

10.Adobe indegign

11.Adobe Acrobat

12.Adobe Animate

Adobe官方网站:https://www.adobe.com/cn/index.html有兴趣可以都下载尝试一下!

理 | 弯月,责编 | 郭芮

头图 | 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倍

☞区块链必读“上链”哲学:“胖链下”与“瘦链上”