If you're talking about machine performances, the opposite, even for a dedicated dialect like micropython. The benefits are in safety, readability and ease of development.
I'm pretty curious because I'm pretty fluent in Python and I have been learning C++ for more lower level stuff mainly for speed reasons. I still program most of uC through C++ so I'm curious if I should learn micropython if it provides substantial benefits.
Python is a GC'd (reference-counted in CPython and probably µpython) and memory-safe language so it should be less prone to memory corruption, although it is more likely to open you up to resource exhaustion.
> In terms of safety, is there better memory allocation and hardware control through Python?
These are not what is usually understood by "safety" in programming.
> I would imagine micropython would be more inefficient
Definitely, the overhead of micropython would be substantial (even more so as it can't leverage compiler optimisations) so it's a tradeoff between hardware requirements and ease of development/time to market. IIRC micropython also supports only a relatively small subset of all embedded systems.
See http://docs.micropython.org/en/v1.8.6/pyboard/reference/spee..., http://docs.micropython.org/en/v1.8.6/pyboard/reference/cons...
> As for the ease of development, wouldn't C/++ be better?
Generally speaking python is more expressive and more readable than C++ code, which makes it easier to write (develop) Python. C++ is more finicky, thus harder to develop.
In many embedded and RTOS contexts, safety and allocation and hardware control are very difficult to distinguish.
> > As for the ease of development, wouldn't C/++ be better? > Generally speaking python is more expressive and more readable than C++ code, which makes it easier to write (develop) Python. C++ is more finicky, thus harder to develop.
C++ is a huge pain with loose type casting behavior (e.g. is this an long or does this expression convert it to an unsigned long?). But then again Python has very _loose_ descriptions of int and float types at all. For me that makes doing bit manipulation for talking to peripherals more opaque rather than less so.
Not at all. Python has unbounded-size integers and doubles. There's nothing loose about it.
No, but you can rapidly develop applications in Python and when performance becomes an issue, you just rewrite certain modules in C/C++/Rust/Go/etc.
There is a module called ctypes [0] in the Python standard lib that lets you import modules written in C.
... I'm just speculating. I know nothing about embedded systems
I wonder why everyone in this thread thinks that Cython works with CPython-incompatible implementations (like MicroPython or Zerynth)?