ich bin 14 und programmiere seit ein paar Wochen mit perl und auf der shell. Ich finde habe z.B. java und qt auch interessant. Ich kenne mich allerdings in der Tiefe damit nicht aus. Aber von Konzept finde ich qt sogar besser als java. Oder liege ich da völlig falsch? Vobei qt nur eine gui ist und java eine komplette Umgebung. Aber wie ist dann z.B. Opera programiert? Mit qt und c++???
Also erstmal eine kleine Richtigstellung: QT ist keine Programmiersprache sondern ein Toolkit womit du grafische Oberflächen erstellen kannst (vereinfacht gesagt). Wie Opera programmiert ist weiss ich leider nicht. Aber unter
http://de.wikibooks.org/wiki/Programmieren
findest du einen guten Einstieg, der einige deiner Fragen zumindest aufgreift. JAVA zu lernen ist mit Sicherheit kein Fehler. Aber dann solltest du dir auch nochmal C/C++ ansehen. Aber mit Java kannst schon mal nichts falsch machen. Dazu sind die beiden Online-Bücher ganz gut zu gebrauchen.
Qt ist ein Toolkit fuer C++ und GUI anwendungen (hat aber auch noch weitere klassen die ueber GUI hinausgehen, wie zB fuers Netzwerk). Es laeuft unter allen gaengigen Unixen (darunter Linux) und Windows. In seinen Cross-platform eingenschaften ist es IMO die beste zZ verfuegbare technology (auch besser als Java).
Daneben gibt es noch Gtk+ (mit einem Wrapper fuer C++ namens gtk--). Das wxWidgets widget set (frueher wxWindows http://www.wxwindows.org/) und das FOXToolkit( http://www.fox-toolkit.org/). Beide C++.
Fuer Opera gilt vermutlich das gleiche wie fuer (fast ) alle grossen Apps: Er duerfte in C/C++ geschrieben sein. Mozilla / Firefox usw. sind in C++ geschrieben. OpenOffice ist zu 95% in C++ geschrieben (und nichr in Java wie manchmal faelschlicherweise behauptet wird). Fuer grosse Apps die eine GUI haben gibt es IMO keine Alternativen zu C++. Evtl. mischformen wo ich Python, Perl oder was auch immer benutze um C/C++ aufzurufen.
>> Fuer grosse Apps die eine GUI haben gibt es IMO keine Alternativen zu C++.
Interessante Behauptung. Wäre noch nett, wenn du dazuschreiben würdest warum. Wegen OO, weil der Code besser organisiert ist als in C-Projekten? -> C++ ist IMHO nicht gerade die reinste OO-Sprache, es kommt hier sehr viel auf die Verwendung udn Disziplin der Entwickler an. Wegen der Performance? -> Beispiele für performante GUIs gibts in jeder Sprache genug. Weil das Projekt dick ist? -> Die dicksten Projekte sind heutzutage Business-Projekte, und die laufen in der Regel auf einem Applikation-Server, und der ist in Java. Weil es vor zehn Jahren in der Tat so war und noch heute die verbliebenen C++Programmierer GUIs gut können. Das wirds wohl sein.
Seien wir froh, dass es viele gute und bessere Alternativen gibt, und die IT bzw. Informatik nicht seit zehn Jahren einfach stehen geblieben ist. :-)
Und: Denk mal an Web-Anwendungen (in Intranets). Ich würde sagen, dass sehr viele der (neuen) großen Apps mittlerweile eine Weboberfläche haben. Wenn man nun das ganze Internet als extrem grosse Applikation betrachtet, dann ... ;-) Natürlich sind viele Webanwendungen nicht besonders "rich", muss man wohl dazusagen. Und dass die weit verbereitesten Browser wohl in C++ (oder doch C???) geschrieben sind auch.
--> Immer auch die Nachteile zu erwähnen, adelt die Meinung, IMHO :-)
"C++ ist IMHO nicht gerade die reinste OO-Sprache"
C++ ist eine "multi-paradigm" (O-ton des erfinders) Sprache. Hat nur ne weile gedauert bis ich das verstanden hatte. Neben OOP bietet C++ auch templates und rein funktionelles programmieren (was durchaus seine darseinsberechtigung hat). Man KANN sich aussuchen wie man mit C++ programmiert. Und das ist genau das was ich an C++ so mag.
D.h. ob eine Sprache "rein OOP" ist ist fuer mich nicht entscheident. Smalltalk war sicher die reinste OOP Sprache aller Zeiten trotzdem benutzt sie heute kaum einer mehr.
Wie gut ein Code organisiert (sprich: designed) ist ist keine frage von OOP oder nicht. Sondern eine frage des guten designers. Disziplin brauchste da immer.
"Wegen der Performance? -> Beispiele für performante GUIs gibts in jeder Sprache genug." In Java nur selten. Es wird gerne Eclipse genannt. Aber ich finde Eclipse eher lahm. Andere Java apps kenne ich nicht. Es gibt einfach zu wenige davon. Wo sind denn die in Java geschriebenen Browser 8 Jahre nach der Erfindung von Java? Hotjava?? HAHAHAHA!!
"Die dicksten Projekte sind heutzutage Business-Projekte," Was ist dick? TLOC? Was hat ein App-Server mit einer clientseitigen GUI Anwendung zu tun? Wer sagt dass ein App-Server in Java sein MUSS? (aehnliche frameworks gibts auch fuer C++; ausserdem gehts ja auch ueber CORBA).
"Weil es vor zehn Jahren in der Tat so war und noch heute die verbliebenen C++Programmierer GUIs gut können. Das wirds wohl sein. " Jo. Genau. Deshalb ist Qt vermutlich sogar so ein erfolg (ist erst seit 5 Jahren populaer). Deshalb ist Genome (GTK+) und KDE (Qt) auch in Java geschrieben, was? Projekte die beide deutlich juenger sind als 10 jahre und mit sicherheit nicht von C++ "Opis" geschrieben wurden.
" Seien wir froh, dass es viele gute und bessere Alternativen gibt, und die IT bzw. Informatik nicht seit zehn Jahren einfach stehen geblieben ist.:-) " OH JA. Da geb ich dir recht. Ich bin auch froh das es beute Perl, Ruby, Qt usw. gibt und wir nicht mehr mit TCL/TK und Motif rummachen muessen.
Hey.. es gibt neben Java auch noch andere innovative(re) dinge in der IT branche. Zum glueck. Java ist doch nur ne schlechte kopie von C++ mit GC. Da sind PHP, Ruby und Python ja 100x innovativer.
"Denk mal an Web-Anwendungen (in Intranets). Ich würde sagen, dass sehr viele der (neuen) großen Apps mittlerweile eine Weboberfläche haben. Wenn man nun das ganze Internet als extrem grosse Applikation betrachtet, dann .. " Das hat wieder nix mit Java zu tun. Ich wuerde ne Web anwendung mit PHP (evtl. Perl) machen und die performance-kritischen teile mit C/C++. Andere Leute anders. Mir egal. /Ich/ finde halt JSPs zum kotzen. Und offenbar bin ich da nicht allein. Es gibt ne menge PHP im Netz.
QT würde ich mal lapidar mit Swing unter Java vergleichen.
QT bzw Swing sind einfach ein Paket an Klassen, mit Hilfe derer du GUIs easy und schnelle bauen kannst.
Die meisten Leute, die an Java denken, haben immer sowas wie Applets oder normale PC Anwednugen im Kopf, dabei ist Java weitaus mehr.
Java für Handys J2ME, Java für Server J2EE und halt die normale J2SE.
Und Java für Handys ist wirklich Klasse und stark im kommen, wenn du dir mal anguckst wie mühselig du dort C++ Anwendungen schreibst z.B. für Symbian OS, da ist Java der absolute Hammer, leider ist C++ aber halt immer noch mächtiger.
Ich war auch mal 14 (vor drei Jahren) und wollte Programmieren lernen. Ich habe das Gefühl, dass du wie ich damals versuchst, die "richtige" Sprache zu wählen. Die gibt's nicht, glaub mir. Und je mehr Sprachen man beherrscht (nicht nur die Syntax, sondern vor allen Dingen die Philosophie), desto besser kann man programmieren.
Ich habe mich damals für C++ entschieden (ich konnte vorher schon ein bisschen programmieren). Keine gute Wahl. Nach ein paar Wochen dachte ich, ich hätte die Grundzüge verstanden, bis ich eines Besserem belehrt wurde. Nach ein paar Monaten dachte ich dann wieder, dass ich jetzt die Sprache verstanden hätte; wieder falsch. Erst jetzt, wo ich wirklich mit der STL und der generativen Programmierung vertraut bin, wage ich zu behaupten, ich könnte einigermaßen mit C++ umgehen. Schuld sind auch teilweise die Lehrbücher, ich kenne kein gutes deutsches, das einzige was mir überhaupt für absolute Programmieranfänger einfällt ist "accelerated c++".
Ich würde auch nicht Java nehmen, das zwingt einem gleich eine Art Pseudo OOP auf, obwohl man die am Anfang noch gar nicht versteht. Perl würde ich auch nicht nehmen. Es gibt keine klaren "Perl-Way", stattdessen TIMTOWDI, nicht gut für den Anfang. Ich würd mir mal Python anschauen, oder Ruby. Leicht zu lernen und wesentlich leichter zu lesen als Perl. Für Python gibt's auch Bindings an qt, falls du das später mal benutzen willst (erst solltest du gute Grundkenntnisse im Programmieren haben. GUI-Programmierung ist so eine Sache)
Obwohl ich jetzt schon was laenger programmiere hatte ich lange zeit genau das gleiche problem wie du: Kein gutes Lehrbuch zu C++.
Und ich geb dir recht, "Accelerated C++" ist wirklich die beste Wahl. Auf dieses Buch hat die Welt zu lange warten muessen. :-) Zumal die da "echtes" C++ machen (string, templates..usw) anstatt wie viele andere buecher eine art von C mit Klassen.
aber achte mal darauf: Diese Bücher sind nur Bücher für "Lehrlinge".
Wer mal richtige(TM) SW mit Java geschrieben hat, und dabei auch noch mit einem Team zusammengearbeitet hat, weis, dass man dann um die fortgeschrittenen Schnittstellen nicht herumkommt.
Und zu fast jeder Schnittstelle(Swing, EJB, Servlets, JNDI, Web-Services usw. usf.) gibt es wieder dicke Schinken bei den jeweiligen Verlagen.
Also ist das ganze nur "böse Geldmacherei"(TM) ;-)
--> Klingt komisch der Satz. Da fehlt bestimmt "heran und".
Ich finde habe z.B. java und qt auch interessant. Ich kenne mich allerdings in der Tiefe damit nicht aus. Aber von Konzept finde ich qt sogar besser als java.
Oder liege ich da völlig falsch?
Vobei qt nur eine gui ist und java eine komplette Umgebung. Aber wie ist dann z.B. Opera programiert? Mit qt und c++???
http://de.wikibooks.org/wiki/Programmieren
findest du einen guten Einstieg, der einige deiner Fragen zumindest aufgreift. JAVA zu lernen ist mit Sicherheit kein Fehler. Aber dann solltest du dir auch nochmal C/C++ ansehen. Aber mit Java kannst schon mal nichts falsch machen. Dazu sind die beiden Online-Bücher ganz gut zu gebrauchen.
Viel Spass beim Programmieren wünscht,
Horatio
die ueber GUI hinausgehen, wie zB fuers Netzwerk). Es laeuft unter allen gaengigen
Unixen (darunter Linux) und Windows. In seinen Cross-platform eingenschaften ist
es IMO die beste zZ verfuegbare technology (auch besser als Java).
Daneben gibt es noch Gtk+ (mit einem Wrapper fuer C++ namens gtk--). Das
wxWidgets widget set (frueher wxWindows http://www.wxwindows.org/) und
das FOXToolkit( http://www.fox-toolkit.org/). Beide C++.
Fuer Opera gilt vermutlich das gleiche wie fuer (fast ) alle grossen Apps: Er duerfte
in C/C++ geschrieben sein. Mozilla / Firefox usw. sind in C++ geschrieben.
OpenOffice ist zu 95% in C++ geschrieben (und nichr in Java wie manchmal
faelschlicherweise behauptet wird). Fuer grosse Apps die eine GUI haben
gibt es IMO keine Alternativen zu C++. Evtl. mischformen wo ich Python,
Perl oder was auch immer benutze um C/C++ aufzurufen.
Happy Coding!
o13
Interessante Behauptung. Wäre noch nett, wenn du dazuschreiben würdest warum.
Wegen OO, weil der Code besser organisiert ist als in C-Projekten? -> C++ ist IMHO nicht gerade die reinste OO-Sprache, es kommt hier sehr viel auf die Verwendung udn Disziplin der Entwickler an.
Wegen der Performance? -> Beispiele für performante GUIs gibts in jeder Sprache genug.
Weil das Projekt dick ist? -> Die dicksten Projekte sind heutzutage Business-Projekte, und die laufen in der Regel auf einem Applikation-Server, und der ist in Java.
Weil es vor zehn Jahren in der Tat so war und noch heute die verbliebenen C++Programmierer GUIs gut können. Das wirds wohl sein.
Seien wir froh, dass es viele gute und bessere Alternativen gibt, und die IT bzw. Informatik nicht seit zehn Jahren einfach stehen geblieben ist. :-)
Und:
Denk mal an Web-Anwendungen (in Intranets). Ich würde sagen, dass sehr viele der (neuen) großen Apps mittlerweile eine Weboberfläche haben. Wenn man nun das ganze Internet als extrem grosse Applikation betrachtet, dann ... ;-)
Natürlich sind viele Webanwendungen nicht besonders "rich", muss man wohl dazusagen.
Und dass die weit verbereitesten Browser wohl in C++ (oder doch C???) geschrieben sind auch.
--> Immer auch die Nachteile zu erwähnen, adelt die Meinung, IMHO :-)
Greets
C++ ist eine "multi-paradigm" (O-ton des erfinders) Sprache. Hat nur
ne weile gedauert bis ich das verstanden hatte. Neben OOP bietet C++
auch templates und rein funktionelles programmieren (was durchaus seine
darseinsberechtigung hat). Man KANN sich aussuchen wie man mit C++
programmiert. Und das ist genau das was ich an C++ so mag.
D.h. ob eine Sprache "rein OOP" ist ist fuer mich nicht entscheident.
Smalltalk war sicher die reinste OOP Sprache aller Zeiten trotzdem
benutzt sie heute kaum einer mehr.
Wie gut ein Code organisiert (sprich: designed) ist ist keine frage
von OOP oder nicht. Sondern eine frage des guten designers. Disziplin
brauchste da immer.
"Wegen der Performance? -> Beispiele für performante GUIs gibts in jeder Sprache genug."
In Java nur selten. Es wird gerne Eclipse genannt. Aber ich finde Eclipse
eher lahm. Andere Java apps kenne ich nicht. Es gibt einfach zu wenige davon.
Wo sind denn die in Java geschriebenen Browser 8 Jahre nach der Erfindung
von Java? Hotjava?? HAHAHAHA!!
"Die dicksten Projekte sind heutzutage Business-Projekte,"
Was ist dick? TLOC? Was hat ein App-Server mit einer clientseitigen GUI Anwendung
zu tun? Wer sagt dass ein App-Server in Java sein MUSS? (aehnliche frameworks
gibts auch fuer C++; ausserdem gehts ja auch ueber CORBA).
"Weil es vor zehn Jahren in der Tat so war und noch heute die verbliebenen C++Programmierer GUIs gut können. Das wirds wohl sein.
"
Jo. Genau. Deshalb ist Qt vermutlich sogar so ein erfolg (ist erst seit 5 Jahren populaer).
Deshalb ist Genome (GTK+) und
KDE (Qt) auch in Java geschrieben, was? Projekte die beide deutlich juenger
sind als 10 jahre und mit sicherheit nicht von C++ "Opis" geschrieben wurden.
"
Seien wir froh, dass es viele gute und bessere Alternativen gibt, und die IT bzw. Informatik nicht seit zehn Jahren einfach stehen geblieben ist.:-)
"
OH JA. Da geb ich dir recht. Ich bin auch froh das es beute Perl, Ruby, Qt usw. gibt und
wir nicht mehr mit TCL/TK und Motif rummachen muessen.
Hey.. es gibt neben Java auch noch andere innovative(re) dinge in der IT branche.
Zum glueck. Java ist doch nur ne schlechte kopie von C++ mit GC. Da sind PHP, Ruby und Python
ja 100x innovativer.
"Denk mal an Web-Anwendungen (in Intranets). Ich würde sagen, dass sehr viele der (neuen) großen Apps mittlerweile eine Weboberfläche haben. Wenn man nun das ganze Internet als extrem grosse Applikation betrachtet, dann ..
"
Das hat wieder nix mit Java zu tun. Ich wuerde ne Web anwendung mit PHP (evtl. Perl)
machen und die performance-kritischen teile mit C/C++. Andere Leute
anders. Mir egal. /Ich/ finde halt JSPs zum kotzen.
Und offenbar bin ich da nicht allein. Es gibt ne menge PHP im Netz.
o13
QT bzw Swing sind einfach ein Paket an Klassen, mit Hilfe derer du GUIs easy und schnelle bauen kannst.
Die meisten Leute, die an Java denken, haben immer sowas wie Applets oder normale PC Anwednugen im Kopf, dabei ist Java weitaus mehr.
Java für Handys J2ME, Java für Server J2EE und halt die normale J2SE.
Und Java für Handys ist wirklich Klasse und stark im kommen, wenn du dir mal anguckst wie mühselig du dort C++ Anwendungen schreibst z.B. für Symbian OS, da ist Java der absolute Hammer, leider ist C++ aber halt immer noch mächtiger.
So ganz kann man das aber nicht sagen.
(QT wurde geschrieben als es noch keine Namespaces und Co. gab.)
QT ist nicht nur eine GUI sondern QT erweitert auch die Sprache C++ um einige Features.
Diese Slots und co...
Kann man auch daran erkenne, dass man seine QT-Dateien erst noch mit einem MOC-Compiler durchforsten lassen muss bevor man normal kompilieren kann.
Und je mehr Sprachen man beherrscht (nicht nur die Syntax, sondern vor allen Dingen die Philosophie), desto besser kann man programmieren.
Ich habe mich damals für C++ entschieden (ich konnte vorher schon ein bisschen programmieren). Keine gute Wahl. Nach ein paar Wochen dachte ich, ich hätte die Grundzüge verstanden, bis ich eines Besserem belehrt wurde. Nach ein paar Monaten dachte ich dann wieder, dass ich jetzt die Sprache verstanden hätte; wieder falsch. Erst jetzt, wo ich wirklich mit der STL und der generativen Programmierung vertraut bin, wage ich zu behaupten, ich könnte einigermaßen mit C++ umgehen. Schuld sind auch teilweise die Lehrbücher, ich kenne kein gutes deutsches, das einzige was mir
überhaupt für absolute Programmieranfänger einfällt ist "accelerated c++".
Ich würde auch nicht Java nehmen, das zwingt einem gleich eine Art Pseudo OOP auf, obwohl man die am
Anfang noch gar nicht versteht.
Perl würde ich auch nicht nehmen. Es gibt keine klaren "Perl-Way", stattdessen TIMTOWDI, nicht gut für den Anfang.
Ich würd mir mal Python anschauen, oder Ruby. Leicht zu lernen und wesentlich leichter zu lesen als Perl. Für Python gibt's auch Bindings an qt, falls du das später mal benutzen willst (erst solltest
du gute Grundkenntnisse im Programmieren haben. GUI-Programmierung ist so eine Sache)
hatte ich lange zeit genau das gleiche problem wie du: Kein
gutes Lehrbuch zu C++.
Und ich geb dir recht,
"Accelerated C++" ist wirklich die beste Wahl.
Auf dieses Buch hat die Welt zu lange warten muessen. :-)
Zumal die da "echtes" C++ machen (string, templates..usw)
anstatt wie viele andere buecher eine art von C mit Klassen.
o13
Allo
Wer mal richtige(TM) SW mit Java geschrieben hat, und dabei auch noch mit einem Team zusammengearbeitet hat, weis, dass man dann um die fortgeschrittenen Schnittstellen nicht herumkommt.
Und zu fast jeder Schnittstelle(Swing, EJB, Servlets, JNDI, Web-Services usw. usf.) gibt es wieder dicke Schinken bei den jeweiligen Verlagen.
Also ist das ganze nur "böse Geldmacherei"(TM) ;-)