Ein Entwicklerhandbuch zu den Vor- und Nachteilen von Python

Python wird von der Python Software Foundation in Rechnung gestellt, da es überall leicht zu erlernen und auszuführen ist. Es ist nützlich für eine Reihe von Anwendungstypen, einschließlich Webentwicklung, wissenschaftliches Rechnen und Bildung. Google und Instagram gehörten zu den vielen Nutzern von Python, und die Sprache punktet in Beliebtheitsindizes gut.

Aber Python hatte seine Probleme mit Fragen zu seinen Leistungs- und Design-Macken. Um herauszufinden, was an Python richtig - und vielleicht auch nicht so richtig - ist, hat der Redakteur von Large Paul Krill Würdenträger in der Python-Community um ihre Beiträge gebeten.

Python-Profis

Lesen Sie es, verwenden Sie es mit Leichtigkeit. "Die Hauptmerkmale eines Python-Programms sind, dass es leicht zu lesen ist", sagt Pierre Carbonnelle, ein Python-Programmierer und Blogger, der den PyPL-Sprachindex ausführt. "Dies hat Vorteile für Sie und andere. Es hilft Ihnen, beim Schreiben von Programmen klarer zu denken, und es hilft den anderen, die Ihr Programm warten oder verbessern. In beiden Fällen erfordert das Schreiben eines Python-Programms weniger Aufwand als das Schreiben eines Programms in einer anderen Sprache wie C ++ oder Java. " Die Lesbarkeit von Python erleichtert die Open Source-Entwicklung, fügte Carbonnelle hinzu.

Python ist einfach zu bedienen und im akademischen Bereich äußerst beliebt. Dadurch entsteht ein großer Talentpool, sagt Sumit Chachra, CTO bei Tivix, einem auf Python / Django-Entwicklung spezialisierten Software-Beratungsunternehmen. Django und Python werden von Tivix in der Web- und Mobilentwicklung eingesetzt, sagt er.

Python ist eine sehr produktive Methode, um Code zu schreiben, sagt Stephen Deibel von Wingware, der die Wing Python-IDE erstellt. "Ein Teil davon beruht auf der einfachen Syntax und Lesbarkeit - es gibt praktisch kein 'Boilerplate'. Ein Teil davon stammt aus der reichhaltigen, gut gestalteten integrierten Bibliothek und Standardbibliothek und der Verfügbarkeit vieler Open Source-Systeme von Drittanbietern Bibliotheken und Module. " Der Code sei leichter zu verstehen und leichter zu pflegen, fügt er hinzu. 

Python, sagt Chachra, ist dynamisch typisiert und flexibel, mit Code, der weniger ausführlich ist. Als potenzielles Negativ nennt er jedoch die dynamische Typisierung (siehe unten).

Möglichkeiten des Internets der Dinge. Python könnte für das Internet der Dinge populär werden, da neue Plattformen wie Raspberry Pi darauf basieren, sagt Carbonnelle. In der Dokumentation von Raspberry Pi wird die Sprache als "wunderbare und leistungsstarke Programmiersprache, die einfach zu verwenden (leicht zu lesen und zu schreiben) ist und mit der Sie mit Raspberry Pi Ihr Projekt mit der realen Welt verbinden können" bezeichnet.

Vorteile der asynchronen Codierung. Python, sagt Deibel, "eignet sich hervorragend zum Schreiben von asynchronem Code, bei dem anstelle von Threading eine einzelne Ereignisschleife verwendet wird, um in kleinen Einheiten zu arbeiten." Dieser Code sei oft einfacher zu schreiben und zu warten, ohne Ressourcenkonflikte, Deadlocks usw. zu verwechseln. "Pythons Generatoren sind eine großartige Möglichkeit, das Ausführen vieler Verarbeitungsschleifen in diesem Ansatz zu verschachteln." 

Der Multiparadigm-Ansatz übertrifft Java. Pythons Programmieransatz ist nicht so eingeschränkt wie der von Java, sagt Carbonnelle. "Zum Beispiel müssen Sie keine OO-Klasse erstellen, um 'Hallo Welt' in Python zu drucken - Sie müssen in Java." Im Gegensatz zu Java ist Python ein Multiparadigma und unterstützt OO-, prozedurale und funktionale Programmierstile. (Java hat kürzlich Funktionsfunktionen in Java 8 hinzugefügt.)

"In Python ist alles ein Objekt", sagt Brian Curtin, Mitglied des Board of Directors der Python Software Foundation und Hauptverantwortlicher für CPython. "Es ist möglich, Anwendungen in Python mit verschiedenen Programmierparadigmen zu schreiben, aber es ermöglicht das Schreiben von sehr klarem und verständlichem objektorientiertem Code."

Pythons Nachteile

Geschwindigkeit kann ein Problem sein. "Da es sich um eine interpretierte Sprache handelt, ist sie oft um ein Vielfaches langsamer als kompilierte Sprachen", sagt Curtin. "Es geht jedoch wieder darum, die Sprache von der Laufzeit zu trennen. Bestimmte Benchmarks für Python-Code, die unter PyPy ausgeführt werden, werden schneller ausgeführt als der entsprechende C-Code oder andere."

"Ein möglicher Nachteil von Python ist seine langsame Ausführungsgeschwindigkeit", sagt Carbonnelle. Aber viele Python-Pakete wurden im Laufe der Jahre optimiert und mit C-Geschwindigkeit ausgeführt, sagt er.

Laut Chachra ist die Leistung "langsamer als bei älteren Sprachen wie C / C ++ und noch neueren wie Go."

Keine mobilen Computer und Browser. "Python ist auf vielen Server- und Desktop-Plattformen vorhanden, im mobilen Computing jedoch schwach. Mit Python werden nur sehr wenige Smartphone-Anwendungen entwickelt", sagt Carbonnelle. "Es wird auch selten auf der Clientseite einer Webanwendung gesehen."

Python ist nicht in Webbrowsern, bemerkt Deibel. "Das ist eine echte Schande. Es gibt Brython, aber ich denke nicht, dass es in der realen Welt verwendbar ist." Python ist schwer zu sichern und deshalb nicht in Browsern, fügt er hinzu. "Es gibt immer noch keine wirklich sichere sichere Sandbox / Gefängnis für Python, und ich denke, dass dies für CPython (die Standardimplementierung) grundsätzlich unmöglich ist. 

Designbeschränkungen. Python-Anhänger führten verschiedene Probleme beim Design der Sprache an. Da die Sprache dynamisch typisiert ist, sind weitere Tests erforderlich und es treten Fehler auf, die nur zur Laufzeit angezeigt werden, sagt Chachra.

Laut Deibel bedeutet die globale Interpreter-Sperre von Python, dass immer nur ein Thread gleichzeitig auf Python-Interna zugreifen kann. "Dies ist heutzutage möglicherweise weniger wichtig, da Sie mithilfe des Multiprozessor-Moduls so einfach Aufgaben erstellen können, um Prozesse zu trennen, oder stattdessen asynchronen Code schreiben können." 

Curtin sagt, dass es einige Konventionen bezüglich der Verwendung von Python gibt, aber signifikante Leerzeichen werden vom Interpreter erzwungen. "Die Struktur von Python-Programmen muss konsistent sein. Wenn also Klammern oder andere Bezeichner dem Benutzer mehr Freiheit in anderen Sprachen ermöglichen, ist die Einrückung wichtig, wenn es um Python geht."