Wenn schon Objektorientiert, dann... mit welcher Sprache?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Wenn schon Objektorientiert, dann... mit welcher Sprache?

Beitrag von jd » 08.06.2005 20:14:17

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. :wink: 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". :wink:

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. :wink:

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.

svn
Beiträge: 16
Registriert: 27.02.2005 14:29:20

Beitrag von svn » 08.06.2005 23:43:31

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.

Benutzeravatar
se8i
Beiträge: 1017
Registriert: 08.11.2002 17:02:20
Wohnort: nähe Karlsruhe
Kontaktdaten:

Beitrag von se8i » 09.06.2005 00:20:20

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.
Jazz is not dead, it just smells funny.

Benutzeravatar
MartinL25
Beiträge: 437
Registriert: 17.04.2005 15:29:09

Beitrag von MartinL25 » 09.06.2005 02:22:23

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]

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 09.06.2005 15:25:47

svn hat geschrieben:Aber ich lerne OOP auschliesslich auf JAVA. Mein Dozent ist von Java überzeug.
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. :wink:
svn hat geschrieben:Als Tool wurde mir JBuilder ans Herz gelegt, dies gefiel mir aber garnicht und so bin ich bei Eclipse gelandet.
Eclipse macht einen guten Eindruck, nur der Editor schwächelt etwas. :wink:

Schau Dir mal DrJava an. Das erlaubt dir das interaktive Ausführen von "Funktionen", ohne das Du eine Applikation bauen musst.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 09.06.2005 15:47:54

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?

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 09.06.2005 15:58:26

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
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:- 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?
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: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.)
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.

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

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?
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.
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:- 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.
Ich entscheide mich für die Sprache. Der Rest muß da durch. :wink:
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
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. :wink:
MartinL25 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
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.htm

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!

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
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: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.
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:P.S. Nochmal zu Geschwindigkeit, Donald Knuth sagt (bzw. zitiert einen anderen Großen der Kunst) "Premature optimization is the root of all evil!"
Der Spruch ist gut. Wie gesagt, ging es mit bei der Frage nach Geschwindigkeit und Ressourcenverbrauch um die Erfahrungswerte.

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 09.06.2005 16:16:18

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
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: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
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. :wink:
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
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: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?
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.html

svn
Beiträge: 16
Registriert: 27.02.2005 14:29:20

Beitrag von svn » 09.06.2005 16:47:04

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?
Naja Sun durfte erstmal Patentgebüren entrichten an eine Firma die sich den Methodenaufruf patentieren lies.
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.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 09.06.2005 17:06:06

@ 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

Benutzeravatar
MartinL25
Beiträge: 437
Registriert: 17.04.2005 15:29:09

Beitrag von MartinL25 » 09.06.2005 17:52:51

@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 :wink:. 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

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 09.06.2005 18:39:34

MartinL25 hat geschrieben:
P.S. zum Thema C vor C++ lernen sagt Bjarne Stroustrup: http://www.research.att.com/~bs/bs_faq. ... erequisite
ja das trifft es denke ich ganz gut - kein Muss aber gut wenn man C wissen hat

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 09.06.2005 19:02:38

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

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... :D) aber ich bin dann recht bald wieder von SWT abgekommen. Qt ist netter zu programmieren und besser designt.
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.
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.
Finde ich auch. Von Sprachmischmasch halte ich recht wenig.


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

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 09.06.2005 20:05:49

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
Ich werde es ihm mal empfehlen.
meandtheshell hat geschrieben:meines wissens gibt es keien bessere Literatur für anfänger und fortgeschrittene - profis gehn nat. zu Bjarne Stroustrup's Literatur
Ihh, der Stroustrup.... :wink:
Den habe ich mir in seiner Erstausgabe in Englisch geholt. Das Englisch erschien mir seinerseit recht fürchterlich zu sein.

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 09.06.2005 20:09:22

meandtheshell hat geschrieben:ja das trifft es denke ich ganz gut - kein Muss aber gut wenn man C wissen hat
????? 8O

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. :wink:

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 09.06.2005 20:25:54

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.
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. :wink:
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.
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: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.
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:SWT bringt einiges Tempo im Vergleich zu Swing. Aber die Gtk-Implementierung hakt irgendwo - finde ich. Zu langsam.
GTK generell, oder nur die Umsetzung in SWT? Wenn ich mir Azureus ansehe, dann finde ich das eigentlich ganz gut gelungen.

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... :D) aber ich bin dann recht bald wieder von SWT abgekommen. Qt ist netter zu programmieren und besser designt.
Was stört dich an SWT? Kannst Du dein Tutorial nicht irgendwo hier im wiki oder so plazieren?

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?

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.
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:Und C++ mit Qt nicht vergessen ;)
Ach ja, das C++. Dabei wollte ich mich davon ja eigentlich lossagen....

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 09.06.2005 20:38:58

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 :wink:. Hat Bindings für Tk (auch ziemlich häßlich) und (habe ich noch nicht ausprobiert) Gtk+.
IBM VisualAge. Ich habe hier noch den VisualAge C++ Compiler für OS/2 rumstehen. Der sieht auch so hausbacken aus. :wink:

GNU smalltalk kommt mit Emacs-"Frontend" daher? Da muss ich doch glatt mal nachschauen.

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.
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:Ü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++.
Na, bis jetzt scheint keinem der MOC zu "gefallen". :wink:
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.
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: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.
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: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.
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?

Benutzeravatar
MartinL25
Beiträge: 437
Registriert: 17.04.2005 15:29:09

Beitrag von MartinL25 » 09.06.2005 22:41:55

@jdl
GNU smalltalk kommt mit Emacs-"Frontend" daher? Da muss ich doch glatt mal nachschauen.
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.
Naja. libsig++ ist auch nicht soooo schön.
Da fällt mir doch glatt ein, wie Gtkmm das genau macht, die verwenden nämlich libsig++. :wink:

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

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von BeS » 09.06.2005 23:11:52

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?
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? ;)

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!

Benutzeravatar
Beowulf666
Beiträge: 1476
Registriert: 06.10.2002 14:03:08
Wohnort: Lübeck
Kontaktdaten:

Beitrag von Beowulf666 » 09.06.2005 23:50:26

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

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 :twisted: 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 ;-)

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 10.06.2005 07:38:09

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. :wink:
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.
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.
Ich dachte Jikes wäre auch ein "schnellerer" JIT? Ist das nicht so?
Nein. Jikes ist kein Interpeter/JIT - Jikes macht Java-Quellcode->*.class-Dateien.
Ein Jit/Interpreter macht dann *.class-Dateien->Ausführen
Und GCJ soll doch native code produzieren.
Kann er unter anderem.
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).
Nein, ist nicht performanter. Nach meinen Erfahrungen - GCJ-kompiliertes Eclipse startet bei mir etwa gleich schnell wie mit Suns Java.

Sun hat halt auf der Optimierungsebene nicht nichts gemacht in den letzten 10 Jahren...
peschmae hat geschrieben:SWT bringt einiges Tempo im Vergleich zu Swing. Aber die Gtk-Implementierung hakt irgendwo - finde ich. Zu langsam.
GTK generell, oder nur die Umsetzung in SWT? Wenn ich mir Azureus ansehe, dann finde ich das eigentlich ganz gut gelungen.
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.

Was stört dich an SWT? Kannst Du dein Tutorial nicht irgendwo hier im wiki oder so plazieren?
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 (??))
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 ;)
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?
Gibts. Ohne Layout-Manager würde das mit SWT wohl gar nicht gehen mit den verschiedenen Toolkits.
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?
Wieso nicht? Musst halt den Interpreter mit in das Installationspaket packen.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
MartinL25
Beiträge: 437
Registriert: 17.04.2005 15:29:09

Beitrag von MartinL25 » 10.06.2005 13:16:28

@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

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 10.06.2005 14:13:43

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? ;)
Wie stabil ist GTK# unter Windoze? Oder besser: wie stabil ist GTK+ unter Windows? Gab es da nicht mal Probleme?

Was muss man (minimal) für GTK# für DLL's installieren (wenn man einen eigenen Installer macht)?
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.
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. :wink:

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 10.06.2005 14:21:00

Beowulf666 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 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 war :wink:

...ich hatte mir damals den Apple-II Nachbau als Bausatz bestellt und selbst zusammengelötet!
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.
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: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.
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.

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 10.06.2005 14:31:39

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.
ich dacht eher an das Compilieren der Anwendungen. 10h wollte ich nicht warten. :wink: Meine bisherigen Projekte liegen alle unter 10min mit GCC. Das verkrafte ich gerade noch so. :wink:
peschmae hat geschrieben:
Und GCJ soll doch native code produzieren.
Kann er unter anderem.
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).
Nein, ist nicht performanter. Nach meinen Erfahrungen - GCJ-kompiliertes Eclipse startet bei mir etwa gleich schnell wie mit Suns Java.
Hmm. Ich habe irgendwo gelesen, dass GCJ unds Classpath alle Zeit in die "Aufholjagd" stecken. Die Optimierungen kommen später. Naja...
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.
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: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 (??))
Das klingt jetzt nicht unbedingt so ermutigend... :wink:
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 ;)
Mach mal... :wink:

peschmae hat geschrieben:Gibts. Ohne Layout-Manager würde das mit SWT wohl gar nicht gehen mit den verschiedenen Toolkits.
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.

Antworten