Wenn schon Objektorientiert, dann... mit welcher Sprache?
Wenn schon Objektorientiert, dann... mit welcher Sprache?
Beruflich bedingt komme ich von der Sprache C einfach nicht los. Das liegt daran, dass die meisten Projekte "embedded" Anwendungen sind. Und da gibt es außer Assembler nur C. Für die gelegentlichen GUI-Projekte verwende ich schon recht lange die ftlk-Library. Daraus resultiert auch ein gemäßigter C++ Einsatz. fltk ist zwar klasse, aber nutzt die Möglichkeiten von C++ und generell von OOP auch nicht voll aus. Geschweige denn die STL...
Mit dem Aufkommen der ersten Java-Artikel habe ich einen Blick riskiert. Aber die Geschwindigkeit und das AWT haben mich dann noch nicht überzeugen können.
Jetzt ist es mal wieder so weit. Ich habe von C++ mal wieder die Nase voll. Die Syntax gefällt mir einfach nicht. Die OOP-Features sehen im "C Code" wie Fremdkörper aus, und viele Toolkits nutzen die "neueren Standards" wie die stdlib (STL) einfach nicht aus. Entweder string wird nicht verwendet, oder die Listen-Widgets nutzen keine Container. Und dann noch die Aufteilung in Header und "Body".
Jetzt gibt es neben Objective-C auch noch Java+SWT oder Mono mit GTK#. Ganz alternativ kann man auch Python mit seinen vielen GUI-Anbindungen verwenden. Es sind einfach zu viele Möglichkeiten. Und für einen ernsthaften Wechsel braucht man einfach Erfahrungswerte "aus dem echten Leben". Und genau das ist der Grund, warum ich hier mal nach euren Erfahrungen fragen möchte.
Sprachen
Im Netz gibt es ja viele Sprachvergleiche. Diese vergleichen meist nur die reinen Sprachfeatures, und lassen das Arbeiten mit der Sprache (und auch mit dem Compiler) meistens außen vor. Nur, nicht jedes Feature ist sinnvoll, und nicht jedes vermisste Sprachelement macht das Arbeiten schwerer. Deswegen zählt hier einfach nur die praktische Erfahrung, die ein Stück Papier einfach nicht bieten kann.
Welche Sprache setzt ihr ein und warum glaubt ihr die richtige Wahl getroffen zu haben? C# hat wirklich ein paar interessante Features. Manches ist aber auch "zu viel des Guten". Welches sind eurer Meinung nach die "must have" Features, die eine Sprache hat, die Andere vielleicht aber nicht?
Mein ganz besonderer "Liebling" ist Objective-C. Darauf habe ich schon lange ein Augenmerk geworfen, aber bisher hatte ich noch nicht die Gelegenheit zu mehr. Die Möglichkeiten sind genial (wer sich schon mal Bundles angesehen hat, der weint, wenn er den Aufwand von plugins in C++ sieht)! Aber es ist halt was "ganz anderes" und zusammen mit GNUstep auch noch recht weit weg vom "Mainstream". Das ist generell nicht schlimm, aber die GNUstep-Entwicklung scheint ähnlich träge zu verlaufen, wie man es von Hurd her kennt. Obwohl sich das letzte halbe Jahr einiges bewegt hat. Setzt jemand auf Objective-C und GNUstep?
Oder ist gar Smalltalk --die Mutter von Objective-C-- die bessere Wahl?
GUI
Mit welchen Toolkits oder besser Frameworks schreibt ihr eure GUI-Programme? Was soll man nehmen, wenn man portabel bleiben muss?
Ich entwickle unter Debian und "portiere" dann für die Final-Release nach Windows. Ein Anforderung ist also der "saubere" Betrieb unter Windows und eine "normale" Installation der benötigten Basis. Bei fltk beschränkt sich das auf eine DLL. Für GTK2 gibt es ja schon fertige Installer.
Mein Seitenblick auf Objective-C hat sich auch unter diesen Anforderungen noch nicht gerächt. Auch hier gibt es die "Basis" bereits für Windows. Ich habe nur keine Ahnung wie stabil das läuft, und wie sich die Applikationen "anfühlen". Objective-C und GNUstep bilden zusammen mit der "IDE" GORM einfach eine toole Arbeitsplattform. Man muss sich nur mal länger auf dieses Gespann einlassen. Und dazu hat mir bisher die Zeit gefehlt.
Feeling...
Wie sind die Geschwindigkeiten der Bytecode-Interpreter? Es gab ja schon einige Threads, die das Thema angeschnitten haben. Wie schlägt sich mono gegen java -- Startupzeiten, Ausführungsgeschwindigkeiten, Speicherverbrauch?
Wenn ich mit Azureus mit SWT anschaue, dann "merke" ich von Java nicht mehr viel. SWING-Anwendungen wie "Pauker" oder "JEdit" (ja, denn habe ich mir auch mal angesehen) sind hingegen wieder (wie erwartet) langsam.
Wie schneiden die dynamisch getypten Sprachen wie Objective-C oder Smalltalk im Vergleich ab?
Leider habe ich hier bei mir kein Mono unter Linux am laufen. Unter XP macht die 1.1.6 einen zwiespältigen Eindruck. Aber ich habe auch keine brauchbaren Programme um hier was genaueres zu sagen.
Zum Schluß kann man ja noch Python mit einem Framework wie PyGTK mit in die Betrachtung einbeziehen. So ganz langsam ist dieses Gespann ja auch nicht.
Mit dem Aufkommen der ersten Java-Artikel habe ich einen Blick riskiert. Aber die Geschwindigkeit und das AWT haben mich dann noch nicht überzeugen können.
Jetzt ist es mal wieder so weit. Ich habe von C++ mal wieder die Nase voll. Die Syntax gefällt mir einfach nicht. Die OOP-Features sehen im "C Code" wie Fremdkörper aus, und viele Toolkits nutzen die "neueren Standards" wie die stdlib (STL) einfach nicht aus. Entweder string wird nicht verwendet, oder die Listen-Widgets nutzen keine Container. Und dann noch die Aufteilung in Header und "Body".
Jetzt gibt es neben Objective-C auch noch Java+SWT oder Mono mit GTK#. Ganz alternativ kann man auch Python mit seinen vielen GUI-Anbindungen verwenden. Es sind einfach zu viele Möglichkeiten. Und für einen ernsthaften Wechsel braucht man einfach Erfahrungswerte "aus dem echten Leben". Und genau das ist der Grund, warum ich hier mal nach euren Erfahrungen fragen möchte.
Sprachen
Im Netz gibt es ja viele Sprachvergleiche. Diese vergleichen meist nur die reinen Sprachfeatures, und lassen das Arbeiten mit der Sprache (und auch mit dem Compiler) meistens außen vor. Nur, nicht jedes Feature ist sinnvoll, und nicht jedes vermisste Sprachelement macht das Arbeiten schwerer. Deswegen zählt hier einfach nur die praktische Erfahrung, die ein Stück Papier einfach nicht bieten kann.
Welche Sprache setzt ihr ein und warum glaubt ihr die richtige Wahl getroffen zu haben? C# hat wirklich ein paar interessante Features. Manches ist aber auch "zu viel des Guten". Welches sind eurer Meinung nach die "must have" Features, die eine Sprache hat, die Andere vielleicht aber nicht?
Mein ganz besonderer "Liebling" ist Objective-C. Darauf habe ich schon lange ein Augenmerk geworfen, aber bisher hatte ich noch nicht die Gelegenheit zu mehr. Die Möglichkeiten sind genial (wer sich schon mal Bundles angesehen hat, der weint, wenn er den Aufwand von plugins in C++ sieht)! Aber es ist halt was "ganz anderes" und zusammen mit GNUstep auch noch recht weit weg vom "Mainstream". Das ist generell nicht schlimm, aber die GNUstep-Entwicklung scheint ähnlich träge zu verlaufen, wie man es von Hurd her kennt. Obwohl sich das letzte halbe Jahr einiges bewegt hat. Setzt jemand auf Objective-C und GNUstep?
Oder ist gar Smalltalk --die Mutter von Objective-C-- die bessere Wahl?
GUI
Mit welchen Toolkits oder besser Frameworks schreibt ihr eure GUI-Programme? Was soll man nehmen, wenn man portabel bleiben muss?
Ich entwickle unter Debian und "portiere" dann für die Final-Release nach Windows. Ein Anforderung ist also der "saubere" Betrieb unter Windows und eine "normale" Installation der benötigten Basis. Bei fltk beschränkt sich das auf eine DLL. Für GTK2 gibt es ja schon fertige Installer.
Mein Seitenblick auf Objective-C hat sich auch unter diesen Anforderungen noch nicht gerächt. Auch hier gibt es die "Basis" bereits für Windows. Ich habe nur keine Ahnung wie stabil das läuft, und wie sich die Applikationen "anfühlen". Objective-C und GNUstep bilden zusammen mit der "IDE" GORM einfach eine toole Arbeitsplattform. Man muss sich nur mal länger auf dieses Gespann einlassen. Und dazu hat mir bisher die Zeit gefehlt.
Feeling...
Wie sind die Geschwindigkeiten der Bytecode-Interpreter? Es gab ja schon einige Threads, die das Thema angeschnitten haben. Wie schlägt sich mono gegen java -- Startupzeiten, Ausführungsgeschwindigkeiten, Speicherverbrauch?
Wenn ich mit Azureus mit SWT anschaue, dann "merke" ich von Java nicht mehr viel. SWING-Anwendungen wie "Pauker" oder "JEdit" (ja, denn habe ich mir auch mal angesehen) sind hingegen wieder (wie erwartet) langsam.
Wie schneiden die dynamisch getypten Sprachen wie Objective-C oder Smalltalk im Vergleich ab?
Leider habe ich hier bei mir kein Mono unter Linux am laufen. Unter XP macht die 1.1.6 einen zwiespältigen Eindruck. Aber ich habe auch keine brauchbaren Programme um hier was genaueres zu sagen.
Zum Schluß kann man ja noch Python mit einem Framework wie PyGTK mit in die Betrachtung einbeziehen. So ganz langsam ist dieses Gespann ja auch nicht.
Also ich kann dazu nicht viel sagen, da ich erst anfange mit meinem Studium.
Aber ich lerne OOP auschliesslich auf JAVA. Mein Dozent ist von Java überzeug.
Als Tool wurde mir JBuilder ans Herz gelegt, dies gefiel mir aber garnicht und so bin ich bei Eclipse gelandet.
Ich glaube so eine grosse Hilfe bin ich dir nicht, weil ich, wie gesagt, erst im ersten Semester bin und das alles noch Neuland ist.
Aber ich lerne OOP auschliesslich auf JAVA. Mein Dozent ist von Java überzeug.
Als Tool wurde mir JBuilder ans Herz gelegt, dies gefiel mir aber garnicht und so bin ich bei Eclipse gelandet.
Ich glaube so eine grosse Hilfe bin ich dir nicht, weil ich, wie gesagt, erst im ersten Semester bin und das alles noch Neuland ist.
Java mag ich persönlich gar nicht. Zum einen, weil ich noch keine "hübsche" java-(crossplattform-)anwendung gesehen habe und zum anderen wegen der Geschwindigkeit.
Für C++ gibt es viele Cross-Plattform GUI-Toolkits, aber du scheinst ja eine Alternative zu C++ zu suchen.
C# (mit Mono) hat auf mich nen sehr guten Eindruck gemacht, bin aber noch nicht dazu gekommen mich näher damit zu beschäftigen.
Im Moment schaue ich mir gerade Objective-C an (allerdings auf nem Mac) und bin begeistert. Allerdings hat mich bei GNUStep nicht die Begeisterung gepackt, aber wenn sich da noch was tut...
Smalltalk und Python kenne ich nicht.
Für wirkliche Cross-Plattform Anwendungen würde ich entweder auf C# oder C++ setzen, die sind beide ordentlich schnell und haben hübsche GUIs für jedes System.
Für C++ gibt es viele Cross-Plattform GUI-Toolkits, aber du scheinst ja eine Alternative zu C++ zu suchen.
C# (mit Mono) hat auf mich nen sehr guten Eindruck gemacht, bin aber noch nicht dazu gekommen mich näher damit zu beschäftigen.
Im Moment schaue ich mir gerade Objective-C an (allerdings auf nem Mac) und bin begeistert. Allerdings hat mich bei GNUStep nicht die Begeisterung gepackt, aber wenn sich da noch was tut...
Smalltalk und Python kenne ich nicht.
Für wirkliche Cross-Plattform Anwendungen würde ich entweder auf C# oder C++ setzen, die sind beide ordentlich schnell und haben hübsche GUIs für jedes System.
Jazz is not dead, it just smells funny.
da will ich doch auch noch mal meinen Senf dazugeben, ohne besondere Reihenfolge:
- alle Sprachen, die Du erwähnst bis auf Smalltalk und die Scriptsprachen, haben das
Code editieren -> kompilieren -> laufen lassen -> debuggen -> Code editieren ... Modell.
Finde ich mittlerweile ziemlich nervig, man kommt einfach aus dem Rhythmus,
besonders bei langen Kompilationszyklen. Besser gefällt mir da das Smalltalk-Modell,
peu-a-peu Funktionen/Methoden eingeben und testen, Einfach kontinuierlicher!
Sprachen die das machen: Smalltalk, Ruby etc. (Perl kenne ich kaum), und
Common Lisp/Scheme
- Zu Portabel fällt mir ebenfalls Gtk+ (nebenbei Gtk+ für C++ = Gtkmm ist sehr nett)
sofort ein. Schreibst Du für Windows OpenSource oder ClosedSource? Falls ersteres
lohnt es sich vielleicht auf Qt für Windows zu warten. Ab Qt4 soll's eine GPL-Version
für Windows geben (kommerziell gibt's jetzt schon). Qt sieht gut aus, ist super doku-
mentiert und hat viel Zeugs, das man früher oder später immer braucht
(Netzwerkkram, Datenbankanbindung etc.)
- Zum Thema Geschwindigkeit würde ich sagen, mach Dir keinen Streß! Jedenfalls bei
reinen GUI-Anwendungen ist kein Unterschied zwischen C++/Qt und RubyQt oder
PyQt zu bemerken. Für Gtk+ gilt mit Sicherheit das gleiche. Jeder der was anderes
behauptet, glaubt auch an einen 50%igen Geschwindigkeitszuwachs bei Gentoo. Und
die Teile der Anwendung, die wirklich Rechnen, kannst Du immer noch in C oder C++
schreiben. Das gilt wohlgemerkt nicht für Java, bei Scriptsprache + Gtk+/Qt
funktioniert das, weil der Teil der rechnet (Fenster zeichen und so) schon in C oder
C++ geschrieben ist.
- Wie groß ist denn die Chance, daß andere Deinen mit Sourcecode arbeiten müssen?
Falls Du alleine an den fraglichen Projekten arbeitest, kannst Du Dir die Sprache wohl
frei aussuchen. Je mehr Leute, desto eher mußt Du Standardlösungen (= bekannte
Sprachen/IDEs etc) verwenden.
Nochmal kurz was mir an einigen Sprachen gefällt und nicht.
zu Ruby:
+ dynamisch, gutes Objektsystem (lehnt an Smalltalk an)
- Perl-Syntax
zu Python:
+ dynamisch, weit verbreitet
- nicht ganz so mächtig
zu Java:
- gefällt mir einfach nicht, fühlt sich immer wie kastriertes C++ an.
zu C#:
- kenne ich nicht, aber ich behaupte einfach mal das der Java-Punkt gilt und außerdem:
Microsoft
zu Smalltalk:
+ dynamisch, einfache + regelmäßige Syntax, entwickeln in Smalltalk bringt einfach
Spaß, eine kostenfreie, voll funktionsfähige Ausprobierversion gibt's unter
http://smalltalk.cincom.com
für Neugierige: PLT-Scheme, falls Du zuviel Freizeit hast, schau's Dir mal an: http://www.plt-scheme.org. Gut für Einsteiger und Fortgeschrittene.
Oder auch Common Lisp http://common-lisp.net.
Nachdem ich jetzt meinen Senf dazugegeben habe, weiß ich auch nicht mehr, was ich klar empfehlen kann. Kommt zu sehr auf das Projekt, die Lizenz und Deine persönlichen
Vorlieben an. Aber für Cross-Plattform-GUI-Anwendungen würde ich wohl eine Mischung aus Skriptsprache des persönlichen Geschmacks, GUI-Toolkit des persönlichen Geschmacks und C bwz. C++ für die Teile, die Rechnen müssen, empfehlen.
Gruß Martin
P.S. Nochmal zu Geschwindigkeit, Donald Knuth sagt (bzw. zitiert einen anderen Großen der Kunst) "Premature optimization is the root of all evil!"[/url]
- alle Sprachen, die Du erwähnst bis auf Smalltalk und die Scriptsprachen, haben das
Code editieren -> kompilieren -> laufen lassen -> debuggen -> Code editieren ... Modell.
Finde ich mittlerweile ziemlich nervig, man kommt einfach aus dem Rhythmus,
besonders bei langen Kompilationszyklen. Besser gefällt mir da das Smalltalk-Modell,
peu-a-peu Funktionen/Methoden eingeben und testen, Einfach kontinuierlicher!
Sprachen die das machen: Smalltalk, Ruby etc. (Perl kenne ich kaum), und
Common Lisp/Scheme
- Zu Portabel fällt mir ebenfalls Gtk+ (nebenbei Gtk+ für C++ = Gtkmm ist sehr nett)
sofort ein. Schreibst Du für Windows OpenSource oder ClosedSource? Falls ersteres
lohnt es sich vielleicht auf Qt für Windows zu warten. Ab Qt4 soll's eine GPL-Version
für Windows geben (kommerziell gibt's jetzt schon). Qt sieht gut aus, ist super doku-
mentiert und hat viel Zeugs, das man früher oder später immer braucht
(Netzwerkkram, Datenbankanbindung etc.)
- Zum Thema Geschwindigkeit würde ich sagen, mach Dir keinen Streß! Jedenfalls bei
reinen GUI-Anwendungen ist kein Unterschied zwischen C++/Qt und RubyQt oder
PyQt zu bemerken. Für Gtk+ gilt mit Sicherheit das gleiche. Jeder der was anderes
behauptet, glaubt auch an einen 50%igen Geschwindigkeitszuwachs bei Gentoo. Und
die Teile der Anwendung, die wirklich Rechnen, kannst Du immer noch in C oder C++
schreiben. Das gilt wohlgemerkt nicht für Java, bei Scriptsprache + Gtk+/Qt
funktioniert das, weil der Teil der rechnet (Fenster zeichen und so) schon in C oder
C++ geschrieben ist.
- Wie groß ist denn die Chance, daß andere Deinen mit Sourcecode arbeiten müssen?
Falls Du alleine an den fraglichen Projekten arbeitest, kannst Du Dir die Sprache wohl
frei aussuchen. Je mehr Leute, desto eher mußt Du Standardlösungen (= bekannte
Sprachen/IDEs etc) verwenden.
Nochmal kurz was mir an einigen Sprachen gefällt und nicht.
zu Ruby:
+ dynamisch, gutes Objektsystem (lehnt an Smalltalk an)
- Perl-Syntax
zu Python:
+ dynamisch, weit verbreitet
- nicht ganz so mächtig
zu Java:
- gefällt mir einfach nicht, fühlt sich immer wie kastriertes C++ an.
zu C#:
- kenne ich nicht, aber ich behaupte einfach mal das der Java-Punkt gilt und außerdem:
Microsoft
zu Smalltalk:
+ dynamisch, einfache + regelmäßige Syntax, entwickeln in Smalltalk bringt einfach
Spaß, eine kostenfreie, voll funktionsfähige Ausprobierversion gibt's unter
http://smalltalk.cincom.com
für Neugierige: PLT-Scheme, falls Du zuviel Freizeit hast, schau's Dir mal an: http://www.plt-scheme.org. Gut für Einsteiger und Fortgeschrittene.
Oder auch Common Lisp http://common-lisp.net.
Nachdem ich jetzt meinen Senf dazugegeben habe, weiß ich auch nicht mehr, was ich klar empfehlen kann. Kommt zu sehr auf das Projekt, die Lizenz und Deine persönlichen
Vorlieben an. Aber für Cross-Plattform-GUI-Anwendungen würde ich wohl eine Mischung aus Skriptsprache des persönlichen Geschmacks, GUI-Toolkit des persönlichen Geschmacks und C bwz. C++ für die Teile, die Rechnen müssen, empfehlen.
Gruß Martin
P.S. Nochmal zu Geschwindigkeit, Donald Knuth sagt (bzw. zitiert einen anderen Großen der Kunst) "Premature optimization is the root of all evil!"[/url]
Klasse. Eine sinnvolle Entscheidung. Mein Patenkind studiert in Giesen und dort lernt er nun C -- als absoluter Laie! Idiotischer geht es nicht mehr. Naja doch, vielleicht mit Perl.svn hat geschrieben:Aber ich lerne OOP auschliesslich auf JAVA. Mein Dozent ist von Java überzeug.
Eclipse macht einen guten Eindruck, nur der Editor schwächelt etwas.svn hat geschrieben:Als Tool wurde mir JBuilder ans Herz gelegt, dies gefiel mir aber garnicht und so bin ich bei Eclipse gelandet.
Schau Dir mal DrJava an. Das erlaubt dir das interaktive Ausführen von "Funktionen", ohne das Du eine Applikation bauen musst.
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
C bevor man mit C++ oder Java kontakt hatte ist meines erachtens sehr gut um interna zu verstehen - von anfang an java ist unsinn obwohl es fast überall nur mehr so gelehrt wird
nat. ist jeder Prof. davon begeistert - denn er kann fertige funktionen usw. verwenden - er muss keinen string mehr parsen oder sonst was - aber er weiß um die hintergründe - der neuling nicht
die erfahrung zeigt das die lernkurve bei java sehr steil ist vorallem am anfang - darum glauben alles es sei das über drüber ding - java ist gut keine frage - aber das allheilmittel - nein das ist es nicht
ich habe so progen gelernt:
zuerst C
dann C++
dann Java
zuerst Java dann C++ oder C - da fallen alle auf die nase
zuerst C und/oder C++ dann Java - funkt. bei jedem
meine meinung - mir ist klar es gibt andere
markus
edit:
was mir an java nicht gefällt ist - was wenn Sun spinnen anfängt und für alles und jedes geld haben will? - was macht man dann wenn man nur Java kann/kennt?
nat. ist jeder Prof. davon begeistert - denn er kann fertige funktionen usw. verwenden - er muss keinen string mehr parsen oder sonst was - aber er weiß um die hintergründe - der neuling nicht
die erfahrung zeigt das die lernkurve bei java sehr steil ist vorallem am anfang - darum glauben alles es sei das über drüber ding - java ist gut keine frage - aber das allheilmittel - nein das ist es nicht
ich habe so progen gelernt:
zuerst C
dann C++
dann Java
zuerst Java dann C++ oder C - da fallen alle auf die nase
zuerst C und/oder C++ dann Java - funkt. bei jedem
meine meinung - mir ist klar es gibt andere
markus
edit:
was mir an java nicht gefällt ist - was wenn Sun spinnen anfängt und für alles und jedes geld haben will? - was macht man dann wenn man nur Java kann/kennt?
Da stimme ich Dir zu, obwohl ich mir bisher nie Smalltalk näher angesehen habe. Die Oberflächen der freien Implementationen (die ich bisher gesehen habe) sind relativ hässlich und absolut nicht auf dem Stand der Dinge. Oder habe ich da was übersehen?MartinL25 hat geschrieben:- alle Sprachen, die Du erwähnst bis auf Smalltalk und die Scriptsprachen, haben das Code editieren -> kompilieren -> laufen lassen -> debuggen -> Code editieren ... Modell. Finde ich mittlerweile ziemlich nervig, man kommt einfach aus dem Rhythmus, besonders bei langen Kompilationszyklen. Besser gefällt mir da das Smalltalk-Modell, peu-a-peu Funktionen/Methoden eingeben und testen, Einfach ontinuierlicher!
Sprachen die das machen: Smalltalk, Ruby etc. (Perl kenne ich kaum), und
Common Lisp/Scheme
Beides. Wobei wir die Software meistens als Beigabe sehen, da wir hauptsächlich die Hardware entwickeln. Also gibt es die Software "gratis" als Beigabe. Aber so richtig OpenSource kann man es nicht nennen.MartinL25 hat geschrieben:- Zu Portabel fällt mir ebenfalls Gtk+ (nebenbei Gtk+ für C++ = Gtkmm ist sehr nett) sofort ein. Schreibst Du für Windows OpenSource oder ClosedSource?
Das stimmt schon. Nur welche Compiler unterstützt die GPL-Version? Die non-commercial 3.3 leif ja IMO nur mit VC++. Ich nehme lieber den GCC.MartinL25 hat geschrieben:Falls ersteres lohnt es sich vielleicht auf Qt für Windows zu warten. Ab Qt4 soll's eine GPL-Version für Windows geben (kommerziell gibt's jetzt schon). Qt sieht gut aus, ist super dokumentiert und hat viel Zeugs, das man früher oder später immer braucht (Netzwerkkram, Datenbankanbindung etc.)
Qt habe ich mir auch schon angeschaut. Ich hatte mir sogar Kalle Dallheimer Qt-Buch gekauft. Generell macht Qt einen sehr guten Eindruck. Mir gefällt nur der moc nicht. Warum mußten die unbedingt die C++ Syntax erweitern?
Da stimme ich dir für die Oberfläche einer gestarteten Anwendung zu. Aber was ist mit dem Ladevorgang? Ein Kollege von mir ist TCL/TK-Fan und hat damit eine Steuersoftware für Windows geschrieben. Mit dem Startkit hat er daraus eine EXE gebaut. Das ist träge ohne Ende. Da startet ja OpenOffice schneller. Das ist schon fast unerträglich.MartinL25 hat geschrieben:- Zum Thema Geschwindigkeit würde ich sagen, mach Dir keinen Streß! Jedenfalls bei reinen GUI-Anwendungen ist kein Unterschied zwischen C++/Qt und RubyQt oder PyQt zu bemerken. Für Gtk+ gilt mit Sicherheit das gleiche.
Wie ist das mit Mono? Und bei Java mit SWT? Ich kenne Azureus und Eclipse. Wie verändert sich das bei Java, wenn man Jikes oder GCJ einsetzt?
Naja, wenn ich ein Bild laden muß, um es dann mit einem Filter o.ä. zu bearbeiten, dann mache ich das schon in der Sprache, für die ich mich entschieden habe. Wenn ich dann wieder mit C++ anfangen muß, dann kann ich auch da bleiben.MartinL25 hat geschrieben:Und die Teile der Anwendung, die wirklich Rechnen, kannst Du immer noch in C oder C++ schreiben. Das gilt wohlgemerkt nicht für Java, bei Scriptsprache + Gtk+/Qt funktioniert das, weil der Teil der rechnet (Fenster zeichen und so) schon in C oder C++ geschrieben ist.
Ich entscheide mich für die Sprache. Der Rest muß da durch.MartinL25 hat geschrieben:- Wie groß ist denn die Chance, daß andere Deinen mit Sourcecode arbeiten müssen? Falls Du alleine an den fraglichen Projekten arbeitest, kannst Du Dir die Sprache wohl frei aussuchen.
Ja, von Ruby habe ich schon viel gutes gehört. Aber die Perl-ähnliche Syntax hat mir nicht zugesagt. Die sieht noch schlimmer als C++ aus.MartinL25 hat geschrieben:Nochmal kurz was mir an einigen Sprachen gefällt und nicht.
zu Ruby:
+ dynamisch, gutes Objektsystem (lehnt an Smalltalk an)
- Perl-Syntax
Naja, das mit dem kastrierten C++ stimmt so nicht. Gerade C# hat einige Features, die z.B. Troll bei C++ erst mit dem moc nachrüsten mußte. Schau mal hier: http://genamics.com/developer/csharp_comparative.htmMartinL25 hat geschrieben: zu Java: - gefällt mir einfach nicht, fühlt sich immer wie kastriertes C++ an.
zu C#: - kenne ich nicht, aber ich behaupte einfach mal das der Java-Punkt gilt und außerdem: Microsoft
Und nur weil es von MS kommt, muss man es nicht ablehnen. Zumal der Delphi-Erfinder bei C# die Finger im Spiel hatte. Es hat viele Features, die wirklich gut aussehen.
Was auch toll ist, sind die verschiedenen Frontends zu anderen Sprachen, die nahtlos untereinander zusammenarbeiten. So kann man eine Klasse in C# coden, und eine andere in IronPython. Und das ohne Tricks und ohne Wrapper!
Ja, Smalltalk (und auch Objective-C) wäre der gravierendste Schnitt. Gibt es auch brauchbare OpenSource-IDE's? IMO macht gerade die IDE mit dem Klassenbrowser den "Spaß" an SmallTalk aus. Die muss schließlich das zentrale Object-Repository umsetzen.MartinL25 hat geschrieben: zu Smalltalk: + dynamisch, einfache + regelmäßige Syntax, entwickeln in Smalltalk bringt einfach Spaß, eine kostenfreie, voll funktionsfähige Ausprobierversion gibt's unter http://smalltalk.cincom.com
ObjektOrientiert in C möchte ich mir nicht antun. C++ wollte ich ersetzen und bei der Lizenz muss leider closed source möglich sein. Da kann man dann aber über eine kommerzielle Lizenz nachdenken.MartinL25 hat geschrieben:Nachdem ich jetzt meinen Senf dazugegeben habe, weiß ich auch nicht mehr, was ich klar empfehlen kann. Kommt zu sehr auf das Projekt, die Lizenz und Deine persönlichen Vorlieben an. Aber für Cross-Plattform-GUI-Anwendungen würde ich wohl eine Mischung aus Skriptsprache des persönlichen Geschmacks, GUI-Toolkit des persönlichen Geschmacks und C bwz. C++ für die Teile, die Rechnen müssen, empfehlen.
Der Spruch ist gut. Wie gesagt, ging es mit bei der Frage nach Geschwindigkeit und Ressourcenverbrauch um die Erfahrungswerte.MartinL25 hat geschrieben:P.S. Nochmal zu Geschwindigkeit, Donald Knuth sagt (bzw. zitiert einen anderen Großen der Kunst) "Premature optimization is the root of all evil!"
Naja, ich habe C mit dem K&R Buch gelernt. Das war IMO die harte Tour. Ich denke, wenn man wirklich zum aller erstenmal mit dem Programmieren konfrontiert wird, dann ist der Einstieg mit C doch recht schmerzhaft. Keine Boundary Checks bei Arrays, keine Stringklassen, keine Exceptions. Man hat also viele Stolperfallen und wenig Hilfe dabei. Dann erlaubt die Sprache so viel (pointer nach long, Pointerarithmetik, ...), dass noch einiges mehr schief gehen kann. Dann IMO lieber eine Sprache, die abstrakter ist. Ins Detail kann man dann immer noch gehen.meandtheshell hat geschrieben:C bevor man mit C++ oder Java kontakt hatte ist meines erachtens sehr gut um interna zu verstehen - von anfang an java ist unsinn obwohl es fast überall nur mehr so gelehrt wird
Wenn der Neuling seinen Blick auf das Wesentlich richten kann, ist das doch gut. Wenn der Prof in seiner Vorlesung nicht auf die Hintergründe hinweist, dann liegt das ja IMO nicht an der Sprache.meandtheshell hat geschrieben:nat. ist jeder Prof. davon begeistert - denn er kann fertige funktionen usw. verwenden - er muss keinen string mehr parsen oder sonst was - aber er weiß um die hintergründe - der neuling nicht
Das Allheilmittel ist Java sicherlich nicht. IMO wird es das auch nicht geben. Das ist unter anderem ein Punkt, der mich an C# in der VirtualMaschine darunter so begeistert. Man kann die Sprache/Frontend wählen (C#, Nemerle, IronPython) und beliebig mischen. So zumindest die graue Theorie.meandtheshell hat geschrieben:die erfahrung zeigt das die lernkurve bei java sehr steil ist vorallem am anfang - darum glauben alles es sei das über drüber ding - java ist gut keine frage - aber das allheilmittel - nein das ist es nicht
Ist Java nicht auch wie C# ein freier Standard? Es gibt doch mittlerweile eine Reihe von freien VMs und Runtimes. Siehe http://www.pro-linux.de/berichte/gnu-classpath1.htmlmeandtheshell hat geschrieben:was mir an java nicht gefällt ist - was wenn Sun spinnen anfängt und für alles und jedes geld haben will? - was macht man dann wenn man nur Java kann/kennt?
Naja Sun durfte erstmal Patentgebüren entrichten an eine Firma die sich den Methodenaufruf patentieren lies.edit:
was mir an java nicht gefällt ist - was wenn Sun spinnen anfängt und für alles und jedes geld haben will? - was macht man dann wenn man nur Java kann/kennt?
Ich glaube die sind erstmal geheilt davon. Ausserdem muss ja nicht jede Firma Code stehten und ihn dann verkaufen oder imens hohe Summen für ihr OS haben, wie unser super billy...
Und zum Thema erst C dann alles andere. Ich glaube der SInn liegt darin OOP zu programmieren und laut den Erzählungen hat C das nicht, ich kann das selbst nicht beurteilen ich lernen nur Java.
Btw wir haben 2 Monate erstmal OOP gelernt bevor wir das erstemal Javacode gesehen haben.
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
@ jd
da hast du recht wenn du nicht die richtigen leute hast und oder die richtige Literatur dann geht der schuss nach hinten los - hast du aber eines oder beides dann bist ganz vorne mit dabei
zum Thema Literatur von wegen dein neffe oder so - also anfänger:
such nach büchern von "Klaus Schmaranz" - er lehrt an der Technischen Uni Graz
meines wissens gibt es keien bessere Literatur für anfänger und fortgeschrittene - profis gehn nat. zu Bjarne Stroustrup's Literatur
da hast du recht wenn du nicht die richtigen leute hast und oder die richtige Literatur dann geht der schuss nach hinten los - hast du aber eines oder beides dann bist ganz vorne mit dabei
zum Thema Literatur von wegen dein neffe oder so - also anfänger:
such nach büchern von "Klaus Schmaranz" - er lehrt an der Technischen Uni Graz
meines wissens gibt es keien bessere Literatur für anfänger und fortgeschrittene - profis gehn nat. zu Bjarne Stroustrup's Literatur
@jd:
Visualworks Smalltalk 7.2 war häßlich unter Linux, kann sein, daß 7.3 besser aussieht (unter Windows bin ich mir ziemlich sicher). IBMs Smalltalk (weiß jetzt nicht wie das genau heißt) ist auch ziemlich häßlich. Es gibt auch Gnu Smalltalk, da ist Emacs Deine IDE . Hat Bindings für Tk (auch ziemlich häßlich) und (habe ich noch nicht ausprobiert) Gtk+.
Qt4 dürfte wohl mit cygwin/gcc laufen. Aber die freie Version ist GPL, nicht LGPL oder so, d.h. Deine Anwendung muß auch GPL sein, sonst wird's illegal. Die Lizenzpreise pro Entwickler sind aber ziemlich happig.
Über den Moc hab ich auch geschimpft. Naja, der implementiert Dynamic Typing und Messaging (wie bei Objective-C und Smalltalk, ist einfach besser für GUI-Programmierung) in einer statischen Sprache wie C++. Das heißt entweder eigener Compiler oder Präprozessor. Heute würde man das in C++ über Templates und RTTI machen, aber als Qt rauskam, war noch nicht mal der Standard fertig, geschweige den standardkonforme Compiler. Einige sagen auch, daß das "look and feel" von Signals und Slots in Qt-C++-Code schöner ist, als äquivalente Konstrukte in Standard-C++ (für Beispiele guck Dir mal Gtkmm-Examples an), ich stimme da zu.
TCL/Tk unter Windows kenne ich nicht, aber die sind schon unter Linux nicht das Schnellste, unter Windows würde ich mal py2exe und psyco, den Python-Compiler ausprobieren.
Zu C#: Hast ja Recht, auch Angestellte von Microsoft können gute Sachen machen. Der Typ von C# heißt Anders Hejlsberg oder so ähnlich, der hat früher bei Borland die Turbo Pascal Compiler geschrieben, mein Einstieg in Programmieren !!! Fals Du oder irgendwer anders Erfahrungen mit C# unter Linux gemacht hat, würde ich mich über Hinweise freuen. Ich bin halt ein Free-Software/Anti-Microsoft Typ.
Gruß Martin
P.S. zum Thema C vor C++ lernen sagt Bjarne Stroustrup: http://www.research.att.com/~bs/bs_faq. ... erequisite
Visualworks Smalltalk 7.2 war häßlich unter Linux, kann sein, daß 7.3 besser aussieht (unter Windows bin ich mir ziemlich sicher). IBMs Smalltalk (weiß jetzt nicht wie das genau heißt) ist auch ziemlich häßlich. Es gibt auch Gnu Smalltalk, da ist Emacs Deine IDE . Hat Bindings für Tk (auch ziemlich häßlich) und (habe ich noch nicht ausprobiert) Gtk+.
Qt4 dürfte wohl mit cygwin/gcc laufen. Aber die freie Version ist GPL, nicht LGPL oder so, d.h. Deine Anwendung muß auch GPL sein, sonst wird's illegal. Die Lizenzpreise pro Entwickler sind aber ziemlich happig.
Über den Moc hab ich auch geschimpft. Naja, der implementiert Dynamic Typing und Messaging (wie bei Objective-C und Smalltalk, ist einfach besser für GUI-Programmierung) in einer statischen Sprache wie C++. Das heißt entweder eigener Compiler oder Präprozessor. Heute würde man das in C++ über Templates und RTTI machen, aber als Qt rauskam, war noch nicht mal der Standard fertig, geschweige den standardkonforme Compiler. Einige sagen auch, daß das "look and feel" von Signals und Slots in Qt-C++-Code schöner ist, als äquivalente Konstrukte in Standard-C++ (für Beispiele guck Dir mal Gtkmm-Examples an), ich stimme da zu.
TCL/Tk unter Windows kenne ich nicht, aber die sind schon unter Linux nicht das Schnellste, unter Windows würde ich mal py2exe und psyco, den Python-Compiler ausprobieren.
Zu C#: Hast ja Recht, auch Angestellte von Microsoft können gute Sachen machen. Der Typ von C# heißt Anders Hejlsberg oder so ähnlich, der hat früher bei Borland die Turbo Pascal Compiler geschrieben, mein Einstieg in Programmieren !!! Fals Du oder irgendwer anders Erfahrungen mit C# unter Linux gemacht hat, würde ich mich über Hinweise freuen. Ich bin halt ein Free-Software/Anti-Microsoft Typ.
Gruß Martin
P.S. zum Thema C vor C++ lernen sagt Bjarne Stroustrup: http://www.research.att.com/~bs/bs_faq. ... erequisite
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
ja das trifft es denke ich ganz gut - kein Muss aber gut wenn man C wissen hatMartinL25 hat geschrieben:
P.S. zum Thema C vor C++ lernen sagt Bjarne Stroustrup: http://www.research.att.com/~bs/bs_faq. ... erequisite
- peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Per default kommt 4.0 für Windows in der freien Version für Mingw/GCC. Eher mühsam von der kompiliergeschwindigkeit - aber ich denke die Unterstützung sollte auch für andere Compiler hinzukriegen sein. Schliesslich ist das ja auch bei der freien 3er Portierung kein Problem.jd hat geschrieben: Das stimmt schon. Nur welche Compiler unterstützt die GPL-Version? Die non-commercial 3.3 leif ja IMO nur mit VC++. Ich nehme lieber den GCC.
Naja, extrem sympatisch ist mir der auch nicht. Aber stören tut er genausowenig - darum kümmert sich Qmake bestens.Qt habe ich mir auch schon angeschaut. Ich hatte mir sogar Kalle Dallheimer Qt-Buch gekauft. Generell macht Qt einen sehr guten Eindruck. Mir gefällt nur der moc nicht. Warum mußten die unbedingt die C++ Syntax erweitern?
Ein präprozessor mehr oder weniger macht imo auch nicht so viel aus.
Jikes ist nur ein alternativer compiler. Der bringt dir gar nix.Wie ist das mit Mono? Und bei Java mit SWT? Ich kenne Azureus und Eclipse. Wie verändert sich das bei Java, wenn man Jikes oder GCJ einsetzt?
GCJ bringt bei der Startzeit eventuell etwas Gewinn. Ist aber im Schnitt derzeit noch langsamer als Suns Java. Nach meinen Erfahrungen.
SWT bringt einiges Tempo im Vergleich zu Swing. Aber die Gtk-Implementierung hakt irgendwo - finde ich. Zu langsam.
Mal ganz abgesehen davon ist SWT nicht so nett zu Programmieren - ich hab vor einer Weile sogar mal ein ausführliches Tutorial geschrieben (auf meiner Homepage - die ist im Moment leider down... ) aber ich bin dann recht bald wieder von SWT abgekommen. Qt ist netter zu programmieren und besser designt.
Finde ich auch. Von Sprachmischmasch halte ich recht wenig.Naja, wenn ich ein Bild laden muß, um es dann mit einem Filter o.ä. zu bearbeiten, dann mache ich das schon in der Sprache, für die ich mich entschieden habe. Wenn ich dann wieder mit C++ anfangen muß, dann kann ich auch da bleiben.MartinL25 hat geschrieben:Und die Teile der Anwendung, die wirklich Rechnen, kannst Du immer noch in C oder C++ schreiben. Das gilt wohlgemerkt nicht für Java, bei Scriptsprache + Gtk+/Qt funktioniert das, weil der Teil der rechnet (Fenster zeichen und so) schon in C oder C++ geschrieben ist.
Ich würde mir auf jeden Fall mal Python (und auch Ruby) angucken. Kenne zwar beide nicht im Detail - aber das sind die einzigen Sprachen über die ich nun wirklich noch nie was negatives gehört habe.
Und C++ mit Qt nicht vergessen
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
Ich werde es ihm mal empfehlen.meandtheshell hat geschrieben:zum Thema Literatur von wegen dein neffe oder so - also anfänger: such nach büchern von "Klaus Schmaranz" - er lehrt an der Technischen Uni Graz
Ihh, der Stroustrup....meandtheshell hat geschrieben:meines wissens gibt es keien bessere Literatur für anfänger und fortgeschrittene - profis gehn nat. zu Bjarne Stroustrup's Literatur
Den habe ich mir in seiner Erstausgabe in Englisch geholt. Das Englisch erschien mir seinerseit recht fürchterlich zu sein.
?????meandtheshell hat geschrieben:ja das trifft es denke ich ganz gut - kein Muss aber gut wenn man C wissen hat
Das lese ich aber anders. BS schreibt, dass man anstelle von C eine Untermenge von C++ nehmen soll. Quasi nur "C in C++" schreiben, weil man dann trotzdem die Vorteile von C++ hat. Naja, im Vergleich zum ollen Borland C++ oder zu meinen Embedded-C-Compilern ist der gcc mit -Wall schon eine richtige Hilfe.
mingw wäre prächtig. Da ich sowie unter Debian entwickle, könnte ich dann ganz normal mit (Q)make arbeiten, und dann unter Windoze einfach in der MSYS-sh ein make starten. Die Compiler-Geschwindigkeit ist mir nicht soooo wichtig. Da kann ich dann Kaffee holen gehen.peschmae hat geschrieben:Per default kommt 4.0 für Windows in der freien Version für Mingw/GCC. Eher mühsam von der kompiliergeschwindigkeit - aber ich denke die Unterstützung sollte auch für andere Compiler hinzukriegen sein. Schliesslich ist das ja auch bei der freien 3er Portierung kein Problem.
Naja, ich finde die Vorgehensweise nicht so schön. Bleibt die Frage, in wie weit sich C++ Parser wie Cscope oder ECB (für Emacs) daran stören. Und die Container der stdlib (STL) werden auch nicht verwendet. Da Qt aber mit eigenem Ersatz daher kommt, ist das zu verkraften.peschmae hat geschrieben:Naja, extrem sympatisch ist mir der auch nicht. Aber stören tut er genausowenig - darum kümmert sich Qmake bestens. Ein präprozessor mehr oder weniger macht imo auch nicht so viel aus.
Ich dachte Jikes wäre auch ein "schnellerer" JIT? Ist das nicht so? Und GCJ soll doch native code produzieren. Ist so ein echtes linux binary nicht performanter? Schlieslich ist doch GCJ nur ein front-end, dass den optimierenden code-generator von GCC nutzt(en sollte).peschmae hat geschrieben:Jikes ist nur ein alternativer compiler. Der bringt dir gar nix.
GCJ bringt bei der Startzeit eventuell etwas Gewinn. Ist aber im Schnitt derzeit noch langsamer als Suns Java. Nach meinen Erfahrungen.
GTK generell, oder nur die Umsetzung in SWT? Wenn ich mir Azureus ansehe, dann finde ich das eigentlich ganz gut gelungen.peschmae hat geschrieben:SWT bringt einiges Tempo im Vergleich zu Swing. Aber die Gtk-Implementierung hakt irgendwo - finde ich. Zu langsam.
Was stört dich an SWT? Kannst Du dein Tutorial nicht irgendwo hier im wiki oder so plazieren?peschmae hat geschrieben:Mal ganz abgesehen davon ist SWT nicht so nett zu Programmieren - ich hab vor einer Weile sogar mal ein ausführliches Tutorial geschrieben (auf meiner Homepage - die ist im Moment leider down... ) aber ich bin dann recht bald wieder von SWT abgekommen. Qt ist netter zu programmieren und besser designt.
Ach ja, was mit allen vielen GUIs auffällt, ist die Tatsache, dass sie alle für die Arbeit mit GUI-Designer entworfen sind. Wie sieht es mit Layout-Managern aus? Gibt es die unter SWT?
Hm. Es sind halt Scriptsprachen, die immer man unter Windoze leider immer irgendwie als EXE packen muss. Gibt es eigentlich eine Möglichkeit, dass Python zusammen mit dem Programm in einem Aufwasch mitinstalliert wird?peschmae hat geschrieben:Ich würde mir auf jeden Fall mal Python (und auch Ruby) angucken. Kenne zwar beide nicht im Detail - aber das sind die einzigen Sprachen über die ich nun wirklich noch nie was negatives gehört habe.
Ach ja, das C++. Dabei wollte ich mich davon ja eigentlich lossagen....peschmae hat geschrieben:Und C++ mit Qt nicht vergessen
IBM VisualAge. Ich habe hier noch den VisualAge C++ Compiler für OS/2 rumstehen. Der sieht auch so hausbacken aus.MartinL25 hat geschrieben:Visualworks Smalltalk 7.2 war häßlich unter Linux, kann sein, daß 7.3 besser aussieht (unter Windows bin ich mir ziemlich sicher). IBMs Smalltalk (weiß jetzt nicht wie das genau heißt) ist auch ziemlich häßlich. Es gibt auch Gnu Smalltalk, da ist Emacs Deine IDE . Hat Bindings für Tk (auch ziemlich häßlich) und (habe ich noch nicht ausprobiert) Gtk+.
GNU smalltalk kommt mit Emacs-"Frontend" daher? Da muss ich doch glatt mal nachschauen.
Ja, die Preise sind hart. Da jammern die Chefs immer. Das dumme ist, dass meiner von der Hardwareseite kommt, und darum das Geld lieber für diese Tools raushaut.MartinL25 hat geschrieben:Qt4 dürfte wohl mit cygwin/gcc laufen. Aber die freie Version ist GPL, nicht LGPL oder so, d.h. Deine Anwendung muß auch GPL sein, sonst wird's illegal. Die Lizenzpreise pro Entwickler sind aber ziemlich happig.
Na, bis jetzt scheint keinem der MOC zu "gefallen".MartinL25 hat geschrieben:Über den Moc hab ich auch geschimpft. Naja, der implementiert Dynamic Typing und Messaging (wie bei Objective-C und Smalltalk, ist einfach besser für GUI-Programmierung) in einer statischen Sprache wie C++.
Naja. libsig++ ist auch nicht soooo schön. Ich bin letztens über eine GUI namens TOAD gestolpert. Die hat das recht nett umgesetzt. Es gab sogar eine offizielle C++ Variante, und eine, die die Features von GCC verwendet.MartinL25 hat geschrieben:Das heißt entweder eigener Compiler oder Präprozessor. Heute würde man das in C++ über Templates und RTTI machen, aber als Qt rauskam, war noch nicht mal der Standard fertig, geschweige den standardkonforme Compiler. Einige sagen auch, daß das "look and feel" von Signals und Slots in Qt-C++-Code schöner ist, als äquivalente Konstrukte in Standard-C++ (für Beispiele guck Dir mal Gtkmm-Examples an), ich stimme da zu.
Sind die EXE die da rauskommen inklusive Python-Interpreter und den entsprechenden Paketen, die per import eingebunden werden? Was machen die Tools, wenn Pakete wie PyGTK oder PyQt verwendet werden? Kommen die mit ins EXE?MartinL25 hat geschrieben:TCL/Tk unter Windows kenne ich nicht, aber die sind schon unter Linux nicht das Schnellste, unter Windows würde ich mal py2exe und psyco, den Python-Compiler ausprobieren.
Na ein Freund von MS bin ich auch nicht. Und closed-source nehme ich nur, wenn ich keine Alternative habe. Aber es gibt ja noch Mono. CLI-Tools, die mit Mono 1.1.6 unter Windows kompiliert sind, werden auf einer zweiten Kiste, auf der ein .NET Framework installiert ist, problemlos ausgeführt. Ich habe es nur noch nicht geschafft, eine GUI-Demo mit Window.Form (?) mit Mono zu kompilieren. Ist das bei Mono nicht dabei?MartinL25 hat geschrieben:Zu C#: Hast ja Recht, auch Angestellte von Microsoft können gute Sachen machen. Der Typ von C# heißt Anders Hejlsberg oder so ähnlich, der hat früher bei Borland die Turbo Pascal Compiler geschrieben, mein Einstieg in Programmieren !!! Fals Du oder irgendwer anders Erfahrungen mit C# unter Linux gemacht hat, würde ich mich über Hinweise freuen. Ich bin halt ein Free-Software/Anti-Microsoft Typ.
@jdl
py2exe packt alles in ein executable.
@alle
Zum Thema C++-Lernen: So wie ich Stroustrup verstehe, rät er davon ab, erst C zu lernen, bevor man C++ lernt. Lieber gleich mit C++ anfangen, wenn das Ziel ist, C++ zu lernen. Aber auch auf die Gefahr hin, mich zu wiederholen, das heißt nicht, das man nicht C lernen soll. Ist eine schöne Sprache, besonders um Bits und Bytes zu verschieben.
Das gleiche Argument gilt beispielsweise auch für Smalltalk, schöne Sprache, aber wenn man C++ lernen will, bringt es nichts, vorher Smalltalk zu lernen. Smalltalk sollte man lernen, wenn man Smalltalk lernen will. Siehe auch die C++ FAQ Lite: http://www.parashift.com/c++-faq-lite/h ... l#faq-28.2. Ansonsten würde es ja was bringen, Algol zu lernen, bevor man irgendeine andere blockorientierte Programmiersprache lernt.
Gruß Martin
Ich geb's ja zu, in Wirklichkeit mag ich Emacs recht gerne. Bis auf den Look, ungefähr so attraktiv wie ich nach zwei Flaschen Korn, zuviel Kippen und 13 Stunden Schlaf zuwenig. Funktioniert aber einfach, wenn man sich erstmal ein bißchen eingearbeitet hat. Emacs, meine ich, ich bin nach einem Besäufnis nicht mehr funktionsfähig.GNU smalltalk kommt mit Emacs-"Frontend" daher? Da muss ich doch glatt mal nachschauen.
Da fällt mir doch glatt ein, wie Gtkmm das genau macht, die verwenden nämlich libsig++.Naja. libsig++ ist auch nicht soooo schön.
py2exe packt alles in ein executable.
@alle
Zum Thema C++-Lernen: So wie ich Stroustrup verstehe, rät er davon ab, erst C zu lernen, bevor man C++ lernt. Lieber gleich mit C++ anfangen, wenn das Ziel ist, C++ zu lernen. Aber auch auf die Gefahr hin, mich zu wiederholen, das heißt nicht, das man nicht C lernen soll. Ist eine schöne Sprache, besonders um Bits und Bytes zu verschieben.
Das gleiche Argument gilt beispielsweise auch für Smalltalk, schöne Sprache, aber wenn man C++ lernen will, bringt es nichts, vorher Smalltalk zu lernen. Smalltalk sollte man lernen, wenn man Smalltalk lernen will. Siehe auch die C++ FAQ Lite: http://www.parashift.com/c++-faq-lite/h ... l#faq-28.2. Ansonsten würde es ja was bringen, Algol zu lernen, bevor man irgendeine andere blockorientierte Programmiersprache lernt.
Gruß Martin
- BeS
- Moderator
- Beiträge: 3236
- Registriert: 17.04.2002 18:30:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Stuttgart
-
Kontaktdaten:
Naja Window.Forms sind für den kompatibilitäts-stack in der Entwicklung. Wie weit das aber jemals reichen wird weiß ich nicht, ich denke das Nummer 1 Toolkit für Mono ist Gtk#.jd hat geschrieben: Na ein Freund von MS bin ich auch nicht. Und closed-source nehme ich nur, wenn ich keine Alternative habe. Aber es gibt ja noch Mono. CLI-Tools, die mit Mono 1.1.6 unter Windows kompiliert sind, werden auf einer zweiten Kiste, auf der ein .NET Framework installiert ist, problemlos ausgeführt. Ich habe es nur noch nicht geschafft, eine GUI-Demo mit Window.Form (?) mit Mono zu kompilieren. Ist das bei Mono nicht dabei?
Für windows.forms kannst du dir evtl. mal dotGNU (http://www.dotgnu.org) ansehen, afaik sind die damit weiter. Aber wer braucht schon window.forms wenn er Gtk haben kann?
Zum Thema: Ich will jetzt nicht zu viel schreiben, ich denke es wurde schon vieles gesagt und letztlich muß jeder die Sprache nehmen mit der er am besten zurecht kommt.
Da du aber, wenn ich deine Beiträge richtig interpretiere, ein gewisses Interesse an Mono(C#) hast kann ich dich nur ermutigen es einfach mal aus zu probieren. Ich persönlich bin davon im GUI Bereich begeistert. So einfach wie mit Mono und Gtk# habe ich noch mit keinem andere Toolkit GUIs erstellen können.
Hier gibt es z.B. eine nette Demo zu Mono und Gtk#: http://nat.org/demos/
PS: die Sprachunabhängigkeit ist keine Theorie (wie weiter oben gesagt wurde) sondern praktische Realität, hier gibt es auch ein paar screencasts die das zeigen: http://primates.ximian.com/~lluis/blog/ ... .php?id=38
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support
Ich spreche von Freier Software!
Ich spreche von Freier Software!
- Beowulf666
- Beiträge: 1476
- Registriert: 06.10.2002 14:03:08
- Wohnort: Lübeck
-
Kontaktdaten:
So, ich würd gern mal ne Lanze für Java brechen.MartinL25 hat geschrieben: Zum Thema C++-Lernen: So wie ich Stroustrup verstehe, rät er davon ab, erst C zu lernen, bevor man C++ lernt. Lieber gleich mit C++ anfangen, wenn das Ziel ist, C++ zu lernen. Aber auch auf die Gefahr hin, mich zu wiederholen, das heißt nicht, das man nicht C lernen soll. Ist eine schöne Sprache, besonders um Bits und Bytes zu verschieben.
Erstmal mein Hintergrund:
Angefangen hab ich über QBasic, Pascak und Delphi hin zu C, C++, Prolog, Lisp und nen paar Scriptsprachen und bin grad bei Java hängengeblieben. SML war da auch noch irgendwo drin.
Contra gegen Java sind auf jeden Fall die Geschwindigkeit, wobei man abwägen muss, inwiefern das überhaupt noch eine Rolle spielt, wenn man Font- und Backend sauber getrennt hat. Und reine Konsolenanwendungen oder auch über Multithreading entkoppelte Backends sind mittlerweile verdammt schnell unter Java.
Was dann viele noch als Contra sehen, ist die fehlende Pointerfunktionalität. Genau das sehe ich aber als riesigen Vorteil dieser Sprache, die Fehlerresistenz und auch die Codelesbarkeit sich gigantisch. Und wer jetzt behauptet, er macht mit Pointern keine Fehler, dem glaub ich erstmal nicht Nen Schreibfehler kann dabei schon zu echt krassen Debuggingorgien führen. In diesem Zusammenhang muss man auch den Garbage Collector nennen, der aber auch imho das Problem hat, dass der genaue Zeitpunkt der Freigabe von Speicherplatz nicht definiert ist, was Java für embedded Anwendungen schwer brauchbar macht.
Was wiederum nen grosser Vorteil von Jave ist, ist die Oberflächengestaltung in Swing, die sich gut in die gesamte Sprache einfügt. Ich programmiere grad für die Uni nen Frontend, und bin von den Möglichkeiten recht überzeugt. Man kann auch mit Java recht schöne Oberflächen bauen, da werden einem nicht viele Möglichkeiten versperrt. Mir hat zumindest noch nichts gefehlt.
Der Entwicklungsprozess mit Java klapt auch recht gut, es gibt auch mit ant recht gute make-ähnliche Tools, die dann auch in Netbeans z.b. eingebunden werden können. Die Doku kann man dann über Tools wie Javadoc z.b. auch recht gut automatisch erstellen lassen.
Aber der grösste Vorteil von Java ist imho die Lesbarkeit des Quellcodes, wenn man sich nur nen bisschen Mühe gibt, kann man leicht verständlichen und gut strukturierten Quellcode schreiben, ohne sich allzu viel Mühe machen zu müssen. Kann man natürlich auch in C++, aber da tuts kaum einer freiwillig. Die Sprache Java ist aber eher auf sauberes programmieren ausgelegt, als C++, die als C-Ableger noch mit den Altlasten wie Pointern beladen ist, und "nur" um den objektorientierten Part erweitert wurde, wo man also immer noch recht simpel recht kranke Hacks reinschreiben kann, die keiner versteht.
Insofern ist Java auf jeden Fall ne Sprache, die man sich mal anschauen sollte.
Sorry, wenns nen bisschen unstrukturitert ist, bin schon recht müde.
CU
Martin
Jetzt auf SID mit Kernel 2.6.16.1 + XOrg + XFCE4.2.3: Noch mehr POWER!!!!
Next Step: Binford 8000 Super Debian
Next Step: Binford 8000 Super Debian
- peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Naja, vielleicht bin ich da auch etwas voreingenommen. Qt/Free 3 zu linken (Kompilieren ist nicht so das Problem) dauert bei mir etwa 10 Stunden.jd hat geschrieben: mingw wäre prächtig. Da ich sowie unter Debian entwickle, könnte ich dann ganz normal mit (Q)make arbeiten, und dann unter Windoze einfach in der MSYS-sh ein make starten. Die Compiler-Geschwindigkeit ist mir nicht soooo wichtig. Da kann ich dann Kaffee holen gehen.
Nein. Jikes ist kein Interpeter/JIT - Jikes macht Java-Quellcode->*.class-Dateien.Ich dachte Jikes wäre auch ein "schnellerer" JIT? Ist das nicht so?peschmae hat geschrieben:Jikes ist nur ein alternativer compiler. Der bringt dir gar nix.
GCJ bringt bei der Startzeit eventuell etwas Gewinn. Ist aber im Schnitt derzeit noch langsamer als Suns Java. Nach meinen Erfahrungen.
Ein Jit/Interpreter macht dann *.class-Dateien->Ausführen
Kann er unter anderem.Und GCJ soll doch native code produzieren.
Nein, ist nicht performanter. Nach meinen Erfahrungen - GCJ-kompiliertes Eclipse startet bei mir etwa gleich schnell wie mit Suns Java.Ist so ein echtes linux binary nicht performanter? Schlieslich ist doch GCJ nur ein front-end, dass den optimierenden code-generator von GCC nutzt(en sollte).
Sun hat halt auf der Optimierungsebene nicht nichts gemacht in den letzten 10 Jahren...
Die Umsetzung in SWT. Bei kleineren Programmen ist das nicht so extrem - aber guck mal Eclipse an. Da merkt man dann den Unterschied zu SWT/Fox gewaltig.GTK generell, oder nur die Umsetzung in SWT? Wenn ich mir Azureus ansehe, dann finde ich das eigentlich ganz gut gelungen.peschmae hat geschrieben:SWT bringt einiges Tempo im Vergleich zu Swing. Aber die Gtk-Implementierung hakt irgendwo - finde ich. Zu langsam.
Jede Menge Sachen - z.B. kannst du nicht von Widgets ableiten (d.h. es ist nicht empfohlen und du musst tricksen - und riskierst dabei auf die Nase zu fallen).Was stört dich an SWT? Kannst Du dein Tutorial nicht irgendwo hier im wiki oder so plazieren?
Es war jeweils nicht ganz einfach ein Programm auf allen SWT-Implementierungen laufen zu haben - in Details verhalten sich die verschieden. d.h. du musst jede testen.
Es fehlen Features - ok, das hat sich mittlerweile z.T. geändert (Browser-Widget, MDI (??))
Gibt noch anderes - ich guck mal dass ich meine Webseite wieder zum laufen bringe... - hatte einen Ftp-Upload abgebrochen und plötzlich durfte ich gar nicht mehr mit Ftp uploaden - keine Rechte mehr Dateien zu erstellen
Gibts. Ohne Layout-Manager würde das mit SWT wohl gar nicht gehen mit den verschiedenen Toolkits.Ach ja, was mit allen vielen GUIs auffällt, ist die Tatsache, dass sie alle für die Arbeit mit GUI-Designer entworfen sind. Wie sieht es mit Layout-Managern aus? Gibt es die unter SWT?
Wieso nicht? Musst halt den Interpreter mit in das Installationspaket packen.Hm. Es sind halt Scriptsprachen, die immer man unter Windoze leider immer irgendwie als EXE packen muss. Gibt es eigentlich eine Möglichkeit, dass Python zusammen mit dem Programm in einem Aufwasch mitinstalliert wird?
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
@Beowulf666:
Ich gebe gerne zu, daß Java gegenüber C++ Vorteile bei der Anwendungsprogrammierung hat. Das liegt halt an der "kleineren" Zielgruppe von Java. Und der Garbage Collector (der immer besser geworden ist) gehört mit Sicherheit dazu. Eines der vielen tollen Sachen, die Lisp der Computerwelt gebracht hat. Für C und C++ muß man entsprechende Libraries verwenden. Ich empfehle ich jedem, der nicht gerade Real-Time braucht, sich mal http://www.hpl.hp.com/personal/Hans_Boehm/gc/ anzuschauen. Und im Zweifelsfall ist ein anständiger GC schneller, als eine selbstgestrickte Speicherverwaltung.
Java ist lesbarer als C und C++, da stimme zu, aber so groß ist der Unterschied nicht. Lisp/Scheme gefällt mir beser (auch wenn das viele anders sehen). Am angenehmsten finde ich die Smalltalksyntax. Unary, binary und keyword messages und das wars. In C ist man irgendwann so weit, daß man folgende Klammern setzt 1 + 2 * 3 = 1 + (2 * 3).
Gruß Martin
Ich gebe gerne zu, daß Java gegenüber C++ Vorteile bei der Anwendungsprogrammierung hat. Das liegt halt an der "kleineren" Zielgruppe von Java. Und der Garbage Collector (der immer besser geworden ist) gehört mit Sicherheit dazu. Eines der vielen tollen Sachen, die Lisp der Computerwelt gebracht hat. Für C und C++ muß man entsprechende Libraries verwenden. Ich empfehle ich jedem, der nicht gerade Real-Time braucht, sich mal http://www.hpl.hp.com/personal/Hans_Boehm/gc/ anzuschauen. Und im Zweifelsfall ist ein anständiger GC schneller, als eine selbstgestrickte Speicherverwaltung.
Java ist lesbarer als C und C++, da stimme zu, aber so groß ist der Unterschied nicht. Lisp/Scheme gefällt mir beser (auch wenn das viele anders sehen). Am angenehmsten finde ich die Smalltalksyntax. Unary, binary und keyword messages und das wars. In C ist man irgendwann so weit, daß man folgende Klammern setzt 1 + 2 * 3 = 1 + (2 * 3).
Gruß Martin
Wie stabil ist GTK# unter Windoze? Oder besser: wie stabil ist GTK+ unter Windows? Gab es da nicht mal Probleme?BeS hat geschrieben:Naja Window.Forms sind für den kompatibilitäts-stack in der Entwicklung. Wie weit das aber jemals reichen wird weiß ich nicht, ich denke das Nummer 1 Toolkit für Mono ist Gtk#.
Für windows.forms kannst du dir evtl. mal dotGNU (http://www.dotgnu.org) ansehen, afaik sind die damit weiter. Aber wer braucht schon window.forms wenn er Gtk haben kann?
Was muss man (minimal) für GTK# für DLL's installieren (wenn man einen eigenen Installer macht)?
C# macht einen recht guten Eindruck und mit XP und dem .NET Framework scheint es unter Windows auch problemloser als Java zu laufen. Unter Linux sieht es aber anders aus. Bei Debian läuft ja (die Installation) weder Java noch Mono "problemlos". Das eine ist nicht dabei und das andere Steinalt.BeS hat geschrieben:Da du aber, wenn ich deine Beiträge richtig interpretiere, ein gewisses Interesse an Mono(C#) hast kann ich dich nur ermutigen es einfach mal aus zu probieren. Ich persönlich bin davon im GUI Bereich begeistert. So einfach wie mit Mono und Gtk# habe ich noch mit keinem andere Toolkit GUIs erstellen können.
Ich trau' es mich garnicht zu sagen. Ich habe mit Apple-II Basic angefangen, und bin dann recht schnell (dank Z80-Karte und CP/M) bei Turbo-Pascal 1.0 (noch mit Terminal-Emulation VT100 unter CP/M mit 48kb (!!) RAM und 2 180kB 5.25" Disketten) gelandet. Fragt mich lieber nicht wann das warBeowulf666 hat geschrieben:So, ich würd gern mal ne Lanze für Java brechen.
Erstmal mein Hintergrund:
Angefangen hab ich über QBasic, Pascak und Delphi hin zu C, C++, Prolog, Lisp und nen paar Scriptsprachen und bin grad bei Java hängengeblieben. SML war da auch noch irgendwo drin.
...ich hatte mir damals den Apple-II Nachbau als Bausatz bestellt und selbst zusammengelötet!
Wovon hängen die Ladezeiten ab? Manche (kleinen) Tools brauchen sehr lang, und Azureus geht doch recht schnell. Liegt das an Swing?Beowulf666 hat geschrieben:Contra gegen Java sind auf jeden Fall die Geschwindigkeit, wobei man abwägen muss, inwiefern das überhaupt noch eine Rolle spielt, wenn man Font- und Backend sauber getrennt hat. Und reine Konsolenanwendungen oder auch über Multithreading entkoppelte Backends sind mittlerweile verdammt schnell unter Java.
Stimmt. Ein ganz großer Vorteil ist auch das fehlen der Header. Das man jede Klasse in ein File packt ist sehr schön. Aber das macht Mono ja auch.Beowulf666 hat geschrieben:Aber der grösste Vorteil von Java ist imho die Lesbarkeit des Quellcodes, wenn man sich nur nen bisschen Mühe gibt, kann man leicht verständlichen und gut strukturierten Quellcode schreiben, ohne sich allzu viel Mühe machen zu müssen.
ich dacht eher an das Compilieren der Anwendungen. 10h wollte ich nicht warten. Meine bisherigen Projekte liegen alle unter 10min mit GCC. Das verkrafte ich gerade noch so.peschmae hat geschrieben:Naja, vielleicht bin ich da auch etwas voreingenommen. Qt/Free 3 zu linken (Kompilieren ist nicht so das Problem) dauert bei mir etwa 10 Stunden.
Hmm. Ich habe irgendwo gelesen, dass GCJ unds Classpath alle Zeit in die "Aufholjagd" stecken. Die Optimierungen kommen später. Naja...peschmae hat geschrieben:Kann er unter anderem.Und GCJ soll doch native code produzieren.
Nein, ist nicht performanter. Nach meinen Erfahrungen - GCJ-kompiliertes Eclipse startet bei mir etwa gleich schnell wie mit Suns Java.Ist so ein echtes linux binary nicht performanter? Schlieslich ist doch GCJ nur ein front-end, dass den optimierenden code-generator von GCC nutzt(en sollte).
SWT/Fox? Ich wußte gar nicht das es das gibt. Ist das besser? Das Design ist doch bestimmt das gleiche. Warum ist das dann "besser" als SWT/GTK?peschmae hat geschrieben:Die Umsetzung in SWT. Bei kleineren Programmen ist das nicht so extrem - aber guck mal Eclipse an. Da merkt man dann den Unterschied zu SWT/Fox gewaltig.
Das klingt jetzt nicht unbedingt so ermutigend...peschmae hat geschrieben:Jede Menge Sachen - z.B. kannst du nicht von Widgets ableiten (d.h. es ist nicht empfohlen und du musst tricksen - und riskierst dabei auf die Nase zu fallen).
Es war jeweils nicht ganz einfach ein Programm auf allen SWT-Implementierungen laufen zu haben - in Details verhalten sich die verschieden. d.h. du musst jede testen.
Es fehlen Features - ok, das hat sich mittlerweile z.T. geändert (Browser-Widget, MDI (??))
Mach mal...peschmae hat geschrieben:Gibt noch anderes - ich guck mal dass ich meine Webseite wieder zum laufen bringe... - hatte einen Ftp-Upload abgebrochen und plötzlich durfte ich gar nicht mehr mit Ftp uploaden - keine Rechte mehr Dateien zu erstellen
Unter VisualAge C++ (OS/2) gab es wirklich brauchbare Layout-Manager, die man auch wirklich "von Hand" anwenden konnte. Das habe ich bisher nicht mehr gesehen.peschmae hat geschrieben:Gibts. Ohne Layout-Manager würde das mit SWT wohl gar nicht gehen mit den verschiedenen Toolkits.