Heim > Backend-Entwicklung > Python-Tutorial > Vergleichen Sie Java und Python

Vergleichen Sie Java und Python

黄舟
Freigeben: 2016-12-16 11:45:39
Original
1457 Leute haben es durchsucht

Vergleich von Java und Python

Vergleich von Java und Python
18. April 2011
 1. In Bezug auf den Schwierigkeitsgrad. Python ist viel einfacher als Java.
 2. Entwicklungsgeschwindigkeit. Python ist weitaus besser als Java
 3. Laufgeschwindigkeit. Java ist Standard-Python weit überlegen, und Pypy und Cython können mit Java mithalten, aber keines von beiden ist ausgereift genug, um Projekte durchzuführen.
 4. Verfügbare Ressourcen. Es gibt viele Java-Ressourcen, aber nur sehr wenige Python-Ressourcen, insbesondere chinesische Ressourcen.
5. Stabilität. Python 3 und 2 sind nicht kompatibel, was zu einer gewissen Verwirrung und zum Ausfall einer großen Anzahl von Klassenbibliotheken führt. Java ist viel stabiler, weil es von Unternehmen unterstützt wird.
6. Ist es Open Source? Python war von Anfang an vollständig Open Source. Java wird von Sun entwickelt, aber jetzt ist Openjdk für GUN verfügbar, also machen Sie sich keine Sorgen.
 7. Kompilieren oder interpretieren. Beide sind interpretativ.
Ich verstehe, dass C wie ein Auto mit Schaltgetriebe (kompilierte Sprache) ist und Java und Python (interpretierte Sprache) wie Autos mit Automatikgetriebe sind. Die schnellsten Autos sind allesamt Schaltgetriebe, aber für Leute, die nicht gut fahren können, ist es schneller, ein Automatikgetriebe zu fahren.
Kno hat einen Artikel, in dem es um die Auswahl einer Programmiersprache geht: „Bestimmen Sie zuerst Ihre Bedürfnisse“, entscheiden Sie sich nicht aufgrund der Einfachheit oder Komplexität der Sprache. Nur wenn Sie in der Lage sind, Programme zu schreiben, die Sie wirklich für nützlich halten, können Sie zufrieden sein und weiter lernen.
Für welche Umgebungen eignen sich Java und Python? Aus sourceforge.net geht hervor:
Die bekanntesten und bewährtesten gängigen Anwendungen sind grundsätzlich in C++ geschrieben. Zum Beispiel Emule, 7-zip, WinSCP, FileZilla usw.
Ein Teil davon wurde von Java entwickelt, beispielsweise das bekannteste OpenOffice.
Es gibt nur sehr wenige Python-Autoren wie Pidgin und FireBird.
Die Rangfolge der Entwicklungssprachen (wie viele Programme werden in dieser Sprache entwickelt) ist wie folgt: >​ 186
 # Visual Basic .NET
Viele Frameworks und Klassenbibliotheken sind ebenfalls in dieser Liste wie Anwendungen enthalten Software, also ist es fair.
Es ist ersichtlich, dass Java sowohl im GNU- als auch im kommerziellen Bereich die am weitesten verbreitete Sprache ist. C wird hauptsächlich zum Aufbau der untersten Schicht des Systems verwendet. C++ und Java werden zum Aufbau der Zwischenanwendungsschicht verwendet. Wenn die Ressourcen ausreichen, wird die C++-Entwicklung wegen der Laufgeschwindigkeit ausgewählt, andernfalls wird die Java-Entwicklung wegen der Entwicklungsgeschwindigkeit verwendet. Python ist in jeder Hinsicht besser als Java und kann als Sprache der nächsten Generation bezeichnet werden. Am umstrittensten ist jedoch, dass Pure Python viel langsamer ist als Java und dass es keine kommerzielle Unterstützung gibt. Seine Stabilität wurde kritisiert. Bisher wird Python hauptsächlich als Klebesprache auf kommerzieller Ebene verwendet, um Klassenbibliotheken anderer Sprachen (hauptsächlich C/C++) zu binden. Im GNU-Bereich beschränkt es sich hauptsächlich auf kleine Anwendungen und personalisierte Anwendungen. und Reverse Engineering (Hacking)-Anwendungen.
Warum wird Java auf der Serverseite häufig verwendet, auf der Clientseite jedoch weniger? Könnte es sein, dass der Rechenaufwand auf der Serverseite geringer ist? Ich denke, das zeigt, dass die Geschwindigkeit von Java im Vergleich zu C++ immer noch akzeptabel ist. Was inakzeptabel ist, ist die JRE-Plattform und der Moment, in dem die JRE-Plattform beim Start hängen bleibt. Ich dachte einmal, dass die Leistung von in Java geschriebenen Programmen gering sei.
Eine Sache, die Python-Benutzer oft sagen, ist: Python ist nicht langsam, weil Python beim Ausführen viele C-Bibliotheken aufruft, und C ist sehr schnell. Wenn man darüber nachdenkt, spiegelt dies die Tatsache wider, dass es sich um eine Leimsprache handelt, die die C-Bibliothek aufrufen kann. Wenn eine Bibliothek vollständig aus Python besteht, spielt ihre Betriebseffizienz keine Rolle. Sie können nicht immer die Bibliotheken anderer Leute zum Programmieren verwenden.

----

Der aktuelle Einsatz der Programmiersprache Python erfordert kontinuierliches Lernen. Im Folgenden werfen wir einen detaillierten Blick darauf, wie man relevantes Wissen besser erlernen kann. Kürzlich habe ich mir den Code einer auf wxPython basierenden GUI-Anwendung angesehen, der etwa 45,5 KLOC groß ist, und darin sind die von ihm verwendeten Bibliotheken (z. B. Twisted) nicht enthalten.

Der Code wurde von Java-Entwicklern geschrieben, die neu bei Python sind, daher weist er schwerwiegende Leistungsprobleme auf (z. B. 30 Sekunden Startzeit). Als ich den Code überprüfte, stellte ich fest, dass sie viele Dinge geschrieben hatten, die in Java sinnvoll waren, in der Programmiersprache Python jedoch schwer zu akzeptieren waren. Das liegt nicht daran, dass „Python langsamer ist als Java“, sondern daran, dass es in Python bequemere Möglichkeiten gibt, dieselben Ziele zu erreichen, sogar Dinge, die in Java unmöglich sind.

Das Traurige ist also, dass diese Leute mit halbem Aufwand die Hälfte des Ergebnisses erzielen und Code schreiben, der viel langsamer ist, als er in der Programmiersprache Python implementiert werden sollte. Schauen wir uns unten einige Beispiele an:

◆Statische Methoden in Java können nicht in Python-Klassenmethoden übersetzt werden. Klar, es erzeugt mehr oder weniger den gleichen Effekt, aber der Zweck von Klassenmethoden besteht tatsächlich darin, Dinge zu tun, die in Java normalerweise nicht einmal möglich sind (wie das Erben einer nicht standardmäßigen Standardfunktion). Die idiomatische Übersetzung statischer Java-Methoden führt normalerweise zu einer Funktion auf Modulebene und nicht zu einer Klassenmethode oder einer statischen Methode. (Und statische Konstanten sollten in Konstanten auf Modulebene übersetzt werden.)
Dies ist kein Leistungsproblem, aber wenn ein Programmierer der Programmiersprache Python Foo.someMethod aufrufen möchte, ist er gezwungen, so etwas wie Foo.Foo.someMethod zu verwenden in Java Wenn er es auf diese Weise macht, wird er verrückt. Eines müssen Sie unbedingt beachten: Der Aufruf einer Klassenmethode erfordert zusätzlichen Speicherplatz, der Aufruf einer statischen Methode oder Funktion erfordert dies jedoch nicht.

Übrigens gibt es auch diese Eigenschaften von Foo.Bar. Baz-Ketten können nicht selbst gezählt werden. In Java werden diese gepunkteten Namen vom Compiler durchsucht, und die Gesamtzahl wird beim Ausführen nicht berücksichtigt. In Python wird der Suchvorgang gleichzeitig ausgeführt Punkt muss enthalten sein. (In Python ist zu beachten, dass „gekachelte Strukturen besser sind als verschachtelte Strukturen“, obwohl dies möglicherweise mehr auf die Leistung ankommt als „Lesbarkeit“ und „einfach ist besser als komplex“.)

◆ Möchten Sie eine Switch-Anweisung verwenden? Die Programmiersprache Python wird eine Hash-Tabelle sein, keine Ansammlung von Wenn-Dann-Anweisungen. Möchten Sie eine Reihe von Wenn-Dann-Anweisungen verwenden, die in Java keine Switch-Anweisungen sind, aber auch Zeichenfolgen enthalten? CPython-Wörterbücher werden mithilfe von Hash-Tabellen implementiert, die als eine der leistungsfähigsten auf diesem Gebiet gelten, die wir kennen. Der Code, den Sie selbst schreiben, wird nicht besser sein, es sei denn, Sie sind der uneheliche Sohn von Guido, Tim Peters und Raymond Hettinger und genetisch verbessert.

◆xml ist nicht die Antwort. Es ist auch kein Problem. Jamie Zawinski verwendet nun reguläre Ausdrücke: „Manche Leute denken, ich weiß, ich muss XML verwenden.“

Das ist ein anderes Situation als in Java, da XML im Vergleich zu Java-Code flexibel und elastisch ist. Aber im Vergleich zu Python-Code ist XML ein Anker und eine Belastung. In Python wird XML für die Zusammenarbeit verwendet, nicht Ihre Kernfunktionalität, da Sie dies nicht tun müssen. In Java kann XML Ihr Retter sein, da Sie damit domänenspezifische Sprachen implementieren und die Anpassungsfähigkeit Ihrer Anwendungen „ohne Codierung“ verbessern können. In Java ist die Vermeidung von Codierung ein großer Vorteil, da Codierung eine Neukompilierung bedeutet. Aber in Python ist es normalerweise einfacher, Code zu schreiben als in XML. Außerdem verarbeitet Python Code viel schneller als XML. (Darüber hinaus müssen Sie den XML-Verarbeitungscode schreiben, und Python hat ihn bereits für Sie geschrieben.)

Wenn Sie ein Java-Programmierer sind, haben Sie nicht das Bauchgefühl, darüber nachzudenken, ob Sie Sie möchten XML als Teil Ihrer Python-Kernanwendungen verwenden. Wenn Sie zum Zweck des Informationsaustauschs keinen bestehenden XML-Standard implementieren oder ein Eingabe- oder Ausgabeformat etablieren oder einen XML-Editor oder ein Verarbeitungstool erstellen, dann tun Sie es nicht. Tu es überhaupt nicht. Denken Sie nicht einmal darüber nach. Werfen Sie jetzt das XML-Schema weg und haben Sie die Hände frei! Wenn Ihre Anwendung oder Plattform von Entwicklern der Programmiersprache Python verwendet werden soll, werden diese es Ihnen einfach danken, dass Sie ihre Arbeit nicht mit der Belastung durch die Verwendung von XML belasten.

(Die einzige Ausnahme hier ist, wenn Ihre Zielgruppe aus irgendeinem Grund wirklich XML verwenden muss. Sie weigert sich zum Beispiel, Python zu lernen, wird Sie aber bezahlen, wenn Sie XML verwenden, oder Sie planen, ihnen ein Geld zu geben Tolle GUI zum Bearbeiten von XML, und die XML-GUI wurde von einer anderen Person geschrieben, und Sie erhalten das Recht, sie kostenlos zu verwenden. Vertrauen Sie mir, sie werden in Ihrem Programm nicht funktionieren . Wenn Sie Zweifel haben, erklären Sie Ihren Anwendungsfall einem erfahrenen Python-Entwickler. Oder, wenn Sie dickhäutig sind und nichts dagegen haben, ausgelacht zu werden, erklären Sie einem Lisp-Programm, warum Ihr Programm XML verwendet 🎜>◆Getter und Setter sind böse. Ich würde sagen, es ist der Teufel, es ist der Teufel! Objekte der Programmiersprache Python sind keine Java Beans. Schreiben Sie keine Getter und Setter, sondern bauen Sie sie in „Eigenschaften“ ein. Es macht keinen Sinn, bis Sie nachweisen können, dass Sie eine Funktionalität benötigen, die etwas komplexer ist als ein einfacher Zugriff. Andernfalls schreiben Sie keine Getter und Setter. Sie sind eine Verschwendung von CPU-Zeit und, was noch wichtiger ist, eine Verschwendung wertvoller Programmiererzeit. Nicht nur für die Leute, die den Code schreiben und testen, sondern auch für die Leute, die sie lesen und verstehen werden.

In Java müssen Sie Getter und Setter verwenden, da öffentliche Felder es Ihnen nicht erlauben, Ihre Meinung zu ändern und später Getter und Setter zu verwenden. In Java sollten Sie diese „Aufgaben“ also besser im Voraus vermeiden. In Python ist das albern, weil Sie mit einer normalen Funktion beginnen und Ihre Meinung jederzeit ändern können, ohne die Klasse eines Kunden zu beeinträchtigen. Schreiben Sie also keine Getter- und Setter-Methoden.

◆Codeduplizierung ist in Java normalerweise eine unvermeidbare Katastrophe. Sie müssen immer wieder dieselbe Methode mit nur kleinen Änderungen schreiben (normalerweise liegt dies an statischen Typbeschränkungen). Dies ist in Python weder notwendig noch sinnvoll (außer in einigen besonderen Fällen, in denen Sie einige Funktionen einbinden müssen, die Leistung erfordern). Wenn Sie feststellen, dass Sie immer wieder denselben Code mit geringen Abweichungen schreiben, müssen Sie etwas über Abschlüsse lernen. Sie sind eigentlich nicht so gruselig.

Eine Zusammenfassung der Python-Programmierkenntnisse

Eine kurze Einführung in die flexible Programmiersprache Python

Beherrschen Sie die Programmiersprache Python in kurzer Zeit

Die Geschichte der Programmiersprache Python Anleitung Einführung

Beschreibung der Programmiersprache Python

Das ist, was Sie tun. Sie schreiben eine Funktion, die eine Funktion enthält. Die interne Funktion hier ist die Vorlage der Funktion, die Sie immer wieder schreiben möchten, in der Sie jedoch Funktionen hinzufügen, die Variablen für verschiedene Situationen verwenden. Die äußere Funktion verwendet die gerade erstellte Variable als Parameter und gibt als Ergebnis die innere Funktion zurück. Dann rufen Sie jedes Mal, wenn Sie eine weitere, etwas andere Funktion schreiben möchten, einfach die äußere Funktion auf und weisen den Rückgabewert dem Namen zu, unter dem die „duplizierte“ Funktion erscheinen soll. Wenn Sie nun die Funktionsweise ändern müssen, müssen Sie nur eine Stelle ändern: die Vorlage.

Unter den Anwendungen/Plattformen, die ich gesehen habe, gibt es nur ein sehr triviales Programm, das diese Technik verwendet, die Hunderte Zeilen anspruchsvollen Codes entfernt. Da Entwickler spezielle Boilerplate-Dateien verwenden, um Plug-Ins für diese Plattform zu entwickeln, spart dies tatsächlich viel Code für Drittentwickler und erleichtert diesen Programmierern auch das Erlernen.

Dies ist nur die Spitze des Eisbergs in der Denkweise der Java->Python-Programmiersprache. Jetzt kann ich die Änderung richtig durchführen, ohne mich mit den Details des Programms zu befassen. Grundsätzlich gilt: Wenn Sie Java schon eine Weile verwenden und neu bei Python sind, sollten Sie Ihren Instinkten nicht zu sehr vertrauen. Ihre Instinkte wurden durch Java konditioniert, nicht durch Python. Um einen Schritt zurückzutreten: Das Wichtigste ist, nicht mehr so ​​viel Code zu schreiben.

Um dies zu tun, machen Sie sich das Gefühl, dass Sie Python noch mehr brauchen. Stellen Sie sich vor, Python sei ein Zauberstab, der ohne Ihr Zutun alles tun kann, was Sie wollen. Fragen Sie: „Wie löst Python mein Problem?“ und „Welche Funktion der Python-Sprache ist meinem Problem am ähnlichsten?“ Sie wären überrascht, wenn das, was Sie brauchen, bereits in irgendeiner Form existiert. Tatsächlich ist dieses Phänomen selbst unter erfahrenen Python-Programmierern so häufig, dass die Python-Community einen Namen dafür hat. Wir nennen es „GUIDOs Zeitmaschine“, denn bevor wir es selbst meistern, scheint es oft so, als sei es der einzige Weg, an das zu kommen, was wir brauchen.

Wenn Sie sich mit der Programmiersprache Python nicht mindestens zehnmal produktiver fühlen als mit Java, sollten Sie besser einige Änderungen vornehmen. Haben Sie vergessen, Time Machine zu verwenden? dass Sie vergessen haben, die Zeitmaschine zu benutzen) (Gleichzeitig können Sie es sich so vorstellen, wenn Sie immer noch Ihre Java-IDE vermissen: Weil das Python-Programm, das Sie geschrieben haben, viel komplizierter ist, als es sein müsste. )

Das Obige ist der Vergleich zwischen Java und Python. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn).


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage