Was bietet mir Python und was nicht ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Freitag 21. März 2008, 15:23

lunar hat geschrieben:Objective C ist außerhalb von OS X ziemlich total tot, und wird in Zukunft auch unter Mac immer mehr an Bedeutung verlieren, weil solche Anwendungen nur in geringen Maße portabel sind.
Das hat in den letzten Jahren weder ObjC noch Win32-API totgekriegt und wird es auch nicht. Eine native Anwendung fühlt sich immer anders an, als eine mit einem Crossplatform-Toolkit. Bei Windows merkt man das bloß nicht so stark wie auf OSX weil sich da sowieso jeder seit Jahren sein eigenen Süppchen kocht.

Ansonsten ist das schade, dass ObjC so wenig verbreitet ist, eine sehr schöne Sprache. Eine der wenigen dynamisch typisierten Sprachen(die einzige?) außerhalb der interpretierten Spachen.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Freitag 21. März 2008, 15:32

lunar hat geschrieben:Möchtest du jetzt wirklich behaupten, dass CPAN hätte eine durchweg gute Qualität?
Nein, aber eine riesige Auswahl von Qualitativ hochwertigen Modulen, toller Doku gleich Dabei und der Möglichkeit als einfacher Benutzer Anmekrungen in der Doku zu hinterlassen.
Vor allem stört mich bei Python die dämliche Bennenung der Module, da ist Perl wesentlich organisierter. Durch den Cheeseshop und das Tagging gehts mittlerweile halbwegs, aber auch große Teile der Module, die dort rumschwirren sind ziemlich unreif.
Ein Punkt, in dem ich dir zustimme. Allerdings halten sich mehr und mehr Bibliotheken an PEP 8.
Python wird langsam etwas reifer \o/
Wie hat jemand im Ubuntuusers-Forum doch so schön gesagt: Timtowtdi ist kein Konzept, sondern der Mangel desselben.

Es gibt viele Leute, die mir zustimmen würden, wenn ich sage, dass Flexibilität im Bezug auf Perl mehr Nachteil denn Vorteil ist.
Es gibt auch viele PHP-Programmierer...
Es gibt auch viele Perl-Programmierer ;) Die Masse allein zählt nicht, aber Namen zählen. Und man findet viele erfahrene Programmierer, die Perl kritisieren (u.a. Eric Raymond)
Er kritisiert hauptsächlich die Syntax von Perl, und die Perlsche-Ausdrucksweise. Wem die nicht liegt, der soll Perl auch ruhig links liegen lassen :D
Python und Perl sind sich weitaus ähnlicher als mancher hier denkt...
Die Unterschiede in der Syntax und Semantik sind jedenfalls ziemlich groß...
Und hier widerspreche ich dir einfach mal komplett.
Du widersprichst dir vor allem selbst, in dem du behauptest, es gäbe wenig Unterschiede, dann aber auf das Fehlen von LCs, von Generatoren, etc. hinweist,

Im Übrigen finde ich deine Behauptungen angesichts der nun mal real existierenden großen syntaktischen Unterschiede zwischen Perl und Python mehr als merkwürdig.

In Python gibt es keine Präfixe für Namen, je nach dem, welcher Typ dahinter steht. In Python gibt es keine Semikolons und keine geschweiften Klammern, es gibt keine '=>' und '->' Operatoren, und auch =~ fehlt.

Pakete als Klassen zu missbrauchen, ist für mich reichlich seltsam, ebenso wie der Zwang zu Präfixzeichen für Namen. Wo liegt der Sinn in dynamischer Typisierung, wenn ich dann wieder typbezogenen Präfixe für die Namen verwenden muss?
[/quote]
Ich muss zugeben, dass ich rein syntaktischen Unterschieden keine große Bedeutung zumesse. Der eingebaute Regex-Kram von Perl ist historischer Natur, die Prefixe ergen sich daraus, dass ein in Arrays und Hashes eben nur Skalare gespeichert werden können und man deshalb zwischen dem Objekt selbst und der Referenz auf das Objekt unterscheiden muss. Aus dieser Referenzsache ist dann auch der '->' entstanden, ebenso wie der '=>' nur syntaktischer Zucker.
In Perl wegen Hashes/Dicts ebenso aus Paaren erstellt und der '=>' ist nur dafür da, es hübscher aussehen zu lassen.

Die großen Unterschiede sind eigentlich nur die Handhabung der Referenzen, die in Perl ganz explizit geschieht, in Python aber hinter den Kulissen geschieht und das Verwenden von Klammern und Semikolons...
lunar

Freitag 21. März 2008, 15:34

Schon der Kleinkrieg zwischen den verschiedenen UI-Rahmweken, die man benutzen könnte, sorgt für eine unschöne Verdopplungen.
Es gibt nun mal unterschiedliche GUI-Frameworks, auch für Ruby gibt es nicht das Framework.
Relativ mächtig ist wohl Eric, aber da der Autor keine unter Windows installierbare Version zur Verfügung stellen kann/will, wird er auch mich nicht als Kunden gewinnen.
Es existieren Windows-Binaries für PyQt4, die Eric4 mitbringen. Im Übrigen dürfte es dem Autor von Eric wohl herzlichst egal sein, ob du seine IDE nun benutzt, oder nicht ;) Zumal der Mensch wohl Linux-User ist, und ich ihn folglich verstehen kann. Ich habe auch keinen Bock, mich mit cx_freeze, pyinstaller oder py2exe herumzuschlagen, nur damit Windows-Nutzer glücklich sind. Mein Code läuft auf Linux, das reicht mir.

Und wenn du jetzt das "ein Entwickler muss auf seine User achten"-Argument herausholen willst, oder das "es würde aber mehr User die Software nutzen"-Argument, dann lass es gleich sein. Du kannst freien Entwicklern nicht vorschreiben, was sie wie wofür zu programmieren haben. Das ist nun mal der Preis der Freiheit, den du bezahlen musst.
Darii hat geschrieben:
lunar hat geschrieben:Objective C ist außerhalb von OS X ziemlich total tot, und wird in Zukunft auch unter Mac immer mehr an Bedeutung verlieren, weil solche Anwendungen nur in geringen Maße portabel sind.
Das hat in den letzten Jahren weder ObjC noch Win32-API totgekriegt und wird es auch nicht.
Die Win32-API ist aber nicht besonders lebendig. Oder kennst du ein reines Win32-API-Programm für Windows, welches wirklich noch aktiv entwickelt wird?

Was Objective-C angeht angeht, so ist es noch lebendig, aber eben nur auf dem Mac. Außer Apple und anderen, auf den Mac spezialisierten Firmen entwickelt niemand wirklich damit. Und ob das IPhone der Sprache wirklich so viel Auftrieb gibt, bleibt erstmal abzuwarten.
Eine native Anwendung fühlt sich immer anders an, als eine mit einem Crossplatform-Toolkit.
Ja und? Das ändert nichts daran, dass Cross-Plattformanwendung mehr und mehr an Bedeutung gewinnen.
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

Freitag 21. März 2008, 15:34

@sma

Danke für Deinen langen Beitrag.

In vielen Punkten hast Du recht und in vielen Punkten kann ich nichts dazu beitragen, weil ich mich nicht so gut auskenne wie Du bzw. mir noch die Erfahrungen fehlen.

Vielleicht ist es nicht so sinnvoll gewesen, hier diesen Thread zu eröffnen und nach einem solchen Vergleich zu fragen.

Wie man sieht, führt das Ganze schnell zu Grundsatzdiskussionen (die auch nicht falsch sind, aber des öfteren zu Streit führen) und jeder Programmierer wird letzten Endes für das Einstehen, was ihm die besten Erfolge beschert hat.

Ich werde einfach mal in Python investieren und mich dann umorientieren, wenn ich keine Erfolge damimt erzielen werde.

Vielleicht wird es in absehbarer Zukunft eine ähnliches Framework geben wie ROR , welches gewisse Vorzüge vereint und als de facto Standard gelten wird.

Ich lasse mich überraschen.....



ne0h
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 21. März 2008, 17:31

Wenn du sowas wie RoR suchst, schau dir Pylons und Django an.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Samstag 22. März 2008, 11:10

Darii hat geschrieben:Ansonsten ist das schade, dass ObjC so wenig verbreitet ist, eine sehr schöne Sprache. Eine der wenigen dynamisch typisierten Sprachen(die einzige?) außerhalb der interpretierten Spachen.
Naja, Lisp- und Scheme-Systeme, die ich ebenfalls als dynamisch typisiert klassifizieren würde, kompilieren in der Regel direkt in Maschinencode. Und VisualWorks-Smalltalk hat (da hies es noch anders) seit 1989 einen JIT (der Name wurde erst von Java-VMs fast 10 Jahre später geprägt) was sich IMHO auch als nicht-rein-interpretiert qualifiziert. Tja, und Forth-Systeme, die noch nicht mal dynamisch typsiert sind sondern komplett untypisiert, kompilieren mit ihrem threaded-code-Ansatz eigentlich auch alle.

Stefan
.D0T
User
Beiträge: 21
Registriert: Donnerstag 17. August 2006, 17:45

Montag 31. März 2008, 04:41

Ich habe bisher für die Python Entwicklung nichts gefunden was besser wäre als Eclipse + Pydev. Klar, eclipse ist ein echter Leistungs- und Speicherfresser, aber dafür kann es mit pydev alles was mir in vielen anderen editoren/ides fehlt: Gutes Highlighting, Syntaxvervollständigung, Templating, Refactoring, Plugins, STABILITÄT, flexibles ausführen uvm...und man kann auch java, c++, erlang. Wozu man grad "Lust" hat^^

Wenn man einen entsprechenden pc und Monitor hat tuts auch mit Java, ääääh Eclipse, ich wollte ja nicht andeuten das alle Java Programme irgendwie lahm sind....auch wenns einem so vorkommen könnte.........

Habe alles hier genannte schon durchprobiert (teilweise aber schon ~1 Jahr her) aber soooo toll war nicht wirklich viel davon, vieles unfertig und meistens hat irgendwas praktisches gefehlt (jaja, emacs kann alles, ich weiß---).

Zur Sprachendebatte:
Das einzige was ich an perl als vorteilhaft ansehe ist das riieessige cpan. Alles was man will. Alles andere hab ich auch mit python und dank gruppenzwang (oder sagen wir lieber "mentalität" der Programmiersprache) sogar lesbar(er) ;-)

Zu C++, ich glaube nicht das irgendwer diese Sprache wirklich "beherrscht", es gibt einfach zu viele Möglichkeiten abstrußen code zu produzieren von dem keiner ausser dem compiler weiß was der Salat eigentlich zu bedeuten hat. Abgesehen davon einer meiner all-time-favorites ;-) Neben C wenns ans eingemachte, oder eher eingebettete ;-), geht.

Zu Java, ein echter Performancekiller, man kann in Java wunderbar performante Programme schreiben, macht bloss keiner. Über den Speicherverbrauch braucht man auch nichts zu sagen, aber ram ist billig. Ansonsten ist java ganz nett, leichter als C++ isses allemal und vor allem verbreitet und theoretisch unmodifiziert portabel, praktisch oft nicht wirklich aber nujaaaaa.

Python hingegen ist Klasse wenns darum geht schnell was auf die Beine zu stellen. Will man was großes machen kommt jedoch auch dort schnell ein overhead dazu, unittesting etc., aber das is ja immer so...Ästhetisch gesehen habe ich noch nichts besseres gesehen.

Man muss halt immer im Hinterkopf haben was man letzendlich erreichen will. Die Sprache ist nur das Werkzeug dazu!
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 31. März 2008, 10:39

Warum bringst du Unittests gerade mit Python in Zusammenhang? Gerade in durch JUnit bin ich damit als erstes in der Java-Welt in Berührung gekommen. Oder spielst du auf die unterschiedliche Typisierung in beiden Sprachen an?
.D0T
User
Beiträge: 21
Registriert: Donnerstag 17. August 2006, 17:45

Montag 31. März 2008, 16:08

Genau ;-) Wegen der statischen Typisierung find ich testcases in anderen Sprachen etwas einfacher zu machen als in Python. Dort muss man richtig aufpassen um auch vernünftig zu testen! Zumindest imo. :roll:
lunar

Montag 31. März 2008, 16:45

.D0T hat geschrieben:Wenn man einen entsprechenden pc und Monitor hat tuts auch mit Java, ääääh Eclipse, ich wollte ja nicht andeuten das alle Java Programme irgendwie lahm sind....auch wenns einem so vorkommen könnte.........
Swing war lahm, Java war das zumindest in der Referenz-Implementierung nie.
Zu C++, ich glaube nicht das irgendwer diese Sprache wirklich "beherrscht", es gibt einfach zu viele Möglichkeiten abstrußen code zu produzieren von dem keiner ausser dem compiler weiß was der Salat eigentlich zu bedeuten hat.
Es gibt einen Standard. Anhand dieses Standards kann man jeden C++ Code interpretieren, folglich ist die Behauptung, niemand würde C++ wirklich verstehen, ziemlich gewagt und in sich unhaltbar.

Dir scheint da irgendwie der praktische Umgang mit C++-Entwicklern zu fehlen...
Zu Java, ein echter Performancekiller, man kann in Java wunderbar performante Programme schreiben, macht bloss keiner.
Ist es vermessen, anzunehmen, dass diese Behauptung in irgendeiner Weise belegbar oder zumindest von persönlicher Erfahrung unterlegt ist?
Ansonsten ist java ganz nett, leichter als C++ isses allemal und vor allem verbreitet und theoretisch unmodifiziert portabel, praktisch oft nicht wirklich aber nujaaaaa.
Es ist die portabelste aller Sprachen, die in der professionellen Webentwicklung zu finden sind! Im Gegenteil zu anderen Sprachen wie Python ist es nämlich nicht nur plattformunabhängig, sondern dank der J2EE-Standards sogar unabhängig von der konkreten Auslieferungsschicht. Eine Firma muss nur einen einzigen Applikationsserver aufsetzen, und kann dort alle möglichen Web-Anwendungen deployen (wobei deployen in diesem Kontext eher "kopieren" meint).

Dieses hohe Maß an Standardisierung erreicht keine andere Sprache in diesem Bereich. P

ython und Perl sind zwar ebenfalls plattformunabhängig, aber nicht unabhängig von der Auslieferungsschicht. Perl hat noch nicht mal einen Standard für die Webserver-Schnittstelle.

Python hat zwar WSGI, aber das spielt auf wesentlich niedrigerer Ebene. Die darüber liegenden Frameworks sind total zersplittert und zueinander weitgehend inkompatibel. Eine Firma, die bereits Pylons-Webanwendungen betreibt, kann nicht ohne weiteres eine Django-Anwendung dazu schaltet. Dafür muss eine neue Serverkonfiguration her. Zudem reden die Anwendungen nicht miteinander, weil es keinen Standard für die Datenauslieferung gibt.

Die Webanwendung in Java selbst ist zwar überkompliziert, bürokratisiert und so mit enorm viel Boilerplate-Code verbunden, dass Deployment allerdings ist nirgendwo so einfach wie bei Java-Anwendungen.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 31. März 2008, 17:46

Außer vielleicht bei PHP.
lunar

Montag 31. März 2008, 18:05

Y0Gi hat geschrieben:Außer vielleicht bei PHP.
Nur solange das Kopieren von .php-Dateien in den DocumentRoot ausreicht... wenn es komplexer wird, ist das Deployment von PHP-Anwendung auch nicht mehr so prickelnd.
BlackJack

Montag 31. März 2008, 19:22

@lunar: Ja es gibt einen C++-Standard, aber warum das automatisch bedeutet das man damit jedes Programm nachvollziehen kann!? Ich meine in einem absoluten Sinn schon, aber zumindest ich finde das ganze so verwirrend und komplex, das ich mir das nicht zutraue. Wann welche Kontsruktoren und Destruktoren im Zusammenhang mit Ausnahmen aufgerufen werden, oder nicht, Namensauflösung im normalem C++ vs. Templates, Templates überhaupt, sind so Sachen bei denen ich das Bedürfnis bekomme den netten Standard an die Wand zu werfen.
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

Montag 31. März 2008, 19:39

Es gibt einen Standard. Anhand dieses Standards kann man jeden C++ Code interpretieren, folglich ist die Behauptung, niemand würde C++ wirklich verstehen, ziemlich gewagt und in sich unhaltbar.

Dir scheint da irgendwie der praktische Umgang mit C++-Entwicklern zu fehlen...

Ich sehe das so:

Es gibt bestimmt Entwickler, die C++ nahezu vollständig verstehen und beherrschen, allerdings würde ich sehr stark darauf wetten, dass es sich dabei um evtl. 20 - 30 Personen weltweit handelt (Und darin enthalten sind sicherlich einige der Compiler Entwickler für C++).

Natürlich ist C++ so etwas wie die eierlegende Wollmilchsau, denn was man mit C++ nicht machen kann, ist an einer Hand abzuzählen.

Allerdings muss auch C++ dem Fakt Tribut zollen, dass hier eine Sprache erschaffen wurde (auf Basis von C), die in Komplexität und Umfang wohl kein ebenbürtiges Equivalent hat. Gerade wenn es um Zeiger und Speicherbereiche geht, versagt bei vielen Entwicklern der strukturierte Aufbau. Und da sehe ich persönlich keinen Sinn, sich schlicht auf einen Standard zu berufen, der nicht umgesetzt werden kann, wenn es an Grundlagen mangelt bzw. wenn in der Komplexität und Grösse einer Anwendung die Übersicht verloren geht.

C++ gehört IMHO zu den Sprachen, die eben am schwierigsten zu beherrschen sind und, obwohl unglaublich mächtig, Fehler schon fast provozieren.

Ich denke es spricht für sich, dass Beispielsweise "export", diese Templateunterstützung, nur in 2 C++ Compilern implementiert ist und dass alleine diese Funktionalität mit über 2 Mannjahren veranschlagt wird.


ne0h
lunar

Montag 31. März 2008, 20:19

ne0h hat geschrieben:Es gibt bestimmt Entwickler, die C++ nahezu vollständig verstehen und beherrschen, allerdings würde ich sehr stark darauf wetten, dass es sich dabei um evtl. 20 - 30 Personen weltweit handelt (Und darin enthalten sind sicherlich einige der Compiler Entwickler für C++).
Wie stark? 10 Mio? Das Geld könnte ich gut bebrauchen ;)

Im Ernst, man kann deine Schätzung ohne schlechtes Gewissen Blödsinn nennen. 20 Leute dürften über die Jahre allein am g++ mitgearbeitet haben. Dazu kommen die Entwickler all der anderen C++-Compiler, die Bibliotheksentwickler, erfahrene Anwendungsentwickler, etc.
Allerdings muss auch C++ dem Fakt Tribut zollen, dass hier eine Sprache erschaffen wurde (auf Basis von C), die in Komplexität und Umfang wohl kein ebenbürtiges Equivalent hat.
Manche würden an dieser Stelle Flexibilität, Geschwindigkeit und Portabilität ins Feld führen. Und die Komplexität von C++ hängt zum Großteil davon ab, wie tief man programmiert. C++ mit Qt 4 ist nicht komplexer als Java.
Gerade wenn es um Zeiger und Speicherbereiche geht, versagt bei vielen Entwicklern der strukturierte Aufbau. Und da sehe ich persönlich keinen Sinn, sich schlicht auf einen Standard zu berufen, der nicht umgesetzt werden kann, wenn es an Grundlagen mangelt bzw. wenn in der Komplexität und Grösse einer Anwendung die Übersicht verloren geht.
Der Standard wird von allen modernen Compilern nahezu vollständig umgesetzt. Was fehlt, braucht man in der Praxis eh selten.
C++ gehört IMHO zu den Sprachen, die eben am schwierigsten zu beherrschen sind und, obwohl unglaublich mächtig, Fehler schon fast provozieren.
Es gibt genügend stabile C++-Anwendungen, um das Gegenteil zu beweisen.

Im Übrigen würde ich dich bitten, dein FUD durch echte Argumente zu ersetzen oder es ganz sein zu lassen. Völlig aus der Luft gegriffenen Zahlen und unbelegte Behauptungen bringen niemandem Erkenntnisgewinn.
Antworten