Oskar Welzl: Weblog zur Homepage

Nokia hat Recht: Qt ist einfach nur geil

Screenshots von Qt-Programm auf N900 (oben) und S60 (unten)Weil die Buben von Nokia gar so viel Werbung gemacht haben, hab ich mir das so hoch gelobte Qt-Entwicklerframework mal angesehen. Wir definieren für diesen Artikel:

Ich: Das ist jemand, der seit mehr als 10 Jahren nicht mehr ernsthaft programmiert hat - und mit so relativ komplexen Sprachen wie C++ überhaupt nie. Qt: Das ist freie Software und eine Erweiterung zu C++, die einerseits die Programmierung von grafischen Benutzeroberflächen erleichtert, vor allem aber die plattformunabhängige Programmierung ermöglichen soll. Nokia: Die Finnen, die 2008 die Firma hinter Qt gekauft haben und seither behaupten, daß man mit Qt die Welt retten kann. (Konkret versprechen sie ihren Partnern: Wer mit Qt programmiert, wird sein Programm ohne nennenswerte Änderung auf Symbian, Maemo und MeeGo zum Laufen bringen.)

Was soll ich sagen? Ich bin sprachlos. Ja, C++ ist ein kleines bißchen mühsam und hat eine relativ steile Lernkurve, wenn man noch nie zuvor Zeiger verbogen hat. Aber Nokias Versprechen stimmt: In Null Komma Nix war eine Applikation zusammengeklickt, die ich unter Symbian S60 3rd Edition (das sind die Telefone ohne Touchscreen), unter Maemo (N900), am Desktop unter Windows Vista und unter GNU/Linux (und zwar konkret im Gnome-Desktop) laufen lassen konnte. Ich hab grad mal zwei Wochenenden gebraucht, um das System zu durchblicken und ein Programm fertig zu haben.

Absolut geil dabei: Man muß zwar für jede Zielplattform extra compilieren, weil Qt eben (anders als z.B. Java) nicht mit einer virtuellen Maschine arbeitet, sondern die Programme wirklich nativ am jeweiligen System ausgeführt werden. Deshalb sehen sie auch so aus wie andere „echte“ Windows-/Maemo-/Symbian-/…-Applikationen. Aber man muß den Quellcode nicht ändern, wenn man zuerst für Symbian und dann für Windows compiliert. Es bleibt immer ein und das selbe Programm. (Selbstverständlich kann man mit bedingter Compilierung plattformspezifische Anpassungen vornehmen: Die Autorotation abhängig vom Lagesensor hab ich z.B. nur bei der Maemo-Version drin.)

Ich hab jetzt alles durchprobiert, was mir an Betriebssystemen zur Verfügung steht. No Problem. Daneben wird noch eine ganze Menge mehr unterstützt, angefangen vom neuen Symbian^3 über Windows Mobile bis hin zu OS X und (Trommelwirbel!) MeeGo. Ich glaub denen jetzt: Einmal programmieren und auf verschiedenen System laufen lassen, das geht mit Qt. Das geht mit Qt sogar sehr gut. Dahinter steckt Potential.

Ah ja, hätt ichs doch glatt vergessen: mein Programm! Was hab ich denn eigentlich programmiert? Also: Man hat zwei Eingabefelder für Zahlen, darunter den Button „Berechnen“. Wenn man auf diesen Button klickt, listet das Programm alle Primzahlen zwischen den beiden Werten in den Eingabefeldern auf. Dann gibts noch den Button „Löschen“, der löscht die Ergebnisliste wieder. Ja, eh. Aber eben plattformunabhängig und objektorientiert! (Kommentare bisher: Und sparst Du so die Mehrwertsteuer?; Kannst Du jetzt auch was Gscheites programmieren?; Ossi … - Du brauchst Freunde.)

 
schlosser meinte am :
Dumme Kommentare!
Ich finde das super!
Jetzt kannst bald für *mich* auch was programmieren! ;-)


(Wenn sich auch in meinem Kopf so ein gewisses Bild abzeichnet... der Ossi als Schulbub. Marke Streber, mit Sommersprossen und Hornbrille. hihi...

Wäre doch wirklich interessant, das begeisterte Kindergesicht vom jungen Herrn Oskar während der ersten EDV-Stunde sehen zu dürfen!) *gg* 
ossi1967 antwortete am :
Da war ich 14, glaub ich

Wenn ich mich richtig erinnere hatte ich meine erste EDV-Stunde mit 14. Damals hat man uns BASIC beigebracht. Und wir mußten dafür in eine andere Schule, weils in unserer keine PCs gab.

Was wolltest Du nochmal? So'n Lagerstandsding? Hast Dich nicht traut den Thomas fragen? :)

 
schlosser antwortete am :
Schon erledigt!
Da gab es sogar eine Datenbank-App für!
Aber irgendwie tätats mich auch jucken, (wieder) was zu programmieren.
Basic und Pascal. Das waren *meine* Programmiersprachen.
(meine Güte...wenn ich nur dran denk. Damals hatte ich einen Schneider-PC mit Kassettenspeichergerät. Ich glaube, der Hauptspeicher hatte 64kB und die Festplatte war groß wie ein Brotkasten. Mit unglaublichen 5MB oder so. ;-)
Der Monitor sah aus wie ein alter Telefunken-Fernseher, der Bildschirm war grün und hatte eine Auflösung von 30 x 50 Pixel oder so.
hejejejejejejejej...wo sind denn die ganzen Jahre hin? ;-) 
ossi1967 antwortete am :
Ja genau: BASIC und Pascal

Stimmt. Mit BASIC gings zur Schulzeit los: Zuerst am Atari 400, dann auf einem der ersten IBM-PCs. Anschließend ein kurzer Ausflug nach Turbo-Pascal, und daraus wurde dann Borland Delphi. Da konnte man dann schon hübsch objektorientiert rumtun.

Ein, zwei Delphi-Programme hatte ich sogar mal fürs Büro geschrieben damals. Kleine Helferlein für den Job bei der Datakom.

C++ mit Qt find ich deutlich schwerer. Ich wollt halt immer schon in die Nähe von C wenigstens, drum tu ichs mir an. Fürs schnelle Wieder-Programmieren-Lernen am N900 ist die Sprache Python wahrscheinlich viel geeigneter. Man kann auch aus Python heraus mit Qt arbeiten. Einziger Nachteil: Theoretisch ist das Programm langsamer als ein C++-Programm. Praktisch merkt an das eh nicht, solang Du keine Action-Spiele schreibst.

 
jukey meinte am :
Ich kann deine Euphorie gut nachvollziehen...
...bei der Präsentation von Daniel aus den QT Labs beim mobile freidae kam noch hinzu, dass mit Hilfe von QML sehr anschaulich und einfach Widgets z.B. für Benutzeroberflächen erzeugt werden können. Das habe sogar ich kapiert! :-) 
ossi1967 antwortete am :
QML Missing Link

Dem QML oben fehlt ein Link-Ziel. ;)

Ansonsten is grad QML das, was ich noch nicht mal überflogen hab. (Das kommt schon so modern und sexy rüber überall … Ich glaub das is nix für mich. *LOL*)

Im Moment schau ich grad, wie ich das resultierende Debian-Paket ein bißchen hübscher machen kann. Da hätten sie sich ruhig einen besseren Mechanismus einfallen lassen können, das is nur sehr rudimentär implementiert.

 
jukey meinte am :
Ups! :-) Hier der Link und QT-kritisches
Das hier ist ein guter Ausgangspunkt.

Wenige Zeilen Code generieren beachtliche, sich bewegende Objekte, Regieren auf Ereignisse usw.

Worauf ich aber ebenfalls noch hinweisen wollte ist quasi die gebloggte QT-Gegenposition die mir bei facebook zugespielt wurde. Ich fand es spannend zu lesen. Und ich muss diesen Käferfilm sehen. ;) 
ossi1967 antwortete am :
Kenn ich

Also: Den Film kenn ich. Eh nett. ;)

Der Artikel is hochinteressant … im Prinzip. Ich geb dem Autor vor allem in einem Punkt recht: Ich finde ebenfalls, daß die Ressourcen des Users 100x mehr wert sind als der Komfort des Programmierers. Wenn etwas in C geht, seh ich grundsätzlich mal überhaupt nicht ein, warums Python sein muß. Und C/GTK+ ist mir noch aus anderen Gründen viel sympathischer als C++/Qt.

Aber: Ich hab ja auch einen sehr speziellen Anwendungsfall. Mir gehts drum, irgendwie wieder ein bisserl ins Programmieren reinzukommen, mich dabei auch langsam C-ähnlichen Sprachen anzunähern, die praktischen Probleme beim Programmieren für Maemo kennenzulernen - und das alles schnell.

Da ist Qt für mich und jetzt einfach ein guter Kompromiß. Ich muß mich vor der Größe der Qt-Bibliotheken nicht fürchten, weil die am N900 eh vorinstalliert sind. Mir ist zwar der ganze qmake-Schnickschnack zuwider, aber auch automake und Freunde sind mir zu hoch … und im Prinzip schreib ich doch derzeit nur Spielzeugcode mit einer einzigen Quelltext-Datei.

In meiner perfekten Software-Welt gibt es nur Assembler und C. Da will ich hin. ;) Bis es soweit ist muß ich, vor allem als Werkzeug zum Lernen, Qt nehmen. Und ich glaub, trotz aller berechtigten Kritik: Als Brücke zwischen Symbian^1, Symbian^3, Symbian^4, Maemo 5, MeeGo/Harmattan und dem echten MeeGo wird Qt wahrscheinlich unschlagbar bleiben. Allein das ist es wohl wert, daß man sich weiter damit beschäftigt. ;)

 
Weitere Links zu …
GNU/Linux: