MicroPython——有点东西,但是不多

在这里插入图片描述

引言

之前做过一个树莓派驱动墨水屏的项目,本来想整理出来与大家分享的,但是由于树莓派已经成了理财产品,所以为了让这个项目更加具有实践意义,最近我打算把这个项目移植到ESP32上。在树莓派上我使用的是Python编写的代码,所以出于简便考虑(后来发现其实也不是很简便) 我决定用ESP32的MicroPython框架来编写代码。
正如标题所言,在我最近的MicroPython学习和实践过程中,我发现MicroPython框架有那么点意思,但同时也有很多的问题和缺点,这篇文章我将分享最近在MicroPython学习和实践过程中的一些看法和见解。

MicroPython简介

在MicroPython出现之前,C/C++几乎是给单片机写程序的唯一的高级语言。2013年,澳大利亚程序员和物理学家Damien George通过众筹活动发布了MicroPython框架和第一个支持该框架的pyboard开发板1,让开发者能够使用Python语言来开发单片机。
时至今日,MicroPython框架已经支持包含ESP32在内的多种架构的单片机,但是MicroPython框架一直处于一种不温不火的状态,下面我将会从一个计算机专业的学生、一个开源硬件爱好者、半个STEM教育从业者的角度去探讨MicroPython。

从计算机专业学生角度看MicroPython

对于一个计算机专业的大学生来说,对于MicroPython的认识肯定不能只停留在“别的单片机只能拿C语言开发,装了MicroPython框架以后就能运行Python代码”这么简单,我们还是要大致了解一下它的原理的。

解释型语言与单片机

众所周知,C语言是编译型语言,而Python是解释型语言。当我们在个人电脑上运行这两种语言编写的程序的时候并不能感受到很大的区别,无非前者是将代码整体编译成机器码再执行,后者是将代码逐句解释成机器码执行。
在这里插入图片描述
但是当我们将目光转向单片机的时候,情况就有所不同了:我们需要考虑编译(解释)源代码这个操作到底在哪里完成?对于C语言来说,将C源代码编译成单片机能够执行的机器码的工作是在我们的PC机上完成的,我们只需要将编译好的机器码烧录到单片机上,单片机就能够执行我们的程序;而对于MicroPython来说,单片机可以实时执行我们发送的Python代码,这就意味着解释Python源码的工作是在单片机上完成的,而运行在单片机上的这套Python解释器就是我们所说的MicroPython框架。
在这里插入图片描述

解释型语言在单片机上的缺点

对比编译型语言,解释型语言的一大缺点就是运行速度慢,这个问题不论是在PC上还是在单片机上都是存在的。而解释型语言在运行时是直接解释源码这一特性,在PC机上看似并没有什么问题,但到了单片机上就成为了一个新的缺点。
目前的PC机的硬盘容量少说也是GB级别起步的,几KB哪怕是几MB的源代码根完全可以忽略不计,而对于MicroPython而言,我们需要把源代码存储在单片机的FLASH上,以ESP32系列单片机为例,其FLASH容量只有2-4MB,这个时候源代码的大小就是一个无法忽略的事情了。
我们不得不在有限的空间里面尽量想办法减小源代码的大小,比如说删除所有的注释,变量名和函数名起的尽量简短一些,这些都可以有效地减小源代码的大小。但作为一种高级语言,为了程序的可读性,我们却又是是希望在代码中添加注释、给各类标识符(变量名、函数名、类名等)起一个有意义的名字,这两者之间便产生了不可调和的矛盾
如果说注释和变量名在源码中并不能占据太多的空间的话,在MicroPython中存储位图则是更大的一笔开销:例如一张40x40像素的黑白位图需要40*40 = 1600bit = 200Byte的空间,在MicroPython中可以这样表示:

myimg = bytearray(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值