[讨论] circuitpython和micropython有矛盾?

sunhaoqin1   2020-3-9 11:46 楼主

进论坛看了这篇文章:

https://mbb.eet-china.com/forum/topic/71709_1_1.html

虽然表面上还是很客气的,但是感觉到了字里行间明显的火药味,不管是George的忧虑,还是两者的分歧,都看到了circuitpython的野心。

image.png         之前也用过一段时间的micropython,感觉作者相对还是比较佛系的,新的功能以及库更新的比较慢,以至于有一个叫loboris看不下去,fork了一个分支来添加更多的支持。

        circuitpython的话也是最近来了论坛才知道的。adafruit这家公司我一直很喜欢,因为比起其他妖艳贱货开发板,它更注重内容的创作以及底层库的支持。所以遗传了这种风格,又加上商业的驱动,估计就看不惯micropython,自立门户搞出了circuitpython。

        虽然adafruit的做法无可厚非,毕竟商业驱动,而且更多的库对开发者来说也是好事,但是还心中总是有那么一点鸠占鹊巢的感觉。micropython要更努力啊!

 

另外我觉得有两个很有意思的现象:

1,circuitpython目前并不支持esp32,adafruit似乎更偏好ATMEL这家公司。

2,adafruit似乎想去arduino化,不管是从硬件feather上看,还是从开发环境circuitpython上看。

 

 

回复评论 (12)

只要协议允许,或者理念允许,fork是很正常的啊。当年Linus就是diss Tanenbaum的minix,fork了big kernal的unix成就了今天的linux。最近微软fork chrome搞自己的edge,据说比chrome还好。再说,CircuitPython也没说直接fork的MicroPython啊,哪来鸠占鹊巢一说。
点赞  2020-3-9 23:44
引用: freebsder 发表于 2020-3-9 23:44 只要协议允许,或者理念允许,fork是很正常的啊。当年Linus就是diss Tanenbaum的minix,fork了big kernal的 ...

是的,不管从法律还是道义上一点问题都没有。不过git上确实直接说是fork的micropython

点赞  2020-3-10 08:36

adafruit公司在arduino上深入发展了多年,拥有众多的用户、硬件、软件积累,在国外创客和交友圈中有很大的影响,但是也很早就遇到arduino的瓶颈,转向micropython是很正常的事情。用arduino做编程学习、搞搞创意小制作是不错,有非常多的demo可以参考,仿制起来很容易。如果做一些比较复杂的编程就不够方便,毕竟arduino缺少了开发需要的一些重要功能,比如调试器,只能通过反复下载验证和用串口打印进行调试,小程序还凑合,大程序就困难了。

 

而micropython正好可以弥补arduino的很多缺陷,使用python语言编程,功能更强,调试方便,速度上到不一定比用C语言快多少,但是易用性比arduino好多了。再加上现在对js、python工程师的需求是大于C工程师的,因此给了micropython/circuitpython一个很好的机会。其实国内不少公司已经在产品中使用micropython,但是宣传不多,而且是和以前使用arduio一样,只侧重于制造硬件,没有在软件、生态方面有计划,也谈不上什么贡献。

 

 

 

点赞  2020-3-10 12:33

micropython和circuitpython目前还谈不上什么矛盾,最多就是像楼主说的分歧,两者的侧重点是不同的。adafruit更侧重创客和教育方面,micropython更侧重工业方面。micropython更接近传统开发,而circuitpython更像arduino。虽说micropython和circuitpython都是开源的,但两者都有自己的商业公司,有自己的产品和推广计划,也都做的不错。

 

早期从micropython上fork时,circuitpython中包含了ESP8266/ESP32,现在移除了。可能是因为在arduino上深耕多年的缘故,adafruit将circuitpython的重点放在了atmel和nordic硬件平台上,虽然从整个arm市场看,STM32性价比更好,生态更完善。但是对于python应用,本来就需要更好的硬件,因此成本也不是第一考虑的问题,何况现在很多企业在开发阶段中,开发成本是远超硬件成本的,也不在意芯片贵一点,等有那么大的量在考虑这个问题。

 

点赞  2020-3-10 12:43

现在adafruit和微软合作更多,除了大力发展circuitpython,同时也在makecode上做了很多事情,很多开发板可以同时支持circuitpython和makecode,这是一个优势。

 

在易用性方面,circuitpython有更多的库。不过micropython的定制化特性更好,对工程师的支持更多一些。可能与核心开发团队的习惯有关,circuitpython在一些细节的处理也没有micropython好。

 

现在最大问题可能是兼容性,虽然是基于micropython的,但是circuitpython的程序已经在很多用法上和micropython不同,驱动库也不能直接用于micropython,两者的差异以后可能还会越来越大。

 

点赞  2020-3-10 12:50
引用: dcexpert 发表于 2020-3-10 12:50 现在adafruit和微软合作更多,除了大力发展circuitpython,同时也在makecode上做了很多事情,很多开发板可 ...

哇,谢谢版主大人的认真回复!真的是解答了我很多的疑问,尤其是arduino那一段。我一直觉得micropython和arduino一样都是玩具而已。

去年开始用了一段时间micropython,后来到现在一直还没用过,当时最诟病的一点是ide不好用,每次一个脚本要放进去就很麻烦。

关于circuitpython和micropython的分裂真的是很遗憾,作为用户肯定是希望能一个平台兼容的。从cpu的选择上看,esp32真的是我很喜欢的一款芯片,支持arduino和micropython,大量的库都支持。前段时间还看到grbl都被移植到esp32上去了。根据adafruit一贯的执行力,circuitpython肯定会真香,不过我不想切平台啊。。。。

最后我看了一下circuitpython的扩展库,很多都是用py写的,为啥不用c写,不是更好么?

 

点赞  2020-3-10 18:26
dcexpert 发表于 2020-3-10 12:50 现在adafruit和微软合作更多,除了大力发展circuitpython,同时也在makecode上做了很多事情,很多开发板可 ...

makecode也是一个很有意思的东西,但是还不太明白它的原理。我看每拖动一个模块就自动生成一段python脚本,所以只是一个图形化-->micropython的解释器吗?然后底下再由micropython执行?还是说它能绕过python和c自己就直接编译了hex?

点赞  2020-3-10 18:30
引用: sunhaoqin1 发表于 2020-3-10 18:26 哇,谢谢版主大人的认真回复!真的是解答了我很多的疑问,尤其是arduino那一段。我一直觉得micropython和 ...

从推广看circuitpython做的不错,但从社区反应看,目前micropython还是更受欢迎,也更符合开发者的习惯。对于开发者而言,没有必要去争论哪个语言更好,就像很多年前C++之争,都只是工具,就看哪个顺手而已。

 

虽说C语言是高级编程语言,但是现在与硬件无关的纯C库很少,大量C语言的程序和芯片绑定,造成移植困难。对于一些不需要特别高效的情况,使用py做库可以保证有更好的移植性和可维护性。

点赞  2020-3-10 21:39
引用: sunhaoqin1 发表于 2020-3-10 18:30 dcexpert 发表于 2020-3-10 12:50 现在adafruit和微软合作更多,除了大力发展circuitpython,同时也在mak ...

makecode是微软在编程教育做的一个尝试,虽然投入的人力和成本并不多,但是反响还不错,受到很多人的喜爱,它也是一个开源项目。

 

它的主要优点是使用简单,界面友好,速度快,跨平台,还带有一个不错的模拟器。makecode目前集图形化编程、js编程、python一体,可以在它们之间灵活的切换,可以帮助初学者通过简单的图形化编程,逐步深入到代码编程。

 

makecode底层是以C,用C实现了js虚拟机。js是微软自己的typescript,图形化是一个外壳,将主要和常用的功能通过block方式使用,让编程变得更容易和有乐趣。makecode还支持webusb功能,只需要一个浏览器就可以实现编程、软件仿真、程序差分下载等功能,最大程度的降低了使用难度。

 

比较可惜的是,makecode目前还不支持repl方式,每次都需要将js或python重新打包才能运行。

 

 

点赞  2020-3-10 21:51

python写的多数代码都是相同的,除非里面用大量的所谓“骚”语法:)

先声明我是新新手,有时候micropython的程序不会写,也会参考circuitpython的实现。

还有楼主说扔脚本进去运行,我觉得楼主还得再深入了解下这个体系,要善用REPL呀,要学会类命令行的工作方式

点赞  2020-3-13 13:11

Circuitpython 不支持 ESP32 是因为 ESP32 没有原生的 USB 吧,现在已经支持 ESP32-S2(支持 USB 1.1 OTG)。

点赞  2020-8-24 15:34
引用: qljz 发表于 2020-8-24 15:34 Circuitpython 不支持 ESP32 是因为 ESP32 没有原生的 USB 吧,现在已经支持 ESP32-S2(支持 USB 1.1 ...

Circuitpython现在已经支持esp32-s2的USB了,基本功能都可以使用,包括模拟键盘鼠标。其它功能还待完善。

点赞  2020-8-24 21:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复