Wo liegen die Grenzen von Python?

7

Ich habe ein paar Tage über C ++ und Python gelesen und festgestellt, dass Python so viel einfacher und einfacher zu erlernen ist.

Ich frage mich, ob es sich wirklich lohnt, es zu lernen? Oder sollte ich stattdessen C ++ lernen?

Was kann C ++ und Python nicht?

    
taabouzeid 24.11.2009, 19:26
quelle

9 Antworten

36

Einige Python-Grenzen:

- Python ist langsam. Es kann auf viele Arten verbessert werden (siehe andere Antworten), aber der bare bone cPython ist 100 mal langsamer als C / C ++.

Dieses Problem wird immer mehr gemildert. Mit Numpy, Pypy und asyncio sind die meisten Leistungsprobleme nicht abgedeckt, und nur sehr spezifische Anwendungsfälle sind in Python ein Engpass.

- Python ist für alles geöffnet. Es ist wirklich schwierig, Python-Code zu schützen / zu verschleiern / einzuschränken.

- Python ist kein Hype. Im Gegensatz zu Ruby gibt es bei Python keine "coole Welle" und es ist immer noch viel schwieriger, einen erfahrenen Python-Coder zu finden, als beispielsweise ein Java oder ein PHP pro.

- Nach der Verwendung von Python scheinen viele Sprachen ein Schmerz zu sein. Sie würden denken, dass es gut ist, aber glauben Sie mir, nicht immer. Wenn du nach einem Python-Projekt Javascript laufen musst, sind deine Augen für mindestens 3 Tage in Tränen aufgelöst. Wirklich schwer zu beginnen.

- Es ist schwieriger, Webhosting zu finden als für gängige Lösungen wie PHP.

- Als dynamische Sprache verfügen Sie nicht über die sehr praktischen Refactoring-Tools , die Sie mit Java und Eclipse oder C # und VS erhalten könnten.

- Aus dem gleichen Grund können Sie sich nicht auf die Typprüfung als Sicherheitsnetz verlassen. Aus diesem Grund neigen pythonistas dazu, Best Practices zu befolgen und Komponententests öfter als andere zu schreiben.

- Ich finde, ich kann einfach keine IDE mit einer ordentlichen Code-Vervollständigung finden . PyDev, Gedit, Komodo, SPE usw. machen es einfach nicht so gut wie es sein könnte.

Mit Python 3 Typen Tipps und Tools wie PyCharm oder Sublime Text + Anaconda hat sich die Situation sehr verändert.

- Die besten Dokumente sind immer noch nur auf Englisch verfügbar. Manche Leute gehen nicht gut damit um.

- Sie müssen sich an die Syntax gewöhnen. Sie erhalten nicht nur Leerzeichen und Zeilenumbrüche statt Klammern, sondern Sie können lange lambdas, -i und ternäre Operationen vergessen. p>

Nun, für mich sind das keine Gründe, kein Werkzeug zu lernen, mit dem Sie mehr produzieren und mehr Spaß haben. Aber vielleicht bin ich es nur: -)

Ehrlich gesagt, angesichts dessen:

  • C ++ ist viel schwieriger zu lernen;
  • Sie können mit Python so ziemlich alles machen, was Sie wollen;
  • Sie werden schneller Ergebnisse mit Python in Ihren Projekten bekommen.

Wenn Sie keine professionellen Probleme mit C ++ haben, sollten Sie Python zuerst lernen, es ist motivierender. Sie können C ++ später noch lernen, es ist eine nützliche Sprache für Systemprogrammierung, eingebettete Geräte und so weiter.

Versuchen Sie nicht, beide gleichzeitig zu lernen, Multitasking endet selten gut.

    
e-satis 24.11.2009, 23:45
quelle
30

Hier ist, warum es sich lohnt, Python zu lernen:

Eine vergleichsweise kleine Anzahl von Problemen wird durch die Geschwindigkeit des Algorithmus eingeschränkt. Eine vergleichsweise große Anzahl von Problemen wird durch die Geschwindigkeit des Entwicklers begrenzt.

    
Robert Rossney 25.11.2009 04:10
quelle
9

Warum stellst du nicht die umgekehrte Frage? Im Gegensatz zu C ++ kann Python Ihnen Antigravitation geben und Seelen über seinen Befehl import . Auf der anderen Seite, C ++ 'Äquivalent' - #include - ermöglicht nur Ihnen, einige langweilige I / O und Math-Bibliotheken zu bekommen.

Ernsthaft, aber ... C ++ erlaubt es Ihnen, mehr Low-Level-Sachen zu machen, z. Kernel-Programmierung und ermöglicht es Ihnen, Programme zu schreiben, die viel schneller laufen ( ungefähr ~ 20x). Sie können damit echte Threads erstellen, die Prozessoren mit mehreren Kernen nutzen können, während Python ( aufgrund seines Designs ) kann seine simulierten Threads in der Regel nur auf einem einzigen Kern ausführen.

IMHO sollten Sie beide lernen; Python für Web-Entwicklung und schnell-und-schmutzig-Skripte, C ++, um Systemcode, Desktop-Anwendungen zu schreiben, sowie ein besseres Verständnis des Computers auf niedriger Ebene zu haben. Wenn Sie gerade anfangen, dann Python; es ist viel einfacher, damit zu beginnen.

Weitere konkrete Messungen zur Geschwindigkeitsdifferenz finden Sie unter hier.

Bearbeiten: Scheint so, als ob meine Informationen zu Multithreading veraltet sind; Siehe John Pauletts Kommentar.

    
int3 24.11.2009 19:32
quelle
4

Sie werden im Allgemeinen nicht für die gleichen Dinge verwendet. Python ist sehr nützlich für das Prototyping, da es so einfach ist, aber es ist nicht immer die beste Wahl, wenn Geschwindigkeit ein wichtiger Faktor ist, da es eine interpretierte Sprache ist. C ++ kann stark optimiert werden, aber wie Sie sagten, könnte es viel schwieriger sein zu schreiben und zu verstehen.

Wenn Sie Systeme oder Anwendungen programmieren möchten, sollten Sie C ++ lernen. Wenn Sie für Spaß und Freizeit programmieren oder Probleme wie in Ссылка lösen, dann ist Python auch eine gute Wahl.

Ich persönlich empfehle Ihnen auch, zuerst C / C ++ zu lernen, wenn Sie sich ernsthaft mit dem Programmieren beschäftigen wollen, weil es Ihnen das wichtige Konzept der Speicherverwaltung lehrt, das in verwalteten Sprachen übersehen werden könnte.

    
StrixVaria 24.11.2009 19:30
quelle
3

wenn Sie herausfinden wollen, ob Sie noch beschäftigt werden Zeit später mit C ++ oder Python, kümmern Sie sich nicht um die Langlebigkeit einer einzelnen Sprache. Lernen Sie zu programmieren. Lerne nicht, in <insert a language here>.

zu programmieren

Hier ist eine Analogie: Wenn Ihr Auto gut läuft (bringt Sie dahin, wo Sie sind gehen, hat gute Laufleistung, günstig zu pflegen, relativ sicher), gibt es kein logischer Grund, es gegen einen anderen einzutauschen. Keiner. Was auch immer. Fahre es auf den Boden, bevor du überhaupt darüber nachdenkst, was für ein Model oder ein Model du hast komm als nächstes. Aber wenn du dich schon umsiehst und denkst, welches Auto du hast geh, hol es einfach, hör auf, alle zu fragen, ob du es solltest TU es. Wenn Sie fragen müssen, müssen Sie es ändern. Es ist so einfach wie Das.

    
vehomzzz 24.11.2009 19:31
quelle
1

Nach dem, was mir gesagt wurde, lernt 1% C ++ zu lernen C. 1% lernt die zusätzlichen Grundfunktionen. 98% lernen, die Funktionen in einer sicheren, wartbaren Weise zu nutzen und mit den dunklen Ecken der Sprache fertig zu werden.

Learning Python wird Ihnen beibringen, Code zu schreiben, der sicher und wartbar ist. Ich denke, wenn Sie Python lernen, dann gehen Sie zurück zu C ++, dann können Sie guten C ++ Code schreiben. Das bedeutet natürlich nicht, dass Sie schlechtes C ++ oder C ++ - Code verstehen, der auf nicht-pythische Weise geschrieben wurde.

Grenzen für Python?

  • Es wird interpretiert, also müssen Sie die Quelle und den Dolmetscher versenden; und Prozesse werden viel länger dauern, um zu starten.
  • Es ist nicht C ++, also wird es nicht mit existierendem C ++ Code spielen.
  • Es ist ein bisschen langsamer (auch wenn Sie die heißen Schleifen in C einpacken). *
  • Es ermutigt dich, "pythisch" zu sein, und einige Probleme sind leichter, wenn du nicht "pythonisch" bist.

* Python könnte schneller sein:

  • Automatischer GC. C ++ ist nur schneller, wenn es nicht zu viel leckt.
  • Wörterbücher. Wenn Sie ein Wörterbuch verwenden, wird viel Code in O (N plus ein Bit) statt O (N ^ 2) ausgeführt. Sicher, Sie können eine Hash-Tabelle in C ++ verwenden, aber nicht jeder tut.
  • Speicherverwaltung - Der Python-Interpreter speichert einen Teil des Speichers der Basisdatenstrukturen zwischen und weist sie dann neu zu, anstatt das System nach neuem Speicher zu durchsuchen. Das reduziert Systemaufrufe, was sehr gut ist.
  • Das Profiling neuer Algorithmen ist auf Python einfacher. Bei vielen Problemen ist ein besserer Algorithmus wichtiger als eine lineare Beschleunigung (was C ++ Ihnen bietet).
  • Wenn Sie ein Programm erstellen, das "nur einmal ausgeführt wird" (wissenschaftliche Analyse, Datenmigration usw.), dann sollte der Compile-Build-Testzyklus in Python schneller sein. Das ist wirklich wichtig;)
wisty 25.11.2009 05:31
quelle
0

Lerne eine statisch typisierte Sprache und eine Skriptsprache.
Sie können in beiden Sprachen tun, was Sie wollen. Eine gut geschriebene C ++ - Codebasis ist einfacher zu pflegen / zu debuggen als eine Python-Codebasis, die mit der gleichen Kompetenzstufe geschrieben wurde.

Wenn Sie Webinhalte oder Skripts erstellen möchten, ist Python genau das Richtige für Sie. Alles weitere erfordert C ++.

Davon abgesehen, gehen Sie für Python.

    
George Godik 25.11.2009 00:13
quelle
0

Wie andere vorgeschlagen haben: Lerne Python, um Algorithmen und Konzepte auf höherer Ebene zu studieren und benutze es für das Prototyping und für Orte wo du kannst. Lernen Sie C / C ++ und / oder Java für den Arbeitsmarkt und für Fälle, in denen Sie es verwenden müssen.

Pythons extrem einfachere Syntax und High-Level-Bibliotheken erlauben es Ihnen, sich auf Interfaces und Abstraktionen zu konzentrieren, während Sie immer noch einen funktionalen Prototyp haben.

    
Jim Dennis 25.11.2009 06:39
quelle
0

Ein signifikanter Unterschied, der bisher nicht erwähnt wurde, ist der Unterschied zwischen einer Sprache wie C ++, die auf nativen Code basiert, und einer Sprache wie Python, die standardmäßig eine VM zwischen Ihnen und der Hardware platziert. Für Low-Level-Arbeiten, wie die Codierung gegen den Betriebssystemkernel, ist die Muttersprache die bevorzugte Option.

Wenn Sie in diesem Kontext arbeiten, bedeutet das in der Praxis jedoch, dass Sie C (in seiner Rolle als portierbarer Assembler) ganz nach unten fallen lassen, anstatt C ++ (und seine Laufzeitbibliotheken) für viel if verwenden zu können nicht den ganzen Code.

    
Steve Gilham 25.11.2009 08:38
quelle

Tags und Links