2019个嵌入式市场研究,持续的C/C++优势

2019 Embedded Markets Study reflects emerging technologies, continued C/C++ dominance

根据Eee Times和嵌入式技术在今年早些时候发布的2019个嵌入式市场研究,虽然物联网(IOT)、嵌入式视觉、机器学习和其新兴技术在开发组织中的重要性日益提高,但C和C++仍然是嵌入式开发者中的主要编程语言。

2019年嵌入式市场研究延续了20多年的传统,提供了美洲、亚太地区(APAC)和欧洲、中东和非洲(EMEA)嵌入式发展状况的详细快照。在这张快照中,研究提供了一系列关键领域的见解,从受访者当前的应用焦点和设计环境到关键硬件组件和设计技术的作用。以下各节说明了这些领域的亮点。

应用程序焦点

在半数受访者中,物联网发展已经被认为是重要的,预计在未来的项目中,物联网发展将得到相当大的关注,超过65%的受访者表示,将有一个或多个项目致力于物联网(图1)。

图1.  2019年嵌入式市场研究

即便如此,在一个连接性基本上是一个基线设计需求的行业中,安全方法的使用充其量是混合使用的(图2)。纯软件安全方法通常比基于硬件的安全方法带来更多的安全漏洞。然而,目前约有26%的设计都是基于软件安全的。也许更令人担忧的是,20%的设计完全没有安全功能。调查并没有探究这些设计的本质,让了解这些设计的目标应用程序的性质,因此这些系统中的实际风险是未知的。然而,任何嵌入式系统仍然容易受到来自连接相关安全漏洞的威胁。

图2.  当前设计中采用的安全措施——2019年的新问题。

也许这项研究的一个更显著的结果在于对使用机器学习能力的期望。已经有32%的2019年研究受访者表示目前正在使用机器学习方法,但55%的受访者正在考虑使用机器学习方法,这一数字在欧洲、中东和非洲地区的开发者中升至68%(图3)。

图3.  正在使用或正在考虑的先进技术。

当前嵌入式设计环境

虽然对IEEE或GITHUB等编程语言的更一般的调查表明Python、java和JavaScript的统治,2019个嵌入式市场研究表明C++和C++仍然牢牢地处于嵌入式开发的顶层(图4)。

图4. 编程语言的使用。

开发人员可能将C/C++代码与汇编语言的结合,一方面用于关键循环,要么与Python、Matlab和LabVIEW进行建模和算法探索。Python在人工智能(AI)开发中的迅速普及可能会使这些数字略有改变,因为其研究结果表明边缘计算系统和基于AI的方法的重要性日益增加。然而,目前,C和C++仍然是嵌入式开发人员中首选的编程语言。

嵌入式设计过程

嵌入式设计过程仍然以详细设计阶段为主,占设计时间的30%——这一数字在过去几年中基本保持不变(图5)。在2019年的一个新问题中,花费在安全或隐私风险评估上的时间量引发了对在嵌入式设计中构建安全性和隐私性的更高级别方法的作用的质疑。

图5.  花在不同设计阶段的时间。

操作系统

嵌入式Linux和FreeRTOS继续超越嵌入式开发中使用的其操作系统。然而,在未来12个月内可能使用哪些操作系统方面,地区差异明显,尤其是Android操作系统(图6)。

图6.  正在考虑的主要操作系统的区域性突破。

除上述章节外,2019年嵌入式市场研究还对微处理器、FPGA和开发领域(包括硬件IP重用、设计技术、系统级工具以及项目和版本控制)的当前和预期作用提供了详细的见解。

2019个嵌入式市场研究,持续的C/C++优势的更多相关文章

  1. IntelliJ IDEA 最新版 2019.2.4 激活 (持续更新)(含windows和Mac)

    IntelliJ IDEA 最新版 2019.2.4 激活 最新版激活包下载地址: 百度网盘 提取码: i28c 转载: Neo Peng Jetbrains系列产品 激活方式 同下述方式相同,只需要 ...

  2. Linux嵌入式系统与硬件平台的关系

    一. Linux嵌入式系统 操作系统是一种在计算机上运行的软件,它的主要任务是管理计算机上的系统资源,为用户提供使用计算机及其外部设备的接口.它存在的目的是为了管理所有硬件资源,并且提供应用软件一个合 ...

  3. 使用buildbot实现持续集成(转载)

    转载自:http://www.oschina.net/p/buildbot 使用 Buildot 实现持续集成 使用基于 Python 的工具实现持续集成的理论与实践 牛仔式编码的日子在大多数组织中早 ...

  4. 构建基于Jenkins + Github的持续集成环境

    搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...

  5. CI持续集成

    CI持续集成 “我的TDD实践”系列之CI持续集成 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先 ...

  6. 我的TDD实践---CI持续集成

    “我的TDD实践”系列之CI持续集成 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精 ...

  7. 32位嵌入式微处理器(processor)一览

    32位嵌入式微处理器(processor)一览 由于嵌入式系统的专用型与定制性,与全球PC市场不同,没有一种微处理器或者微处理器公司可以主导嵌入式系统.本文分析了当前市场上主流的一些32位嵌入式微处理 ...

  8. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  9. 如何自行搭建一个威胁感知大脑 SIEM?| 硬创公开课

    如何自行搭建一个威胁感知大脑 SIEM?| 硬创公开课 本文作者:谢幺 2017-03-10 10:09 专题:硬创公开课 导语:十年安全产品经验的百度安全专家兜哥,手把手教你用开源项目搭建SIEM安 ...

随机推荐

  1. 技术面试问题汇总第004篇:猎豹移动反病毒工程师part4

    这次所讨论的三个问题,比如DLL以及HOOK,很容易被病毒木马所利用,因此必须要比较全面地进行了解.而异常处理机制,则往往与漏洞相关联.它们自身的概念并不难理解,只是由之引申而来的问题,在计算机安全领 ...

  2. POJ1178枚举三个地方(所有点都去同一个点)

    题意:       有一个国王和很多骑士,他们都要到某一个点去集合,然后问所有人都到达某个终点的距离和最小是多少?过程中如果国王遇到了一个骑士的话,国王就可以和骑士一起按照骑士的走法走,这是两个人算一 ...

  3. 初学Golang的笔记

    Note 一个module是一个go package的集合,该module用于发布的一个单位. 一般一个go repo仅仅包含一个module,含有一个go.mod文件 每个module路径不仅仅用于 ...

  4. Docker为PHP安装gd扩展

    安装扩展库的通常命令 docker-php-ext-install 扩展库名 安装gd库需要特殊照顾,步骤如下 //进入PHP容器 //更新软件源 apt update //安装各种库 apt ins ...

  5. Jmeter(四十四) - 从入门到精通高级篇 - Jmeter远程启动(本地运行+远程运行)(详解教程)

    1.简介 这篇文章其实很简单,就是为下一篇文章做一个铺垫,所以宏哥给小伙伴或童鞋们提前热身一下. 2.什么是远程运行? 远程执行,就是脚本放在本地,执行却在另一台电脑上执行,当然,可以是远程多台电脑一 ...

  6. Linux性能调优命令之free

    功能说明 free 命令显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存.共享内存将被忽略 语法 free [参数] 参数 -b : 以Byte为单位显示内存使用情况 ...

  7. 关于Java的 long,float 类型

    发现了这么一个坑: 1.2f+3.4f=4.60000014305114751.2d+3.4d=4.6

  8. 关于.NET微服务最热门的问题解答

    在我们最近让我们一起学习.NET的微服务专场活动中,我们收到了一些很好的问题.我们在现场已经回答很多问题,但我们想继续回答一些在会议中出现的最热门的问题.如果你错过了现场直播,不要担心,因为你可以按需 ...

  9. safari模拟IE

    在如下网站找到相对应的useragent https://developers.whatismybrowser.com/useragents/explore/software_name/interne ...

  10. [笔记] 《c++ primer》书店程序 Chapter 1

    书店程序是<c++ primer>中重要的实例,涉及大部分重要知识点,但代码分散阅读不便,下面按照章节顺序总结 Sales_item.h #ifndef SALESITEM_H // we ...