Qt4 mit Python beleben

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

Hallo Gemeinde!
Jetzt will ich mich auch mal ins QT-Abenteuer stürzen.
Ich kann mit dem Designer ein statisches Bild mit Widgets erstellen, dann ein Slotfile erzeugen und mit qmake einen C++ Quellcode erzeugen.
Jetzt kenn ich mich allerdings mit C++ nicht so aus, wie in C und möchte daher mit Python arbeiten.
Nach meinem logischen Menschenverstand muß die Qt-Lib in der Lage sein, ein statisches Bild zu animieren. Ich stelle mir vor, man mit
entweder mit
IDLE oder
dem Texteditor
den erzeugten Pytoncode verändern kann.
Da QTnur ein Programmgenerator ist, müßte es auch möglich sein, eigene Klassen oder Funktionen hinzuzufügen.
1 Beispiel wäre hilfreich.
Wir hatten in meiner alten Firma mit Trolltech Probleme wegen Lizensgebühren. Nach der Übernahme durch Nokia könnte das sich erledigt haben.
Danke im Voraus.
8)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

3ff hat geschrieben:Hallo Gemeinde!
Jetzt will ich mich auch mal ins QT-Abenteuer stürzen.
Qt - QT ist die Abkürzung für QuickTime ;-)
Ich kann mit dem Designer ein statisches Bild mit Widgets erstellen, dann ein Slotfile erzeugen und mit qmake einen C++ Quellcode erzeugen.
Was ist ein statisches Bild? Du meinst Du kannst die GUI-Elemente mit dem Designer erstellen?
Jetzt kenn ich mich allerdings mit C++ nicht so aus, wie in C und möchte daher mit Python arbeiten.
Seltsame Logik - Python unterscheidet sich von C erheblich! Beherrschst Du die Grundlagen von Python denn? Bevor das nicht der Fall ist, würde ich Dir dringend von irgend welchen GUI-Spielereien mit Python abraten! Ohne gute Beherrschung der Grundlagen ist man bei GUI-Programmierung verloren.
Nach meinem logischen Menschenverstand muß die Qt-Lib in der Lage sein, ein statisches Bild zu animieren. Ich stelle mir vor, man mit
entweder mit
IDLE oder
dem Texteditor
den erzeugten Pytoncode verändern kann.
Was sind das für merkwürdige Zeilenumbrüche?
Du verwendest Begriffe, mit denen ich (und vermutlich die meisten anderen hier) wirklich nichts anfangen kann! Was ist dieses statische Bild und wieso sollte man das animieren können? Hä? Du musst das wirklich noch einmal sauber erklären und ggf. die Begriffe umschreiben, wenn Du die allgmein gebräuchlichen vielleicht nicht kennst oder eben ganz bewusst diese Begriffe gewählt hast.
Da QTnur ein Programmgenerator ist, müßte es auch möglich sein, eigene Klassen oder Funktionen hinzuzufügen.
Was ist ein Programmgenerator? Qt ist das mit Sicherheit nicht! Qt ist ein Framework, welches einen starken Fokus auf GUI Elementen hat. Der QtDesigner ist ein Werkzeug, was es einem erlaubt grafisch GUIs zu designen und zu speichern. Aus diesen XML-Dateien kann dann der benötigte Programmcode generiert werden. Dies kann statisch passieren, oder sogar dynamisch zur Laufzeit. Meinst Du das mit "Programmgenerator"?
1 Beispiel wäre hilfreich.
Hier im Forum gibts doch zu Hauf kleine Scripte mit PyQt!
Wir hatten in meiner alten Firma mit Trolltech Probleme wegen Lizensgebühren. Nach der Übernahme durch Nokia könnte das sich erledigt haben.
Die bisherigen Statements zeugen imho aber nicht gerade davon, dass Du bereits Kontakt mit Qt hattest! Sorry, aber das ist dermaßen unglaubwürdig und passt alles nicht zusammen.
Nebenbei: Wo genau liegt hier jetzt die Frage? Lies Dir die Lizenzbestimmungen durch, dann solltest Du ja wissen, ob es für Dich passt oder nicht...

Generell: Wo ist die Frage, die Du hier stellen wolltest? Du beschreibst hier mit von mir in diesem Zusammenhang noch nie gehörten Begriffen, was Du denkst, das Qt leistet. Was aber genau willst Du wissen?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

Im Übrigen hat sich an der Lizenz von PyQt durch die Übernahme von Nokia nichts geändert. PyQt unterliegt noch immer der GPL, wenn auch mit einigen Ausnahmen.
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@Hyperion
schau mal nach bei riverbankcomputing.com
Übrigens Danke für die schlauen Hinweise.
Nach 30 jahren SPS-Programmierung brauch ich mir nicht sagen lassen, was ein Programmgenerator ist.
Was kommt denn bei Dir raus, wenn Du pyuic4 ansprichst?
Bei mir kommt da ein Python-Code raus, der nur noch in die jeweilige Anwendung eingebunden werden muß...
Wenn Du irgendwie schlecht dauf bist, dann brauch ich keine Kommentare mehr von Dir.
Ich hab vor gut 30 jahren auf einer PDP-11 die Sprache C gelernt und da bin ich sehr gut durchs Leben gekommen. Ich werd mir jetzt als Rentner nicht noch cpp reinziehen.
Das ist auch nicht erforderlich.
Python ist eine neue Entwicklung und mittlerweile sehr verbreitet.
Heutzutage lernt man ja nicht mehr nach Büchern, obwohl ich 1 gutes habe.
Durch das Internet kann man sehr gut und bequem "nachforschen". So bin ich auch dahinter gekommen, wie die Zusammenhänge bei Qt4 liegen.
Die statischen Bilder lassen sich mit qt-designer eigentlich schnell erzeugen, die Geschichte mit den Slots und den Signale ist etwas tricky, aber das ist eben so bei Trolltech.
Wenn wir den Designer jetzt einsetzen werden/sollten, dann werd ich mich mal nach einer kommerziellen Lizens umsehen.
Bis dann, aber nicht so lieber Hyperion :idea:
BlackJack

@3ff: Dir hat niemand erklären wollen was ein Programmgenerator ist -- Du hast behauptet Qt wäre einer und das ist eben nicht der Fall. `pyuic4` ist ein Programmgenerator, aber es ist halt nur ein einzelnes Werkzeug um aus den Erzeugnissen einer Anwendung -- dem Qt-Designer -- für Python und einer Bibliothek für die Verwendung von Qt, Quelltext zu erzeugen. `pyuic4` != Qt.
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@BlackJack
Yeah,Yeah,Yeah
ich will das Kriegsbeil wieder vergraben, aber es wundert mich manchmal, wie manche Leute hier im Forum "runter gekanzelt" werden.
Natürlich war es nicht ganz druckreif, was ich geschrieben habe, aber mir waren auch gewisse Zusamenhänge nicht klar.
Für mich sind Beiträge, wie vom Mitstreiter hyperion, typisch für einen Generationenkonflikt.
Ich gehöre mit 65 Jahren zur Vor-Vorgeneration unter den Programmiern und da ich mir die vielen Amerikanismen, die heute so cool sind, nicht angewöhnen will, kommt es schon mal zu Missverständnissen.
Noch einen anderen Aspekt möchte ich unterstreichen:
Das Internet vergisst nichts. Es ist unglaublich, wer , wo, und wann Beiträge in diesem Forum gelesen werden. Das hängt natürlich auch mit Python zusammen.
Beim Editieren von Beiträgen muß man schon aufpassen. Ich habe keinen Personalchef mehr zu befürchten aber wir alle wissen, das man gezielt nach Beiträgen gewisser IP-Adressen suchen kann oder suchen lassen kann.
Als ich mit Python anfing, fühlte ich mich erinnert an REXX von IBM, damals als OS/2 noch jung und aktuell war. Damals konnte man sich
a) über Kurse
b) Bücher
etc. einlesen.
Python ist nicht REXX, das ich da nicht mißverstanden werde.
Python wird heute hauptsächlich übers Web verbreitet und ohne zu Bingen (ich google nicht und lass auch nicht googeln) geht natürlich nicht viel.
Zu Python gibts mittlerweile auch einige Foren....
Wenn ich mir gewisse Beiträge gewisser Moderatoren hier anschaue, dann entsteht der Eindruck, als wäre dies Forum von Eliten für Eliten.
Python ist schon sehr aktuell wegen der Übersichtlichkeit im Gegensatz zu Pearl oder Cpp und wegen der aktuellen Anbindungen an neueste Entwicklungen.
Sei es die Sockets, sei es die Datenbankanbindung, sei es die Browser sei es die USB-Anbindung etc.
Da Python offenbar dezentral entwickelt wird, hab ich den Eindruck, da ist mittlerweile zuviel reingepackt worden.
Ich betreue im Moment ein Projekt aus dem Bereich WiFi mit Frequenzen über 2,1 Giga herz. da gibts was für python aber die wirklich zeitkritischen Sachen müssen in Assembler geschrieben werden.
Da bewährt sich wieder der alte deutsche Grundsatz: Gelernt ist Gelernt:
Trotzdem gilt: nobody is perfect und da kommen die Foren wieder ins Spiel.
Noch 1 schönen Tag. :idea: :idea:
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Wir wollen doch nun wohl nicht in einem Mißverständnis das von dir ausgegangen ist, einen Generationenkonflikt konstatieren?
Das halte ich schon für etwas übertrieben.

Es gibt übrigens auch schöne deutsche Wörter für Framework, du kannst es ja "Programmiergerüst" oder "Oberflächenbibliothek" bzw. "Oberflächenprogrammierpaket" nennen, da wird dich keiner kritisieren. "Framework" oder "GUI-Paket" ist halt kürzer, deshalb wird es wohl auch öfter vorgezogen.

Du willst ein statisches Bild animieren?
Bitte konkretisiere deine gewünschte Tätigkeit etwas, vorerst kannst du dir ja folgendes durchlesen:
* http://doc.trolltech.com/solutions/4/qt ... ation.html
* Bzw. die entsprechenden PyQt-Dokumentationen, wie z.B. http://www.riverbankcomputing.co.uk/sta ... ation.html
BlackJack

@philistion: Bin selbst kein Freund von unnötigen Anglizismen und übersetze “Framework” in der Regel als “Rahmenwerk”.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

3ff hat geschrieben:Da bewährt sich wieder der alte deutsche Grundsatz: Gelernt ist Gelernt:
Zum Gelernten gehören eben auch fachgebietsspezifische termini technici. Werden diese durch unübliche Umschreibungen ersetzt, stößt das auf einiges Unverständnis mit dem Hinweis, sich dieser Grundlagen zunächst anzunehmen. Ich glaube, dass Hyperion hierauf hinweisen wollte (wenn vllt. auch etwas unglücklich formuliert). Nun gut...

Meine erste Frage wäre, welchen Anspruch/welches Ziel verfolgst Du bzw. wie weit bist Du gewillt, die Qt-Programmierung zu durchdringen. Eine kleine Öberflächenanwendung ist relativ schnell ohne tiefergehende Qt-Programmierungskenntnisse mithilfe der Qt-eigenen Tutorials zusammengebastelt (http://doc.qt.nokia.com/4.6/tutorials.html). Als alter SPS-C-Hase gehörte Desktop-Anwendungsprogrammierung wahrscheinlich nicht zu Deinen Hauptaufgaben, so dass Du für ein tieferes Verständnis und später sauberen und wiederverwendbaren Code vllt. weitere Grundlagen und Paradigmen (auch jenseits von Qt) aneignen müsstest. Dinge, die mir hier spontan einfallen, sind z.B.
- OOP und MVC
- GUI-Ereignisssteuerung
- GUI-Multithreading
- Signal/Slots
Zu fast allen Punkten gibts es in der Qt-Dokumentation (http://doc.qt.nokia.com/4.6/index.html) Qt-spezifische Ausführungen, leider sich die alle auf C++ gemünzt. Um am Ziel nicht vorbeizuschiessen, kann ich Dir in puncto PyQt das Buch von Mark Summerfield Rapid GUI Programming with Python and QT empfehlen. Es behandelt neben einer kleinen Einführung zu Python alle diese Dinge für PyQt.

Grüsse jerch
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

BlackJack hat geschrieben:@philistion: Bin selbst kein Freund von unnötigen Anglizismen und übersetze “Framework” in der Regel als “Rahmenwerk”.
Ja das ist auch eine gute Übersetzung, klingt anfangs etwas ungewohnt, aber es muss sich eben in einer Gemeinschaft (fast hätte ich jetzt Community geschrieben) erst einbürgern.
Ich plädiere auch dafür, entweder ganz in Englisch zu schreiben oder ganz in Deutsch, von wenigen Ausnahmen wo sich keine passende Übersetzung finden lässt, ausgenommen.
Aber dieses Phänomen der Anglizismen-Vermischung finden wir ja nicht nur im IT-Bereich sondern quer durch die Gesellschaft.


@3ff
Schön dass du mit Python weitermachen möchtest, wenn du allerdings schon ein versierter C-Programmierer bist, würde ich den Aufwand sogar noch als geringer einstufen, wenn du dich kurz mit den wichtigsten Konzepten von C++ auseinandersetzt (v.a. mit den Klassen) und dann direkt mit Qt per Cpp anfängst.
Aber für einige Aufgaben ist Python einfach eleganter, v.a. für alltägliche Tätigkeiten muss man mit C immer alles selbst machen, Python nimmt einem da schon viel ab und der Code bleibt kleiner.
lunar

Mit C++ hat C fast ebenso wenig zu tun wie mit Python. Beide Sprachen unterscheiden sich deutlich von C, und dementsprechend ist es ziemlich egal, ob man C++ oder Python lernt. Hilfreich sind C-Kenntnisse bei keiner dieser Sprachen ...
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@phillistion etal.
success,
mein 1. Bild steht und wird animiert sic.
es ist allerdings ne harte Nuss ohne jegliche Unterlagen sich an QT zu wagen.
Mein früherer Chef hatte mich gebeten, mich "mal" in Qt reinzuhängen, aber es ist eine größere Sache und wahrscheinlich fangen erst jetzt die Fragen an.
Was ist passiert?
Ich hab 1 MainWindow erzeugt mit einem Button im Designer. Dem slot editor hab ich folgendes zu fressen gegeben.
Sender toolbutton
receiver MainWindow
signal clicked
slot connect
dann hab ich den sagenhaften Programmgenerator angetippt:
pyui4 -o file_ui.ui file.ui
er erzeugt ein Pytonfile: file_ui.py
Jetzt muss die Klasse MainWindow angesprochen werden:
da gibt es jetzt verschiedene Wege.
riverbankcomputing.com gibt da einige Lösungen an.
Ich hab die einfachste gewählt: Aufruf aus einem neuen File ohne Vererbung.
Es funktioniert und ich hab wahrscheinlich nächste Woche 1 Reise nach Mexico gewonnen.
Ich möchte mich erstmal bei allen Beteiligten bedanken.
Ich hab natürlich im laufe meines Lebens schon mit Programmgeneratoren zu tun gehabt.
Vor Jahren gabs mal 1 Produkt aus Israel, das wir benutzten, um Daten aus einer Sie-neh-mens-S5 rauszuholen (über die Serielle SS) und dann eine Rezepturverwaltung zu machen auf dem PC mit 256 KByte Hauptspeicher.
Das würd man heute mit DSL ganz anders machen.
ich bin erstmal froh, das mein Qt4 läuft und (Einschränkung ein) man kann schnell und professionell grafische Oberflächen erstellen , wenn man weiß, wie der hase läuft(Einschränkung aus)
8) 8) 8)
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

lunar hat geschrieben:Hilfreich sind C-Kenntnisse bei keiner dieser Sprachen ...
Natürlich hat man mit C-Kenntnissen Vorteile bei C++, denn alle Hauptelemente der Syntax sind gleich geblieben. Es gab einige kleine Änderungen und viele Erweiterungen, das Grundgerüst ist aber gleich geblieben, deshalb heißt es ja auch C++ und nicht XY.
Es wurde als Erweiterung (!) zum C90 Standard entworfen, und du willst nun den Leuten hier weismachen, dass man besser gleich die Erweiterung lernen sollte und einem die Grundsprache keine Vorteile in der Erlernung der Erweiterung bieten? Ziemlich lächerlich..

Alle Grundlagenkenntnisse, also wie man Schleifen, Abfragen oder Funktionen schreibt oder aber wie man ordentlich mit Pointern umgehen kann, das alles ist in C und C++ klarerweise gleich. Von kleinen Änderungen wie z.B. dass man" in C++ besser cout statt printf verwenden soll (!= "muss") kann man hier glaube ich absehen.

Die wichtigsten Erweiterungen, also die Klassen, (Mehrfach)vererbung, das Template-System, Namespaces und das Überladen, kann man gut dazulernen.

Deshalb sind die meisten C++ Bücher auch nur gefüllt mit Informationen zu den Erweiterungen, Grundlagenkenntnisse in C werden meist aus gutem Grund vorausgesetzt.

C-Kenntnisse sind also für C++ nicht nur hilfreich, sondern absolut notwendig.
lunar

C++ ist keine Erweiterung zu C90, sondern ganze zehn Jahre älter als dieser Standard. Im Übrigen sind nach heutigem C++-Standard übliche und essentielle C-Konstrukte wie implizite void*-Konvertierungen kein gültiges C++. "T *foo = malloc(sizeof(T));" ist gültiges und übliches C, aber kein gültiges C++.

Im Allgemeinen hat C++ eigene Paradigmen und eigene Idiome, die sich von C stark unterscheiden. C ist nun mal nicht stark genug, um Funktoren, generische Algorithmen, generische Container, usw. auszudrücken, alles übliche und idiomatische C++-Konstrukte. Während in C Schleifen die einzige Möglichkeit zur Iteration sind, verwendet man in idiomatischem C++ Iteratoren und generische Algorithmen.

Ansonsten mögen Schleifen und Abfragen noch die gleiche Syntax haben, aber schon der Umgang mit Zeigern unterscheidet sich C++ beträchtlich von C. Mit C kann man nur auf eine Weise, nämlich direkt, mit Zeigern umgehen, und dementsprechend ist das auch „ordentlich“. In C++ ist der direkte Umgang mit Zeigern dagegen alles andere als „ordentlich“, u.a. weil rohe Zeiger in Verbindung mit Ausnahmen Speicherlecks verursachen. Stattdessen verwendet man sichere Zeiger (e.g. "shared_ptr", "auto_ptr" oder die Qt-Typen "QPointer", "QSharedPointer" und "QScopedPointer").

Davon abgesehen lernt man Klassen und insbesondere Templates als alter C-Programmierer nicht mal ebenso nebenbei, denn diese Themen sind (wie die gesamte Sprache) höchst komplex, und verlangen vom Programmierer viel Detail-Kenntnis.
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Dass C++ als Erweiterung zum C90 Standard entworfen wurde und dazu kompatibel ist (ok: war ;)) steht nicht nur in der gängigsten Literatur, nein sogar auf Wikipedia steht es: http://de.wikipedia.org/wiki/C%2B%2B#Ko ... .A4t_mit_C

Dass sich sowohl der C++ als auch der C-Standard unabhängig voneinander weiter entwickeln ist klar und dass sich daraus etwaige Inkompatibilitäten ergeben auch, aber für den gängigen Programmierer hat das doch nicht wirklich viel Bedeutung.

Mir ist bewusst, dass C++ eine große Vielfalt an Syntax bietet, die zu verstehen doch eine recht große Lernzeit bedarf, für das Verwenden eines Qt-Frameworks reicht aber die Kenntnis von C sowie aus der C++ Ecke die Kenntnis von Klassen und einigen anderen Details völlig aus. Natürlich gibt es auch dort Templates und Iteratoren, aber es ist nicht essentiell notwendig für ein simples Qt-Programm darüber Bescheid zu wissen, das Wissen kann man sich ja dann nach und nach aneignen.

Es ging mir eigenltich nur um die Feststellung dass jemand der schon C-Kenntnisse hat, sich eigentlich dann nur mehr mit den Klassen auseinandersetzen muss, um mit Qt loslegen zu können. Alles andere kann man ja dann behandeln wenn es irgendwo auftritt.
Braucht man z.B. einen QValueListIterator, ist es früh genug sich mit der Funktionsweise eines Iterators auseinanderzusetzen.

Steigt man hingegen ganz auf eine andere Sprache um, muss man alles neu lernen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

philistion hat geschrieben:Dass C++ als Erweiterung zum C90 Standard entworfen wurde und dazu kompatibel ist (ok: war ;)) steht nicht nur in der gängigsten Literatur, nein sogar auf Wikipedia steht es: http://de.wikipedia.org/wiki/C%2B%2B#Ko ... .A4t_mit_C
Das macht es nicht richtiger.

Wenn ich jetzt die englische Wikipedia-Zitiere wird die temporale Unmöglichkeit dieser Aussage klar:
It was developed by Bjarne Stroustrup starting in 1979 at Bell Labs as an enhancement to the C programming language and originally named C with Classes. It was renamed C++ in 1983
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

langsam macht Qt Spass...
Ich hab mal eben 1 kleinen Editor "designed" dann mal ein kleines Einstellungswidget mit einem Anzeigewert.
Das klappt alles sehr gut und geht verdammt schnell.
jetzt möchte man ja aber auch nicht nur "Hallo Welt" schreiben, sondern mit Hintergrundprogrammen arbeiten, um z.B. eine Messwerterfassung zu machen oder drucken oder im Web unterwegs sein.
Frage: Muß man immer die Qt-Bibliothen benutzen?
Streng genommen kämen die dann ja von riverbankcomputing.
Oder kann ich auch innerhalb des Programms auf Libraries von Python wechseln?
Was Cpp angeht, da kann ich leider nicht mitreden. Ich persönlich finde Python-Code wesentlich übersichtlicher zu lesen und nachzuvollziehen.
Qt gibts übrigens auch für pascal und ruby und für andere Programmiersprachen. Ich kann mir auch vorstellen, das Qt Plattformunabhängig ist. D.h. ein Source, der auf Unix läuft, der ist auf Windows leicht übertragbar. Oder eben auf Symbian für gewisse handys.
Für Nokia wäre das natürlich wichtig und in dem Bereich intelligente Telefone tut sich ja auch viel.
Grüße Fritz 8)
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Leonidas hat geschrieben:
philistion hat geschrieben:Dass C++ als Erweiterung zum C90 Standard entworfen wurde und dazu kompatibel ist (ok: war ;)) steht nicht nur in der gängigsten Literatur, nein sogar auf Wikipedia steht es: http://de.wikipedia.org/wiki/C%2B%2B#Ko ... .A4t_mit_C
Das macht es nicht richtiger.

Wenn ich jetzt die englische Wikipedia-Zitiere wird die temporale Unmöglichkeit dieser Aussage klar:
It was developed by Bjarne Stroustrup starting in 1979 at Bell Labs as an enhancement to the C programming language and originally named C with Classes. It was renamed C++ in 1983
Temporal unmöglich ist das nicht, wenn man weiß, dass der C++ ISO-Standard erstmalig 1991 verabschiedet wurde. Es liegt somit ja auf der Hand dass sie sich den gerade kürzlich für C verabschiedeten C90 Standard zu Herzen nahmen um so kompatibel wie nur möglich zu sein.
lunar

@philistion: Ich bitte Dich um eine Quelle für die Behauptung, der erste C++-Standard käme aus dem Jahre 1991.

Ansonsten finde ich die Diskussion langsam überflüssig. C ist eine einfache und triviale Sprache, und kein Vergleich zur Komplexität von C++, eine Sprache, die im Allgemeinen weit über Schleifen hinaus geht. Darüber hinaus ist C keine Grundsprache von C++, sondern nur weitestgehend(!) kompatibel zu C++. C-Idiome finden sich in idiomatischem C++ nicht, C++ hat seine eigenen Konzepte. Natürlich kann die C-Idiome trotzdem anwenden, dann aber schreibt man auch C und kein C++. Der Wert von C-Kenntnissen für idiomatisches C++ ist dementsprechend gering, geringer sogar als der Wert von Java- oder Python-Kenntnissen für C++. C ist als Sprache viel zu begrenzt und viel zu schwach, um überhaupt eine gute Grundlage für irgendeine andere Programmiersprache darzustellen, da nahezu jedes höhere und moderne Konzept in C nicht vorhanden ist.

Natürlich sind Iteratoren und Templates für ein einfaches Qt-Programm nicht essentiell notwendig, das gilt aber auch für C-Kenntnisse. for-Schleifen und Funktionsdeklarationen sind trivial und schnell gelernt, wenn man Erfahrung mit anderen Sprachen hat. Es sind die mächtigeren und komplexeren Konzepte wie Templates, die schwierig zu verstehen sind, und da hilft C schlicht gar nicht mehr, denn C hat keine komplexen Konzepte und Idiome.
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Da gibt es viele, nehmen wir doch ein Paper vom C++ Gründer Stroustrup: http://www2.research.att.com/~bs/hopl-almost-final.pdf
Bjarne Stroustrup hat geschrieben:This paper outlines the history of the C++ programming language from the early days of its ISO standardization (1991), through the 1998 ISO standard...
Ich stimme dir ja in deinen Ausführungen zu idiomatischem C++ zu, will man Templates verstehen, hilft einem C nicht mehr. Ich wollte 3ff nur ermutigen, dass er wenn er schon C kann, sich nur mehr mit Klassen auseinandersetzen muss, dann kann er in "C with Classes" Qt-Programme schreiben..

Es klang halt so, als wäre es nun schon nahezu unmöglich Qt nicht von Python aus sondern von C++ aus zu programmieren, da diese unglaublich komplizierte Sprache so eine große Hürde darstelle. Und dies ist in Anbetracht der notwendigen Syntax für Qt doch ein wenig zu relativieren.
Antworten