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.
BlackJack

Dienstag 1. April 2008, 07:26

Genau C++ + Qt4 ist wie Java, genau das wird in der Praxis gemacht: Man benutzt nur eine Untermenge von C++ weil's niemand komplett beherrscht. :-)

Es gibt auch genügend C++-Anwendungen die nicht stabil sind, und ganze Bücher über "best practices", die beschreiben was man alles beachten muss.

C++ ist zu komplex und zu fehleranfällig. Das ist kein FUD sondern Fact. :-P
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 1. April 2008, 07:50

BlackJack hat geschrieben:Genau C++ + Qt4 ist wie Java, genau das wird in der Praxis gemacht: Man benutzt nur eine Untermenge von C++ weil's niemand komplett beherrscht. :-)
So gesehen nutzt fast jedes Programm nur eine Untermenge einer Sprache ... ;-)
Es gibt auch genügend C++-Anwendungen die nicht stabil sind, ...
Ich denke man findet in jeder Sprache Beispiele dazu!
C++ ist zu komplex und zu fehleranfällig. Das ist kein FUD sondern Fact. :-P
... und wird dennoch ganz oft eingesetzt ;-) Jaja ... die Menschheit ist einfach doof und lernresistent! :-D
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 1. April 2008, 08:00

Hyperion hat geschrieben:... und wird dennoch ganz oft eingesetzt ;-) Jaja ... die Menschheit ist einfach doof und lernresistent! :-D
Ich denke das liegt nicht unbedingt an den Programmierern, sondern ehr an den Führungskräften, die Entscheiden aber keine Ahnung haben.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

Dienstag 1. April 2008, 08:37

BlackJack hat geschrieben:Genau C++ + Qt4 ist wie Java, genau das wird in der Praxis gemacht: Man benutzt nur eine Untermenge von C++ weil's niemand komplett beherrscht. :-)
Dieser Argumentation folgend würde die Tatsache, dass viele Metaklassen nicht verstehen, nicht verwenden oder gar nicht kennen, bedeuten, dass Python ebenfalls schlecht ist... ich muss mir dringend eine neue Sprache suchen: Vielleicht Perl? Das hat zwar auch eine Menge undurchdringlicher Features, die werden aber alle benutzt ;)
Es gibt auch genügend C++-Anwendungen die nicht stabil sind
Es gibt auch instabile und schlechte Python-Anwendungen... eine davon sogar in der Standard-Distribution von CPython ;)

Zumindest auf meinem System gibt es wesentlich mehr stabile C++-Anwendungen als stabile Python-Anwendungen.
C++ ist zu komplex und zu fehleranfällig. Das ist kein FUD sondern Fact. :-P
Ich bestreite nicht, dass C++ komplex, schwierig und für sprachfremde Programmierer fehleranfällig ist. Die daraus resultierende Schlussfolgerung, man könnte mit C++ keine stabilen Programme schreiben, halte ich allerdings für falsch.

@jens
Dieser Behauptung ist auch nicht gerade begründet. Wäre die Inkompetenz von Führungskräften der Hauptgrund für die Verbreitung von C++ in der Softwareentwicklung, dann wäre unsere Wirtschaft kaum existent, so weit verbreitet wäre Inkompetenz dann ;)

Zudem lässt das freie Projekte außen vor, die so etwas wie Führungskräfte gar nicht haben.

Der eigentliche Grund für die Verbreitung C++ wird an anderer Stelle liegen. Viele Firmen werden aus alten Zeiten wohl noch große Mengen legacy-Code mitschleppen, der gewartet werden will, und auch in neue Projekte eingebunden werden muss. Zudem übersiehst du ein wichtiges Alleinstellungsmerkmal von C++:

Es war bis vor kurzem die einzige objektorientierte Programmiersprache von nennenswerter Verbreitung, die binär kompiliert werden konnte, und dass auch noch für alle möglichen Architekturen. Gerade im embedded-Bereich ist das wichtig, da ist nämlich kein Platz für große virtuelle Maschinen. Seit D steht C++ zwar nicht mehr allein, D fehlen aber viele Bindings für verbreitete Bibliotheken sowie Portierungen auf andere Architekturen. Zudem dürfte die Tatsache, dass D existierenden C++-Code nicht einbetten kann, ein großes Hindernis auf dem Weg zur Ablösung von C++ sein.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Dienstag 1. April 2008, 10:25

lunar hat geschrieben:Ich bestreite nicht, dass C++ komplex, schwierig und für sprachfremde Programmierer fehleranfällig ist. Die daraus resultierende Schlussfolgerung, man könnte mit C++ keine stabilen Programme schreiben, halte ich allerdings für falsch.
Zumindest muß ich mir in Python keine Sorgen um buffer overflows und (De-)Allozieren von Speicher machen. Der meiste Code wird nunmal auch nicht von Genies geschrieben, daher ist es gut, wenn der Programmierer sich darum nicht kümmern muß bzw. durch eine komplexe Sprache vom Eigentlichen abgelenkt wird.
BlackJack

Dienstag 1. April 2008, 12:05

Weite Verbreitung ist kein Qualitätsmerkmal. Siehe Windows, PHP, VisualBasic, …

Die inkompetenten Führungskräfte hören auf die C++ Programmierer, die irgendwie nicht zugeben wollen, dass die Zeit, die sie in diese krude, hässliche Sprache investiert haben, für die Katz ist, wenn sie auf eine vernünftige OOP-Sprache umsteigen. Da wird was von Hardwarenähe und Kontrolle gefaselt, das heilige RAII-Mantra runtergebetet, und es als Vorteil hingestellt, dass man sich um den Speicher selber kümmern muss.
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 1. April 2008, 13:10

Für mich kristallisiert sich hier auch heraus, warum PyPy sinn macht ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
.D0T
User
Beiträge: 21
Registriert: Donnerstag 17. August 2006, 17:45

Dienstag 1. April 2008, 15:31

Oh, da hab ich ja wieder was angerissen :lol:

@lunar&thread:

Ich habe nicht gesagt das man in C++ keine guten, stabilen Programme schreiben kann. Ich habe bloss gesagt das es nahezu unmöglich ist sich den kompletten Sprachschatz zueigen zu machen. Python ist mmn. in dieser hinsicht beispielsweise deutlich knackiger. Das fördert die Fähigkeit fremden code zu verstehen und den Überblick zu behalten. Mmn. auch die Weiterentwicklung der Sprache selbst.

Du brauchst mir nicht erzählen das C++ ein sehr brauchbares Werkzeug für viele Zwecke ist. Ich hab ja geschrieben das ich sie selbst sehr schätze.

Zu D:
Öhm, benutzt das schon wer? Glaube nicht das es Sinn macht sich damit zu befassen bevor es sich auch nur irgendwo annähernd durchgesetzt hat (ich weiß Henne-Ei-Ei-Henne). Wenn man natürlich nur spielen will, warum nicht :wink:

Zu java: Alles was ich gesagt habe beruht auf persönlicher Erfahrung. Die ich allerdings durch das was-man-eben-so-hört gedeckt sehe. Ich WEIß das java dank jit compilierung sogar schneller sein kann als für eine andere Platform optimierter c/c++ code. Aber du kanns mir nicht erzählen das du noch nie bemerkt hast das 80% aller Java Applikationen die man in die Finger bekommt deutlich resourcenhungriger sind als pendants in Sprachen ohne Runtime. Und am RAM verbrauch gibts garnix zu diskutieren....der ist ziemlich hoch. Und mit der portabilität ist es bei einer richtigen Applikation leider, neben der Theorie, auch nicht soweit her (Mit python habe ich das nicht verglichen, da hab ich ehrlich gesagt keine wirkliche Erfahrung in dem Berreich, kleinzeugs/samples sind immer hübsch portabel, die Frage ist wie das bei richtigem Zeug aussieht). Aber auch hier gilt wieder: Das muss nichts ausmachen wenn man sich im klaren ist was man erwartet

PHP:
Wird für mich immer eine aufgeblähte Template Sprache bleiben. Mit der neuen Version wurde schon eines in Sache OOP verbessert. Ändert aber mMn. nichts daran das diese Sprache grottenhässlich ist. Alleine die funktionsnamen, deren Namen man wohl damals nach und nach gewürfelt hat,....ich sag lieber nichts mehr ;-) Aber ich benutzte trotzdem PHP Programme und kleinere selbstgemachte PHP Sachen, warum? Es ist überall zu haben, und schlank.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Dienstag 1. April 2008, 16:05

.D0T hat geschrieben:Python ist mmn. in dieser hinsicht beispielsweise deutlich knackiger.
Öhm....ich würde mal dreist behaupten, das die Sprachen sich da nicht viel nehmen.
Was in C++ die Templates sind macht man in Python mit Metaklassen und sonstigem Funktionalem Kram. Nicht unbedingt simpler.
BlackJack

Dienstag 1. April 2008, 18:02

In C++ wird deutlich mehr mit Templates gemacht als bei Python mit Metaklassen. Ich habe mit Metaklassen bisher nur ein wenig herum gespielt, aber noch keinen Fall gehabt, wo ich die wirklich sinnvoll selber hätte schreiben müssen. Das ist IMHO eine recht exotische Ecke. C++-Templates werden wesentlich ausgiebiger verwendet. Damit wird offenbar alles was man aus anderen Sprachen kennt, in die Sprache gequetscht.

Und wenn man dann etwas falsch macht und eine Templatefehlermeldung um die Ohren gehauen bekommt, sieht's ganz düster aus. Mehrere Bildschirmseiten lang "expandierte" Templates mit denen man nicht wirklich etwas anfangen kann.

Das ich C++ nicht beherrsche und auch gar nicht beherrschen möchte, ist mir nach der Lektüre des Abschnitts `8.8: Exceptions in constructors and destructors` in den C++ Annotations klar geworden. Wie kann sich jemand so einen Krampf nur freiwillig antun wollen? Ich mag Ausnahmen lieber als Fehlercodes prüfen und ich mag OOP-Programmierung. Die manuelle Speicherverwaltung und das RAII-Mantra baut für beides ziemliche Hürden auf.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 1. April 2008, 18:23

Hm ... also wenn Templates so etwas schlimmes sind, dann frage ich mich, wieso es seit Java 1.5 die Generecis gibt :-D

Ich mag C++ und habe Jahre lang in C++ programmiert - seit ich Python kenne, hat sich das drastisch geändert :-) Java mochte ich vor 5 Jahren nicht die Spur - mittlerweile hat sich das deutlich geändert, da es sich "gut" entwickelt hat. Natürlich auch wegen guter Technologien drum herum.

Dennoch würde ich C++ nicht so abwerten! Viele starke Applikationen sind in C++ geschrieben (und werden es noch) - wenn C++ derart hässlich und wenig benutzerfreundlich wäre, wäre das danke großer Konkurrenz sicherlich nicht mehr so. Speziell wenn ich an das KDE-Projekt denke! Was die Jungs auf die Beine stellen ist ein sehr guter Beweis für die Mächtigkeit der Sprache, aber auch für die Beherrschbarkeit. Denn Magier sind das auch nicht alle ;-)
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

Dienstag 1. April 2008, 18:36

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.
Nun ja, ich sehe da schon einen Unterschied. Ich bezweifle keinesfalls, dass es mehrere Hundert oder Tausend Entwickler gibt, die man quasi als "Experten" in Sachen C++ bezeichnen kann. Allerdings ist dies nicht gleichbedeutend mit einem vollständigen Verständnis der Sprache.

Ich selber arbeite auch mit einem Entwickler, der als Delphi-Guru gilt und der den Überblick hat über eine Software mit mehr als 4 Millionen Zeilen Code. Und trotz dessen hat er mit Sicherheit kein vollständiges Verständnis der Sprache und kennt auch nur 60-70 % ihrer Möglichkeiten.

Ein "Teilverständnis" spreche ich vielen zu, aber fast niemand beherrscht C++ zu 100% (oder annähernd 100%).

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.
Sicherlich, das sind Eigenschaften die unumstritten zum grossen Plus bei C++ gehören.

Aber ich rede hier von keinem Vergleich zwischen C++ mit Qt 4 und Java, sondern von der Komplexität der Sprache an sich, die sich nicht bestreiten lässt und nach wie vor viele Entwickler (auch jene mit mehrjähriger Erfahrung) schnell zu Fehlern führt.

Ich denke auch es ist kein "Blödsinn" zu sagen, dass z.B. Python da die Fehlerquote schon alleine vom Sprachdesign und der Sprachlogik deutlich tiefer hält.

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.

Ich bezweifle doch garnicht, dass es hunderte stabiler C++ Anwendungen gibt ?! :?:

Und warum meine Behauptungen nicht stimmen sollen, verstehe ich auch nicht wirklich. Schliesslich lässt sich auf mehreren Dutzend seriöser Seiten/Quellen recherchieren, welche Tücken C++ innehat, welche Probleme schnell entstehen können, welcher Aufwand in der Implementierung eines C++ Compilers steckt, usw. usw.

Einige langjährige C++ Entwickler bestätigen mir das auch in Gesprächen.

Ich habe den Eindruck, es wird angenommen, C++ würde hier aus reiner subjektiver Abneigung schlecht gemacht. C++ hat seine enormen Stärken und ebenso Schwächen, wie auch jede andere Sprache.

Allerdings hat C++ durch seinen Umfang und seine Mächtigkeit ein höheres Potential Fehler zu produzieren. Das ist belegt und Fakt. Dass es auf den Menschen ankommt, der sich einer Sprache annimmt ist klar, nur ist auch die Struktur der Sprache selbst ein gewichtiger Faktor und in meinen Augen nicht wegzureden.


ne0h
lunar

Dienstag 1. April 2008, 18:57

ne0h hat geschrieben:Nun ja, ich sehe da schon einen Unterschied. Ich bezweifle keinesfalls, dass es mehrere Hundert oder Tausend Entwickler gibt, die man quasi als "Experten" in Sachen C++ bezeichnen kann. Allerdings ist dies nicht gleichbedeutend mit einem vollständigen Verständnis der Sprache.[/code]
Verstehst du Metaklassen? Verstehst du Python's AST komplett?
Ein "Teilverständnis" spreche ich vielen zu, aber fast niemand beherrscht C++ zu 100% (oder annähernd 100%).
Auf welchen Quellen baust du diese völlig aus der Luft gegriffene Schätzung auf? Persönliche Erfahrung oder pure Abneigung?
Aber ich rede hier von keinem Vergleich zwischen C++ mit Qt 4 und Java, sondern von der Komplexität der Sprache an sich, die sich nicht bestreiten lässt und nach wie vor viele Entwickler (auch jene mit mehrjähriger Erfahrung) schnell zu Fehlern führt.
Ich denke auch es ist kein "Blödsinn" zu sagen, dass z.B. Python da die Fehlerquote schon alleine vom Sprachdesign und der Sprachlogik deutlich tiefer hält.
Du solltest mal öfters im diesem Forum den Code anderer anschauen. Manchmal sträuben sich da sämtliche Haare, denn offenbar kann man auch in Python wunderbar nicht funktionierenden Code schreiben.

Ich bestreite nicht, dass das in C++ leichter ist als in Python, nur bedeutet das noch lange nicht, dass C++ deswegen schlechter wäre.
Und warum meine Behauptungen nicht stimmen sollen, verstehe ich auch nicht wirklich. Schliesslich lässt sich auf mehreren Dutzend seriöser Seiten/Quellen recherchieren, welche Tücken C++ innehat
welcher Aufwand in der Implementierung eines C++ Compilers steckt, usw. usw.
Es gibt auf der Welt mehr C++ Compiler, als es Java-Compiler oder Python-Implementierungen gibt.
Einige langjährige C++ Entwickler bestätigen mir das auch in Gesprächen.
Ja und? Diese Aussage ist nichts wert... Gespräche habe ich auch schon geführt, und zu jeder Sprache lässt sich einer finden, der etwas dagegen hat. In irgendeiner Weise repräsentativ für die Sprache ist das aber nicht, ergo ist deine Aussage weit davon entfernt, ein Argument zu sein.
Ich habe den Eindruck, es wird angenommen, C++ würde hier aus reiner subjektiver Abneigung schlecht gemacht.
Woher das wohl kommt... :roll:
C++ hat seine enormen Stärken und ebenso Schwächen, wie auch jede andere Sprache.
Außer PHP, dass hat nur Schwächen ;)
Allerdings hat C++ durch seinen Umfang und seine Mächtigkeit ein höheres Potential Fehler zu produzieren. Das ist belegt und Fakt.
Das bestreite ich gar nicht. Ich bestreite auch gar nicht, dass ich C++ wegen seiner Komplexität kaum nutze. Ich verwehre mich allerdings dagegen, dass die Sprache ungeachtet ihrer Stärken schlecht gemacht wird.

So zumindest ist dein Posting genauso wie die Postings gewisser anderer Leute hier (ja, du bist gemeint BlackJack ;) ) in meinen Augen erschienen: als FUD, zwar durchaus mit wahren Elementen, aber letztlich getrieben von persönlicher, subjektiver Abneigung. Man möge mir verzeihen, wenn die Intention hinter diesen Postings eine andere wahr, ich schiebe es mal auf die Tatsache, dass in diesem Medium nicht die Möglichkeit besteht, den Streit mit Bier beizulegen ;)
BlackJack

Dienstag 1. April 2008, 19:54

Ich streite meine Abneigung ja gar nicht ab, aber Du solltest vielleicht mal zugeben, dass Deine Argumente Deine eigenen Kriterien nicht erfüllt, und Du einfach nur'n Fanboy bist. :-P

Gespräche mit langjährigen C++-Entwicklern sind jedenfalls genauso schlagkräftige Argumente, wie die Beobachtung, dass es C++-Projekte gibt, die einen gewissen Grad an Stabilität aufweisen.
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

Dienstag 1. April 2008, 20:13

@lunar

Ich glaube, Du verstehst mich vollkommen falsch oder ich schreibe tatsächlich so missverständlich.

Ich habe rein garnichts gegen C++, im Gegenteil, ich selber schreibe unglaublich gerne in reinem C und freue mich darauf, in C++ zu entwickeln. Ich versuche nur meine Meinung auszudrücken, dass C++, zumindest in meinen Augen eben eine komplexe Sprache ist und meiner Meinung und Erfahrung nach auch von anderen Menschen als solche empfunden wird.

Ich könnte aber ebenso 20 Sachen über Perl aufzählen, die mich stören und Perl für mich unattraktiv machen und trotzdessen ist es nicht mein Ding, Perl als schlechte Sprache darzustellen oder alle Perluser über einen Kamm zu scheren.

Und JA, natürlich wird viel Murks geschrieben, ob in C, C++, Java, Python, Perl, Lua, D, JavaScript, Delphi, VB oder sonstwo.

Verkorkste und fehlerhafte Programme zu schreiben ist keine Kunst.

Glaub mir, mir liegt nichts ferner als diese Sprachen-Gebashe einiger Leute, die den ganzen Tag nichts anderes tun als IHRE Nonplusultra-Sprache als "das" Mittel schlechthin zu propagieren und zu verteidigen.

Aber eine persönliche Meinung und Einschätzung wird trotzdem, auf vernünftigem Niveau, ja erlaubt sein. Oder?

Also, nichts für ungut. Nimms nicht als Angriff gegen C++. :wink:

Es ist auch nur das Mittel um zum Ziel zu kommen, wie alle anderen Sprachen...


ne0h
Antworten