Entdecken Sie die Vorteile von MicroPython

Auch wenn Python für allgemeine Zwecke eine sehr nützliche Programmiersprache sein kann, gibt es einige Bereiche, in denen sie ganz bestimmt nicht die erste Wahl ist. Wenn Sie zu Beispiel komplexe Spiele entwickeln möchten, würden Sie doch wohl eher C++ bevorzugen. Auch in der Welt der Embedded-Software dominiert C.

MicroPython ist auf den “Embedded-Markt” ausgerichtet; die Sprache eignet sich für Micro-Controller und integrierte Systeme. Als solche ist sie eine ziemlich gute Implementierung von Python 3.4, die zwar nicht ganz vollständig, aber durchaus nutzbar ist. Zugelassen ist sie unter der liberalen MIT-Lizenz: Sie können sie also benutzen, wie Sie möchten! Schauen wir uns das mal genauer an.

Und es geht los!

Ich habe keine Micro-Controller-Boards. Daher war ich eher daran interessiert, MicroPython an Ubuntu 17 auszuprobieren. Da sich die Anwendung noch in Beta befindet, ist es am einfachsten, wenn man anfangs den Wiki-Anleitungen folgt. Dies bedeutet, dass man vier Bibliotheken installieren muss, die Repository schließt, und dann „make“ laufen lässt. (Zeitlich kann man da so um die 10 Minuten einrechnen, um alles zu holen, und noch ein paar Minuten mehr, um es aufzubauen.)

Nachdem Sie alles aufgebaut haben, stellen Sie sicher, dass Sie alle Tests mit “make test” durchlaufen lassen. Als ich das gemacht habe, wurden so um die 624 Tests mit 18.501 individuellen Test-Cases übersprungen; das kann durchaus damit zusammenhängen, dass ich Ubuntu unter Hyper-V auf meiner Windows-Box laufen habe. Sie können alle Source-Files von Python für die Tests in dem Tests-Ordner ansehen; dies ist zum Beispiel der ganzzahlige „devide-by-zero“-Test:

try:
    1 / 0
except ZeroDivisionError:
    print("ZeroDivisionError")

try:
    0 ** -1
except ZeroDivisionError:
    print("ZeroDivisionError")

 

Große Unterschiede

GitHub bietet eine Seite, die alle Unterschiede zwischen MicroPython und Cpython 3 (die Standard-Umsetzung von Python 3) aufführt. Um den Speicher zu verwalten, benutzt es zum Beispiel Garbage-Counting anstatt Reference-Counting; Introspektion/Reflektion werden minimal unterstützt. Viele dieser Unterschiede helfen dabei, den Fußabdruck gering zu halten und es fürs „Embedding“ nutzbar zu machen.

MicroPython wird vorsätzlich mit einem kleinen Teilsatz an Paketen geliefert. Dennoch wurden viele Kern-Python-Bibliotheken portiert, die in der GitHub MicroPython-lib erhältlich sind. Diese sind auch mit dem Präfix MicroPython auf PyPI (Python Package Index) verfügbar, und Sie können sie auf PyPi finden.

Zusätzlich gibt es upip: Eine Vorrichtung die mit Python pip vergleichbar ist, um MicroPython-Pakete zu installieren. Sie ist mit der UNIX-Version erhältlich; der unten aufgeführte Befehl holt die „pystone benchmark utility“:

./micropython -m upip install micropython-pystone

Ich ließ es vom REPL laufen (interaktive Eingabeaufforderung) die Sie bekommen, wenn Sie MicroPython laufen lassen:

./micropython
MicroPython v1.9.1-193-g653a0c2d on 2017-07-26; linux version
Use Ctrl-D to exit, Ctrl-E for paste mode
>>> import pystone
>>> pystone.main()
Pystone(1.2) time for 50000 passes = 0.381
This machine benchmarks at 131234 pystones/second
Python Vs. C

C wurde als portable Assembly-Sprache kreiert und ist echt handfest! Damit Python auf Hardware zugreifen kann, gibt es das zur Verfügung gestellte stm-Modul, das Sie dazu befähigt, auf Register zuzugreifen und diese zu ändern; dies gilt auch für die GPIOA Peripherie (auf dem pyboard – dazu später mehr).

Als Sprache ist C im Vergleich zu Python ziemlich abgespeckt; Letztere bietet Nachschlagewerke, Listen und weitere High-Leven Datenstrukturen. Bei C müssen Sie, basierend auf Hinweise, Ihre eigenen erstellen. Dies kann sich durchaus als trickreich erweisen und ist sehr anfällig für Abstürze (oder Sie können eine Dritt-Partei-Bibliothek nutzen). C ist klasse, wenn man auf einem niedrigen Level programmiert, wird aber in höheren Leveln kompliziert. Und genau hier kommt Python ins Spiel. MicroPython – das einen kompletten Inline-Assembler hat, falls Sie tiefer runtergehen müssen als C – fügt noch mehr Funktionalität hinzu. (Denken Sie daran: MicroPython ist in C geschrieben und Sie haben von MicroPython Zugriff auf C-Bibliotheken.)

Es gibt keine allgemein beste Sprache; jede hat ihre Stärken und Schwächen. Ich habe schon mit einem Schraubenzieher einen Nagel in die Wand gehauen und auch schon Schrauben mit einem Hammer entfernt – beides hat nicht sonderlich gut funktioniert! Angesichts dessen, lassen Sie uns einen letzten Punkt ansprechen:

Pyboard

Zusätzlich zu der MicroPython-Sprache gibt es Development-Kits, die den pyboard-Standard unterstützen. Es gibt ein ARM MicroPython pyboard, ein AdaFruit und anderes, die kostenmäßig zwischen 13,- USD bis 130,- USD liegen. (Diese Übersichtsseite listet 28 verschiedene Boards auf).

Die Dokumentation bezieht sich auf das Programmieren des Boards und bietet ein Tutorial für die ersten Schritte.

Fazit

Warum ich der Meinung bin, dass Sie MicroPython in Betracht ziehen sollten? Das Internet der Dinge wird nicht verschwinden und Python optimiert Embedded-Entwicklungen. Dies hat wiederum zur Folge, dass Produkte schneller auf den Markt kommen. Ich bin mir ziemlich sicher, dass es mehr Python-Entwickler als C-Entwickler gibt. Dies basiert auf Pythons Mainstream-Popularität (auch wenn es in Sachen Ausführungsgeschwindigkeit nicht mit C-Programmen mithalten kann). Falls Sie also an der nächsten Generation von Geräten mitwirken möchten, ist diese Anwendung auf alle Fälle einen Blick wert.

Weitere Artikel

 

Ein Blick auf PyPy – die schnellere Python-Alternative

 

reBuy and the transformation of used goods into code

 

Nach diesen IT-Skills in Ihrem CV suchen Arbeitgeber

 

About David Bolton

David Bolton begann schon mit dem Programmieren, als er noch zur Schule ging und bevor es überhaupt PCs gab. Es gefiel ihm so sehr, dass er seinen Abschluss in Informatik machte. Er beschäftigt sich seit fast 35 Jahren mit dem Thema Programmieren – sowohl arbeitsbedingt als auch in seiner Freizeit. In dieser Zeit arbeitete er für Price Waterhouse, British Aerospace, MicroProse (wo Sid Maier Civilization kreiert hat), in einer gescheiterten Dotcom (HomeDirectory.com) und bei Morgan Stanley. Mehr als acht Jahre lange programmierte er Spiele, mehr als 12 Jahre Finanz-Software in London. Sein Leben beschreibt er als eine permanente Lernkurve. Er verfügt über umfangreiche Programmiererfahrung in 6502,Z80 und 68000 Assembler, Basic, Pascal, C, C++, C#, Java, PHP, SQL, Fortran, JavaScript und lernt zurzeit R. Außerdem entwickelt er heute mobile Apps in Xamarin (C#) und schreibt für Dice. Er lebt in New York (in Lincolnshire, England, nicht in den USA).
No comments yet.

Leave a Reply