在线时间4069 小时
UID3441752
注册时间2017-11-21
NXP金币753015
TA的每日心情 | 开心 2024-3-26 15:16 |
---|
签到天数: 266 天 [LV.8]以坛为家I
管理员
- 积分
- 32032
- 最后登录
- 2024-4-26
|
为什么我们需要MicroPython?
在开始今天的正文之前,小编想先问大家一个问题:什么是快乐星球(编程)?作为一个编程新人,小编认为,编程是一门关于创造的艺术,能够让我们把抽象的意识具象化,而对于创造艺术的过程,应该是无比快乐的。
那么有没有办法让我们更快乐?当然,让编程更加简单,不仅快乐会加倍,编程效率也会大大提高。而关于这一点,小编认为,Python做到了。可以说,现在Python已经不再是一门单纯的编程语言了,它更是一个万能的工具箱,可以让复杂的事情变简单。
这里我们先提前给出结论,Python是一款更适合初学者的入门语言。
为什么这样说呢?我们就拿在大学期间接触到的第一门语言来进行对比。相信大家在上学时候,学到的第一门语言大多是C/C++。既然是入门语言,他们一定很简单吧。如果真的这么想了,小编只能说声不好意思:想得太简单了。可能一个小小的指针就能把我们搞得云里雾里,可以说,我们丝毫没有感受到编程和创造的快乐。
而上述这些还往往是在基础理论学习上,如果我们真的熬过了这一阶段,到了实际使用的一步,还会发现,即便是一个很小的功能也需要花费很多行代码来实现。
我们就拿一个最简单的字符串拼接来举例子吧:
- char str[50];
- strcpy (str,"hello, micropython!");
- strcat (str,"hello, world!");
- printf(str);
复制代码 这里,我们首先要申请一个长度为50的字符数组以存储结果。之后调用C库函数进行字符串操作。最后,调用printf函数将结果打印出来。
让我们先来分析下这段代码,实话讲,如果不是学习过C的同学,可能并不知道这段代码是在干什么。除了翻翻xx翻译,看看关键字的英语含义,估计也没有啥其他办法了。其次,实现步骤繁琐,同时要依赖一些附加库。同时,当我们要使用某个变量前,不仅要声明类型,还要考虑数组长度问题,以防访问越界,看到segment fault。
最重要的是要知道str字符数组的指针意味着什么。
然而同样的功能如果换到Python呢?
- str1 = 'hello, micropython!'
- str2 = 'hello, world!'print(str1 + str2)
复制代码 同样的操作,我们只要三行就能解决。而且,我相信,就算没有系统学习过,或是完全没接触过Python的同学,也能大致知道这是在干什么吧。而且,我们去掉了变量声明部分,免去了我们思考数据类型的烦恼。
那么,我们当真不需要C吗,不是的,CPython和MicroPython其实都是由C语言实现的,我能够这么方便的实现这些功能,也正是因为大神们帮我们用C打好了基础,我们才能够树下乘凉。但是C语言本身对于计算机基础/硬件底层知识有着较高的要求,真正驾驭起来可不是很容易的。
可能这时,有人会问了,今天的主角不是MicroPython吗,怎么聊起来Python了,所谓好戏都在后头,我们这就开启MicroPython篇。
MicroPython是英国剑桥大学的Damien George教授所发明,教授本身是一名计算机工程师,每天都要使用Python来工作,同时也兼顾一些机器人项目。正如那颗砸到牛顿的苹果一样,每天的工作,让他冒出了一个新想法,能否用Python来控制单片机,实现对机器人的控制呢?经过了大约6个月的时间,MicroPython诞生了,包含了几乎所有CPython(即我们在PC上使用的Python)的功能。
自此,单片机的开发,正式开启了又一华章。
那么除了之前说的,使用Python开发的代码简洁易懂之外,就没有什么其他优势了吗?当然有了,而且,小编想要说的是,这个优势被应用到单片机开发上,会显得格外的亮眼。
对于传统的硬件开发而言,C/C++是不二之选,总结一下这一传统的开发形式:代码编辑->编译->烧写->运行。在这一模式下,当我们发现有个隐藏的小彩蛋(bug),哪怕只是需要添加一个小小的分号来修复,或者说我们想要添加一个简简单单的小功能,就必须重新对代码进行编译,然后下载到目标板中,才能够实现代码的正常运行。
那么有了MicroPython,当我们烧写了MicroPython固件到板子上之后,实际上就是将一个叫做的代码解释器的东东,放到了我们的MCU上。什么叫做代码解释器呢?通俗点讲,他就是包工头,根据客户需求,指挥大家来干活。有了它,之后的一切就会变得简单。我们的代码开发流程就会变为:代码编辑->运行。
是的,就是变得如此的简单,省去了耗时的代码编译以及代码烧写的过程。而且,MicroPython目前支持两种开发模式:
被称为REPL的交互式命令行:
这是一个类似于PC端Python命令行的东西,不同的地方在于,这个东西一般是通过串口进行通信的。我们可以随时输入代码并执行,就好像我们来到包工头的办公室,直接发号施令。一旦发现代码有误,可以立即更改。
将代码保存到文件系统,开机自动启动:
我们可以将代码保存到MicroPython的文件系统中。这就相当于,我们在包工头的办公室中事先制定好了工作流程图,包工头需要按照这个来进行任务的调度。MicroPython默认开机后先执行boot.py,随后开始执行main.py。
这样一来,有了MicroPython这一利器,我们无需因为代码的修改,而反复编译代码和烧写固件。
我们需要做的,只是确保代码逻辑,实现一键运行,这就大大提高了我们的开发效率,让开发过程更加灵活便捷。
这就是本次小编想要和大家分享的内容,在最后回答一下开头的问题,为什么我们需要MicroPython?因为它会使得我们的开发更加方便,高效。
期待更多人加入MicroPython的大家庭。
|
|