写在前面:

几十年来,大家普遍的认为C与C++才是标准的嵌入式语言,那么现在大火的Python算是一种嵌入式语言吗?

在给出我的答案之前我们要先明确几个问题?

什么是Python?

编程语言的定义?

编程语言(英语:programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令,一种能够让程序员准确地定义计算机所需要使用数据的计算机语言,并精确地定义在不同情况下所应当采取的行动。

最早的编程语言是在电脑发明之前产生的,当时是用来控制提花织布机及自动演奏钢琴的动作。在电脑领域已发明了上千不同的编程语言,而且每年仍有新的编程语言诞生。很多编程语言需要用指令方式说明计算的程序,而有些编程语言则属于宣告式编程,说明需要的结果,而不说明如何计算。

编程语言的分类?

编程语言主要分为编译型和解释型,静态语言和动态语言,强类型和弱类型,混合语言等。

编译型语言

通过编译器把源代码编译(compile)成机器语言,在经过链接(linker)将源代码中所使用的库串联起来生成可执行二进制文件,这样运行时计算机可以直接以机器语言来运行程序。

优点:运行效率高。

缺点:编译之后如果需要修改代码需要重新编译整个模块。

编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件

代表语言:C,C++,Objective-C等。

解释型语言

不需要编译,只在程序运行时才逐条翻译成机器语言。这种编程语言需要利用解释器,在运行期,动态将代码逐句解释为机器代码,或是已经预先编译为机器代码的子程序,之后再运行。

优点:跨平台支持比较好,

缺点:程序运行效率会比较慢。

如:python,php,Perl等。

Python

Python是一种广泛使用的解释型、高级和通用的编程语言。

Python支持多种编程范型,包括函数式、指令式、反射式、结构化和面向对象编程。

它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。它的语言结构以及面向对象的方法旨在帮助程序员为小型的和大型的项目编写清晰的、合乎逻辑的代码。

Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。

Python优缺点

优点:

  • 1、python的定位是“优雅”、“明确”、“简单”,所以python程序看上去总是简单易懂,对于初学者容易入门。
  • 2、开发效率高,python有非常强大的第三方库,基本上你想通过计算机实现任何功能,python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上进行开发,大大降低开发周期,避免重复造轮子。
  • 3、高级语言,当使用python语言编写程序时,无需考虑如何管理内存等底层细节。
  • 4、可移植性,由于它开源的本质,python已经被移植在许多平台上,如果你小心的避免使用依赖于系统特性,那么你的所有python程序无需修改就几乎可以在市场上所有的系统平台运行。
  • 5、可扩展性,如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,可以把部份程序用C或C++编写库,然后用python调用。

缺点:

  • 1、速度慢,由于是解释型所以运行速度相比编译型语言要慢,跟Java相比也要慢一些。
  • 2、代码不能加密,因为python是解释型语言,它的源码都是以明文形式存放的,所以如果项目要求源代码必须保密或者加密,那一开始就不应该考虑用python来实现。
  • 3、强制缩进,单行语句不用写分号对于习惯了C/C++用户可能不是太习惯。

小结

从上面的信息可以看出,Python与标准的C/C++还是有很大的不同的,这些不同甚至从该语言的设计之初就决定了。

但我们仅从前后两者不同就能简单的得出结论吗?显然不合适,所以我们还需要知道什么是嵌入式语言?

什么是嵌入式语言?

什么是嵌入式?

嵌入式,英语是 embedded,表示“嵌入式的,植入的,内含的”。

首先,嵌入式有不少组合名词,例如嵌入式系统,嵌入式软件,Linux 嵌入式,Android 嵌入式,嵌入式 Web,等等。

IEEE电气工程师学会:

嵌入式系统是控制、监视或辅助机器和设备运行的装置。

从这里可以看出,老外们是特别看重应用的,一切讲究实际,不抽象,直接就是硬刚。

再来看看咱们国家的:

嵌入式系统是指以应用为中心,以计算机技术为基础,软、硬件可剪裁,适应应用系统对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统。

讲究的就是一个面面俱到。

所以,按我的理解,嵌入式就是:

  • 小电脑
  • 可长期运行
  • 执行特定功能
  • 低功耗、高可靠、小体积
  • 可定制,软硬件都是

嵌入式语言有哪些要求?

对于嵌入式语言来讲最重要的一点就是:面向硬件编程。

这个面向硬件有两层含义:

第一是说需要了解硬件特性,然后通过编程来访问硬件。

例如通过读写寄存器完成对外设的控制,简单如GPIO,复杂一些像Ethernet控制器,除了了解硬件的操作逻辑,也需要了解引脚、电平、IO复用、、硬件缓存、DMA这些概念。

第二是说硬件资源带来的限制。

这是由于嵌入式产品通常针对具体系统,涉及的技术约束大概有计算能力,IO接口,内存,体积,功耗,等方面的约束,在这些约束下进行技术选型和系统设计,很多时候硬件选单片机,ARM,PowerPC,软件使用裸机,RTOS或经过裁剪的linux是比较合适的选择,就是合适,我们也可以用牛刀杀鸡,但是没必要。

第二个重要的要求就是:足够的效率。

不能因为语言本身占过多资源,这个时候需要虚拟机或解释器的语言就不太合适,而C/C++通过指针(地址)访问硬件的操作最自然不过,也可以做到较少的资源消耗。

小结

从传统的嵌入式语言的定义来看,Python似乎从各个方面都算不上一个标准的嵌入式语言。

Python属于嵌入式语言吗?

通过上文的一些关于定义方面的解释,似乎,Python很难称得上一门标准的嵌入式语言。

但有一点大家不要忘记,我们学的这些编程语言,最终只有一个目的,那就是应用。

近些年,随着Python越来越多的被应用于嵌入式和边缘系统,IEEE(电气电子工程师学会)早已经Python归为嵌入式语言了。(网址:IEEE)

这不仅代表了树莓派所带来的影响,还表明了连接到云端的边缘系统也需具备智能的事实。

我这几天也在学习一个很有趣的嵌入式AI的框架PYNQ。

PYNQ是Python On Zynq的缩写,它是一个软件开发框架,指导硬件层、驱动层和应用层之间的接口设计。

底层硬件用的是FPGA,驱动内核使用的是Linux,上层一些智能算法(比如语音识别,人脸识别等)靠的是Python提供API接口。(感兴趣的同学可以去这个网址:PYNQ)

写在最后:

虽然不想承认,但时代总是再向前发展的,一些固定领域的技术框架,终会被新生的技术所影响,但只要明确一点:一切以应用为导向,就没有什么可以影响到我们。

加油!!!!!!

(上海这两天终于下雨了,不聊了,写完博客该剪视频去了)。

对了,我最近再整理个人知识库,感兴趣的朋友们关注一波啊~

爱研究的小胡同学 · 语雀

参考文献:

维基百科

http://t.csdn.cn/BxEsY

什么是嵌入式? - iron2222 - 博客园

什么是嵌入式编程?如何入门和提高? - 掘金

嵌入式编程语言 - 知乎

Python究竟属不属于嵌入式语言?相关推荐

  1. python是一门什么课程-Python究竟是一门怎样的语言,Python为什么这么火?

    Python究竟是一门怎样的语言? Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些 ...

  2. Python究竟是个啥?为什么985的学生都在学它?早就该曝光了

    现在网上一搜学Python能做什么,无一例外地全跳出来一堆的专业名词,看的时候虎躯一震,看完之后,依然不知道学会了能干啥- 不知道大家是不是也有同样的感受,为了解决大家这种困惑,我今天特意花时间总结了 ...

  3. python究竟要不要使用多线程

    阅读目录 1. 先来看两个例子 2. python虚拟机机制如何控制代码执行? 3. python多线程究竟有没有用? 4. python多进程执行原理 在总结concurrent.futures库之 ...

  4. python到底可以做什么-Python究竟是什么?能干嘛?

    前言 最近这段时间跟很多同学沟通以后发现很多人虽然来学习Python,大家只是抱着好奇的心来看看,对于编程,计算,Python这些没有一些基础的概念.思前想后,写下这篇博文,希望能够帮助到各位同学. ...

  5. Python识别表格图_使用Python究竟可以做什么?下面是Python的3个主要应用

    原文传送门: https://medium.com/free-code-camp/what-can-you-do-with-python-the-3-main-applications-518db9a ...

  6. python实现异步的几种方式_终于搞明白了,异步Python比同步Python究竟快在哪里?...

    大家好,你是否听人们说过,异步 Python 代码比"普通(或同步)Python 代码更快? 果真是那样吗? 同步和异步是什么意思? Web 应用程序通常要处理许多请求,这些请求在短时间内来 ...

  7. python能做什么-Python究竟是什么?能干嘛?

    前言 最近这段时间跟很多同学沟通以后发现很多人虽然来学习Python,大家只是抱着好奇的心来看看,对于编程,计算,Python这些没有一些基础的概念.思前想后,写下这篇博文,希望能够帮助到各位同学. ...

  8. python是干什么用的-使用Python究竟可以做什么?下面是Python的3个主要应用

    原文传送门: https://medium.com/free-code-camp/what-can-you-do-with-python-the-3-main-applications-518db9a ...

  9. 使用Python究竟可以做什么?下面是Python的3个主要应用

    前言 如果您正在考虑学习Python-或者您最近才开始学习-您可能会问自己: "我用Python到底能做什么?" 这个问题很难回答,因为Python有很多应用程序. 但随着时间的推 ...

最新文章

  1. ElasticSearch 知识点整理(深入)
  2. 使用WebCrypto API的电子签名
  3. SQL内连接、外连接、全连接、交叉连接、自连接、自然连接
  4. css3 操作动画要点
  5. 无人机送货新方式?只为解决“最后一公里”
  6. 计算机安装微信打不开,电脑版微信打不开解决方法
  7. matlab计算电磁场程序,电磁场与波:电磁材料及MATLAB计算
  8. 流行的后台管理系统模板总结
  9. 使用JS快速读取TXT文件
  10. 百度apollo自动驾驶modules\planning\tasks\optimizers\path_time_heuristic\PathTimeHeuristicOptimizer类代码详解
  11. angular8.x + ngx-translate实现国际化
  12. 暂时解决Xmarks无法同步
  13. UVC 摄像头驱动(二)描述符分析
  14. Flask-Websocket
  15. 信息隐藏技术综述——粗浅入门
  16. 各类游戏对应的服务端架构
  17. 真正手把手教你玩转Git
  18. Web三剑客-CSS笔记
  19. Ubuntu16.04 安装 wechat
  20. ImageNet 1k and 22k

热门文章

  1. JAVA(景区门票类)
  2. 概论之全概率以及贝叶斯公式---->(小小习题与知识点总结)
  3. JavaScript使用改变scrollLeft的值做轮播图效果
  4. Android Room概述
  5. atop用法_atop学习
  6. Java中的深克隆与浅克隆
  7. 大话遗传算法(含Matlab代码)
  8. 5种raid冗余磁盘阵列
  9. 白学立体视觉(1): 双目视觉
  10. adb root android 6,ADB获得ROOT权限的探究——基于Android6.0