Wie ich von C ++ zu Python gekommen bin: eine konzeptionelle Änderung

Einführung

Die Leute sagen, dass das Codieren in Python so einfach ist, dass selbst ein Sechsjähriger es kann. Dies war der Gedanke, an den ich dachte, als ich anfing, in Python bei der Arbeit zu programmieren. Zu dieser Zeit war ich 4 Jahre lang Vollzeit-Softwareentwickler und schrieb hauptsächlich in C ++ unter Linux, wobei ich die QT-Bibliothek stark nutzte. Allerdings habe ich zuerst schlechten Python-Code geschrieben.

Es ist ungefähr 3 Jahre her, seit ich diesen Wechsel vorgenommen habe und ich denke, dass es ein guter Punkt ist, die Fortschritte zusammenzufassen, die ich in dieser Zeit gemacht habe. Rückblickend habe ich nicht nur meine Hauptprogrammiersprache geändert, sondern auch meine Arbeitsumgebung und die Art und Weise, wie ich über Code denke.

Ich werde nicht auf die Details und Unterschiede zwischen C ++ und Python eingehen, da zahlreiche Ressourcen online sind, sondern meine eigenen Erfahrungen beschreiben. Ich hoffe, dass dieser Beitrag für Leute nützlich ist, die denselben Übergang durchlaufen wie ich.

C ++ taucht, Python schnorchelt

C ++ fühlt sich an, als würde man in die magischen Geheimnisse des Meeres eintauchen - es ist wunderschön, erfordert aber mehr Lernen und Übung, und insgesamt ist die Entfernung, die Sie zurücklegen, nicht so groß. Python ist ein bisschen wie Schnorcheln - Sie sehen die Schönheit, sobald Sie Ihren Kopf ins Wasser stecken, aber Sie gehen nicht viel weiter nach unten. Sie schwimmen weiter in seichten Gewässern und können problemlos eine lange Strecke zurücklegen. Aus dieser Beschreibung geht hervor, dass jede dieser Sprachen am richtigen Ort und zur richtigen Zeit verwendet werden sollte.

In C ++ eintauchen und es überleben

C ++ ist strenger und bestraft Sie härter für Ihre Fehler. Es ist keine effektive Codierungssitzung, wenn Sie nicht mindestens einmal einen überraschenden Segmentierungsfehler erhalten haben . Daher ist ein tieferes Verständnis des Computers, des Compilers und der Sprache erforderlich. Wenn Sie tiefer gehen, können Sie schöne Dinge wie den Kompilierungsprozess und die Speicherverwaltung wirklich sehen und beeindrucken.

Als C ++ - Programmierer kümmerte ich mich mehr um Syntaxverbesserungen und seltsame Beispiele. Ich wusste immer, wo ich Speicher zugewiesen habe und wie ich ihn freigegeben habe. Die Programme, die ich geschrieben habe, waren eigenständiger, da ich lieber wissen wollte, was in meinem Code vor sich ging. Die Hauptidee war, dass Code, den jemand anderes geschrieben hat, weniger zuverlässig und fehleranfälliger ist und Ihre Speichernutzung in die Luft jagen kann.

Meine wichtigsten alltäglichen Tools waren Vim mit zahlreichen Plugins zum Schreiben von Code, GDB zum Debuggen und Valgrind zum Analysieren meiner Speichernutzung und Fehler. Ich habe mit g ++ kompiliert und meine eigenen Makefiles geschrieben . Damals hatte ich nicht das Gefühl, dass eine IDE mir zugute kommen würde, sondern dass ich die Dinge verlangsamen und den Kontakt zu meinem Code verlieren würde. Rückblickend habe ich mich stark auf den Compiler verlassen, um meine Typfehler zu finden .

Flaches Schwimmen in Python

Eines der ersten Dinge, die Sie lernen müssen, wenn Sie zu Python wechseln, ist das Loslassen - Sie wissen nicht, was unter der Haube passiert, wo Speicher zugewiesen und freigegeben wird, und es ist in Ordnung. Es wird auch empfohlen, Code zu verwenden, der von anderen geschrieben und in Bibliotheken verpackt wurde, da dies Zeit spart und Ihnen hilft, schneller zu codieren. Es bedeutet nicht, dass Sie Code schreiben müssen, der hundeschwach ist und auf nicht gewarteten und nicht funktionierenden Bibliotheken basiert, aber der Fokus ist definitiv anders.

Als ich anfing, in Python zu programmieren, schrieb ich zuerst C ++ - Code in Python. Es hat funktioniert, aber ich habe keinen Nutzen aus der Sprache gezogen. Meine Codierung verbesserte sich, als ich anfing, „pythonischer“ zu schreiben und Bibliotheken und fortgeschrittenere Konzepte wie Generatoren, Dekorateure und Kontexte zu verwenden.

Als Python-Entwickler suche ich in der Regel zuerst nach der Bibliothek, die das Problem löst. Python verfügt über ein reichhaltiges Bibliotheksökosystem und eine Community, die es unterstützt. Es gibt Bibliotheken, in denen praktisch alles möglich ist. Hier sind einige nützliche, die ich täglich verwende: NumPy für numerische Berechnungen, OpenCV für Computer Vision, JSON zum Lesen von JSON-Dateien, SciPyfür wissenschaftliche Berechnungen sqlite3 für Datenbanken.

Mein alltägliches Tool ist PyCharm (ja, eine IDE) mit dem IdeaVim- Plugin. Ich habe damit angefangen, hauptsächlich weil es ein leistungsstarker Debugger ist, der viel freundlicher ist als der Standard-Python-Debugger pdb . Ich benutze pip auch zum Installieren von Bibliotheken, die ich brauche. Ich überwache meine Speichernutzung nicht mehr, es sei denn, ich muss es wirklich.

Einige praktische Tipps

Wenn Sie ein C ++ - Entwickler sind und überlegen, mit dem Codieren in Python zu beginnen, sind hier meine Ratschläge für Sie:

  • Alte Gewohnheiten loswerden - Verwenden Sie den C ++ - Compiler nicht mehr als Debugger. Optimieren Sie die Speichernutzung nicht zu stark. Vermeiden Sie das Schreiben von C ++ - ähnlichem Code. Und versuchen Sie auf jeden Fall, sich nicht auf Typen zu verlassen.
  • Neue Gewohnheiten entwickeln - Verwenden Sie Bibliotheken. Schreiben Sie Pythonic-Code (aber übertreiben Sie es nicht). Halten Sie die Dinge lesbar. Verwenden Sie komplexere Konzepte wie Generatoren / Dekoratoren / Kontexte. Probieren Sie PyCharm aus.
  • Gemeinsame C ++ - und Python-Bibliotheken verwenden - Einige C ++ - Bibliotheken wie OpenCV und QT verfügen über eine Python-Schnittstelle. Es ist einfach, dieselbe Bibliothek in Python zu verwenden, anstatt eine neue Bibliothek von Grund auf neu zu lernen.
  • Vergessen Sie nicht Ihre Herkunft - Manchmal ist Python einfach zu langsam oder nicht optimal für die Aufgabe. Dies ist der Zeitpunkt, an dem Ihr C ++ - Wissen einsetzt. Es gibt viele Möglichkeiten ( SIP , ctypes usw.), C ++ - Code in Python zu verwenden.

Endeffekt

Unabhängig davon, was andere sagen, ist es nicht einfach, zu einer anderen Programmiersprache zu wechseln, insbesondere zu einer Sprache, die sich grundlegend von der gewohnten unterscheidet. Nehmen Sie sich Zeit zum Lernen, zum Eingraben, zum Entdecken. Vor allem aber sollten Sie verstehen, dass sich nicht nur die Sprache ändern sollte, sondern auch Ihr Codierungsstil und Ihre Arbeitsmethodik.

Viel Glück!