到目前为止,鸿蒙设备开发的“官方指定语言”仍是C语言!python
这看起来是一件正常的事,毕竟鸿蒙设备开发仍是属于嵌入式开发的范畴,而在嵌入式开发中C语言又是当之无愧的首选,因此,你们也都接受了这个现实。。。。。。。编程
上周末,有幸能和华为的大佬们进行面对面交流(其实我是去抱大腿的),咱们都一致认为:若是设备开发能支持更简洁的开发方式(如:简单的语言,简单的开发环境),相信会有更多的开发者加入。。。架构
那么如今,有没有一种语言,受众面很广又简单易学呢?工具
固然是有的,相信你已经知道了,就是 Python ! post
这几年 Python 借助 AI 的兴起而进入大众视野,她的简单易学深受欢迎,不少小学生都可以用她来编程了。学习
因此,一个看起来很疯狂的想法从我大脑蹦了出来:若是鸿蒙设备开发能够用 Python ,那么确定能下降学习门槛,吸引更多的开发者。。。ui
因而,说干就干。。。操作系统
我先调研了目前的各类Python实现(Python是开源的,能够经过源码了解实现),发现公版 Python 和 MicroPython 均可以是个人起点(baseline),毕竟我没有必要照着 Python 规范写一个解释器出来!然而,困难仍是有的,这两种实现都有很是多的依赖,并且设计目标又分别不一样:公版 Python 是一个大而全的系统(解释器,库,等等),目标是只要资源丰富爱怎么玩就怎么玩;MicroPython 从公版 Python 剪裁而来,并作了扩展,基本定义成了一个微型嵌入式设备上的操做系统。设计
那么,怎么开始呢,作选择真的很难啊!!!!3d
我开始整理思路,我想干什么?!以后有了下面的架构图。 很显然,我想的是提供鸿蒙设备开发的其它方式,而不是用 Python 替换 C 语言!因此,个人第一个里程碑(milestone)是得到一个能够在鸿蒙设备(Hi3861)上运行的 Python 解释器!有了这个 Python 解释器,接下来就是设计 Python 版的鸿蒙系统开发接口了。。。
肯定了目标以后,接下来的问题就是:到底是用公版 Python 开刀仍是用 MicroPython 开刀?
经过二者代码的对比阅读,我发现 MicroPython 竟然在解释器部分对公版 Python 也作了剪裁。。。这,为何啊??? 我暂时也没有确切答案,不过从代码实现能够看出 MicroPython 是为了适配更多低配置的硬件而作了取舍!那显然,不少东西人家都考虑过了!我想着目前鸿蒙设备的定位也是低配硬件,那么用 MicroPython 开刀看起来更合适。
=========== 华丽的分割线 Begin ===========
经过 2 天的手术的改造,可以运行的版本(DTPython)就有了!!
使用方式以下:
- 下载文末附件中的 libdtpython.a,并将其拷贝到 \code-1.0\vendor\hisi\hi3861\hi3861\build\libs 目录下,如图:
- 【可选】编写 Python 代码(目前未提供任何库支持),并使用文末附件中的 Txt2Str 工具将其转换为 C 字符串,用法以下:
说明:
Txt2Str 将 Python 代码用 C 字符串的形式存储到 C 文件中(如上图中的 test.c) 将转换获得的 C 文件加入工程中便可在 C 代码中使用 Python 代码(可参考文末附件中的示例)
注意:目前尚未简单的方法直接将 Python 源文件烧写到设备中,所以才须要上述步骤。
-
在设备开发中使用 Python 代码,示例以下:
-
运行结果以下:
=========== 华丽的分割线 End ===========
后记:
目前仅仅可以运行基本的 Python 代码,大几率还存在不少须要解决的问题。
但愿你们都来试玩个人这个方案,多找Bug,多提Issue。
现阶段的代码乱一坨,实在很差意思拿出来丢人现眼,基本功能稍微稳定些,直接开源!!!
Enjoy It !
做者:唐佐林
想了解更多内容,请访问: 51CTO和华为官方战略合做共建的鸿蒙技术社区 https://harmonyos.51cto.com