Bei SO stieß ich auf die Frage, welche Plattform, Java oder Python für die Entwicklung in Google AppEngine am besten geeignet sind. Viele Leute rühmten sich der gesteigerten Produktivität, die durch die Verwendung von Python über Java erzielt wurde. Eine Sache, die ich über das Produktivitätsargument Python vs. Java sagen möchte, ist, dass Java hervorragende IDEs hat, um die Entwicklung zu beschleunigen, da Python in diesem Bereich aufgrund seiner Dynamik wirklich fehlt.
Obwohl ich Python als Sprache bevorzuge, glaube ich nicht, dass es die Produktivität im Vergleich zu Java erheblich steigert, insbesondere wenn ein neues Framework verwendet wird. Wäre es Java gegen Python und der einzige Editor, den Sie verwenden könnten, wäre VIM, dann würde Python Ihnen einen enormen Produktivitätsschub bringen, aber wenn IDEs in die Gleichung einbezogen werden, ist dies nicht so eindeutig.
Ich denke, dass Javas Verdienste oft nur auf Sprachebene und oft auf veralteten Annahmen bewertet werden, aber Java hat viele Vorteile, die außerhalb der Sprache selbst liegen, z Partybibliotheken, Plattformen etc ..
Frage: Gibt Python / verwandte dynamische Sprachen wirklich die enormen Produktivitätssteigerungen, von denen oft gesprochen wird? (unter Berücksichtigung der Verwendung neuer Frameworks und der Arbeit mit mittleren bis großen Anwendungen).
Antworten:
Einer der Hauptvorteile von Python ist die Philosophie "Batterien enthalten": eine umfangreiche und einfach zu verwendende Standardbibliothek. In Java sind zum Lesen einer Textdatei mehrere Codezeilen, verschachtelte Reader und dergleichen erforderlich. In Python ist es
f.read()
. Dies wird auf jeden Fall eine enorme Produktivitätssteigerung sein, insbesondere beim schnellen Prototyping. Python ist in der Regel auch weniger ausführlich, was keine schlechte Sache ist (obwohl ich denke, dass die Bedeutung von Ausführlichkeit und Prägnanz oft überbewertet wird).Wenn Sie jedoch bereits an einem Framework wie GAE arbeiten, würde ich davon ausgehen, dass die Unterschiede viel geringer sind und hauptsächlich von Ihrer persönlichen Sprachkenntnis abhängen. Sie werden meist nur das Framework mit der Syntax Ihrer Wahl verbinden, und dort hilft die große Standardbibliothek von Python wenig.
quelle
List<String> lines = Files.readAllLines(Paths.get("file.txt"), Charset.forName("UTF-8"));
. Nicht so schlecht! (Dies ist Java 7, das noch nicht im März 11 veröffentlicht wurde).Hier sind meine 2 Cent. Meiner Erfahrung nach eignet sich Python für kleine bis mittlere Projekte, während ich für größere Projekte mit Java produktiver bin.
Im Allgemeinen kann ich für kleinere Projekte eine dynamisch typisierte Sprache wie Python (oder PHP) verwenden: Sie ist nicht zu komplex, Sie möchten sie schnell erledigen, und es kann nicht zu viel schief gehen. In diesem Fall finde ich, dass die Verwendung von Python praktischer sein kann.
Wenn ich jedoch eine größere Software entwickeln muss, bevorzuge ich eine statisch typisierte Sprache wie Java, weil ich es vorziehe, wenn der Compiler so viele Prüfungen wie möglich für mich durchführt. Ich habe die Erfahrung gemacht, dass ich in größeren Projekten mehr Zeit mit der Behebung von Fehlern mit Python als mit Java verbringen muss. Daher stört es mich nicht, wenn das Schreiben des Codes in Java etwas länger dauert, da dies später Zeit spart.
quelle
In mächtigeren Sprachen wie Python oder Ruby bin ich viel produktiver. Es spielt keine Rolle, ob ein Teil des Java-Codes von einer IDE generiert werden kann. Es gibt mehr Code zu lesen und zu warten. Es dauert länger, sich durch sich wiederholenden Code zu wühlen und die wichtigen Teile zu finden, und es dauert länger, ihn zu ändern. Es ist in Ordnung, dass Eclipse konvertieren kann
zu:
Aber jedes Mal, wenn ich die Klasse öffne, sehe ich diesen Müll und muss ihn überfliegen, um die interessanten Teile zu finden. Außerdem können während der Wartung Fehler in den generierten Code eingefügt werden.
Ich würde viel lieber sehen:
Für mich ist die Notwendigkeit, dass eine IDE effektiv mit Java zusammenarbeitet, ein guter Grund, eine andere Sprache zu wählen.
Vielleicht mächtiger, vergleiche diesen Ruby-Code:
gegen ähnlichen Java-Code:
Der Ruby-Code ist eine direkte Übersetzung der Spezifikation: das durchschnittliche Gewicht von Personen, die größer als 200 (cm) sind. Ein Kommentar wäre überflüssig.
Der Java-Code erfordert sowohl zum Schreiben als auch zum Lesen einen erheblichen Arbeitsaufwand.
Paul Graham liefert in diesem Aufsatz ein überzeugendes Argument für die Kürze der Programmiersprachen . Nach Abschluss der Mathematik finde ich sein Argument überzeugend und die Argumente gegen die Kürze schwach. Gewiss ist eine einzelne Zeile in einer höheren Sprache schwieriger zu verstehen als eine einzelne Zeile in einer niedrigeren Sprache, genauso wie eine partielle Differentialgleichung schwieriger zu verstehen ist als eine einfache Addition. Aber eine einzelne Zeile in einer mächtigen Sprache ist leichter zu verstehen als die fünf oder zehn Zeilen, die sie ersetzt. Stellen Sie sich vor, Sie lesen einen mathematischen Text, der mit Wörtern anstelle von Symbolen geschrieben wurde.
quelle
dateOfBirth
öffentlich. Wenn Logik später hinzugefügt werden muss, fügen Sie a hinzu_dateOfBirth
, um die Daten zu speichern, und erstellen Sie dann einenproperty
NamendateOfBirth
mit den Methoden get und set. Der aufrufende Code muss sich in Python überhaupt nicht ändern. Java verwendet nur Accessoren, weil es nicht das Konzept der "Eigenschaften" hat.people.stream().filter(p -> p.getHeight() > 200).mapToDouble(Person::getWeight).average().orElse(0);
Ich bin vor ein paar Jahren von Java zu Python gewechselt und habe das Gefühl, dass ich produktiver bin. Wie @Joonas betont, stammt ein Großteil der Produktivität aus der gepackten Bibliothek. Aber ein Teil davon stammt aus der Sprache selbst. Ich kann mir nicht vorstellen, keine Wörterbücher, Listenverständnisse, Funktionen höherer Ordnung und eine Shell zu haben.
Denken Sie daran, dass es eine Weile dauern wird, bis Sie Python fließend beherrschen, wenn Sie Java bereits kennen.
quelle
Dies ist eine alte Frage, aber ich möchte meine $ .03 hinzufügen. Ich denke, dass es sehr davon abhängt, wie du auch denkst. Ich kann dynamische, interpretierte Sprachen wirklich nicht ausstehen. Andererseits bin ich ein großer Fan von statisch getippten Sprachen. Sicher, die Verwendung von Java kann ausführlicher sein, aber ich finde es einfacher zu lesen und zu warten, wenn alles gesagt und getan ist. Ich finde, dass Python, Ruby und Perl (für mich) extrem schwer zu lesen sind. Ich kann einfach nicht meinen Kopf darum wickeln, obwohl ich es versucht habe. Das heißt, ich kann Code in Scala gut schreiben und es ist keine große Sache. Ich denke, es hängt davon ab, womit Sie sich wohl fühlen. Am Ende des Tages wird Java viel mächtiger sein; mehr als Ruby, Python oder Perl. Die JVM ist ein überzeugendes Stück Technologie, und das Erlernen der Nutzung ihrer Leistungsfähigkeit kann sich als sehr vorteilhaft für Sie erweisen.
quelle
Ich finde, dass Python, Ruby, Javascript und SQL viel produktiver sind als kompilierte Sprachen wie Java, da diese Sprachen eine sehr schnelle Rückkopplungsschleife haben. Sie können einige Codezeilen in einer Befehlszeile ausführen und sofort feststellen, ob der Code korrekt ist oder nicht. Wenn es Ausnahmen auslöst, wissen Sie sofort. Mit Java müssen Sie kompilieren, packen und implementieren, was bei großen Systemen oft Minuten in Anspruch nimmt. Dies führt zu einem sehr langsamen Feedback-Zyklus.
Durch den schnellen Feedback-Zyklus können Sie schnell zu einer guten Lösung übergehen, und das macht dynamische Sprachen produktiver.
quelle
feedback loop
Ich habe in letzter Zeit viel mehr Python gemacht und war lange Zeit Java-Programmierer, und für brandneue Entwicklungen denke ich, dass ich in Python einiges produktiver bin. Viele ziemlich einfache Dinge in Java können ein bisschen langweilig sein, wie Datei- / Stream-Verarbeitung, Lesen von Daten von einer URL, Serialisieren von XML usw. mit "langweilig" nimm nur eine in python. Die Verwendung der richtigen Tools, wie Guave oder einer anderen Sammlungs-API, kann dabei jedoch sehr hilfreich sein.
Ich vermute, ich sage, dass ein Vorteil von Python darin besteht, dass es mit vielen Funktionen ausgestattet ist, die Sie benötigen, um eine Drittanbieter-Bibliothek in Java zu verwenden.
Alles in allem wäre ich in Java weitaus produktiver als in Python, insbesondere wenn es darum geht, große Codebasen umzugestalten und mit ihnen zu arbeiten.
quelle