# Welche Programmiersprache?



## Neurodeamon (1. Januar 2004)

Ich vermute mal, diese Frage spaltete die Programmiergemeinde schon immer in mehrere Lager.

Ich würde gerne wissen, welche Programmiersprache für Euch am meisten Sinn macht. Sie sollte möglichst Platformunabhängig sein und auch nicht unbedingt extrem schwer zu lernen sein.

Ich habe im Freundes- und Bekanntenkreis vielerlei Vorschläge bekommen, bin aber nicht ganz zufrieden mit den Antworten. REALBasic wurde mir Empfohlen, C und C++ natürlich. Ich weiß, die Hardcorer ASMen und echte Programmierer arbeiten nur binär 

Ich denke, das ich den Fehler gemacht habe mit PHP anzufangen und so den Mischmasch aus vielen Programmiersprachen kennengelernt zu haben. Wäre C oder eine ahnliche Programmiersprache für mich sinnig zu lernen oder sollte ich eine Alternative dazu in Erwägung ziehen?

Möge der War beginnen


----------



## SilentWarrior (1. Januar 2004)

Oh, das würde mich auch mal interessieren! Ich hab ja mal vor fünf Jahren oder so in der Schule Visual Basic programmiert (oje...) und dann vor einem Jahr oder so mal länger Pascal - das war noch ganz nett. Aber stimmt schon, PHP verdirbt einem alles. Mich würd ja C++ auch interessieren, nur find ich kein schlaues Tutorial. Kennt irgendjemand eins?


----------



## Christian Fein (1. Januar 2004)

Les dir bitte hierzu zudem den Thread PHP und Programmierstil durch. Dort wurde ähnliches auch diskutiert.

Das ich Java liebe, ist kein Geheimnis, aber ich denke bei dir passt Java wirklich am besten.
Auch der Rat C++ ist nicht schlecht. Wenn du eine von beiden Sprachen lernst, machst du auf jeden Fall keinen fehler.
C währe auch eine möglichkeit, aber die entwicklung beim Programmieren, geht eindeutig in richtung OOP und C muss mann nicht lernen um C++ zu verstehen.

Erstens sind diese 3 Sprachen die in der Industrie mit (leider VB) die beliebtesten, meistgenutzten Sprachen .
Zweitens decken diese Sprachen so viel an Wissen ab, damit lässt sich einfacher seine Kenntnisse auf andere Sprachen ausweiten.

Java ist etwas einfacher zu erlernen, als das bei C++ der Fall ist. Sobald aber die Hürde des Sprachumfang lernens überwunden ist, steht Java in Komplexität C++ in nichts nach. 
Gerade höhere Themen wie Enterprise Java Beans oder ähnlichem ist nicht allzu einfach zu verstehen.

Auch in C++ lässt sich mit viel Sorgfalt sehr portable Programmieren. Nicht plattformunabhängig, aber portabel.
Java hingegen ist! Plattformunabhängig.

C++ läuft schneller als Java. Java kommt auf ca 85 - 90 % der Geschwindigkeit von C++, tendenz steigend (mit jeder neuen Generation).
Nachteil bei Java: Langsame / Träge wirkende Oberflächen mit Swing. 
Swing (sprich die GUI Klassen von Java) hat den Nachteil das es nicht auf nativen GUI Elementen des Betriebssystem aufsetzt sondern sämmtliche Elemente selber zeichnet. Gerade auf älteren Rechner kann dies sich doch recht negativ auswirken. 
Bei Rechner der 2Ghz Klasse und aktuellem 1.4 Java SDK hat sich das Problem so gut wie gelöst.
Andere alternative, von mir auch bevorzugt, SWT. Setzt auf nativen Biblotheken des Betriebssystems auf und ist dementsprechend so schnell, das mann absolut keinen Unterschied zwischen nativen z.b C++ Programmen die MFC oder WinAPI nutzen und der SWT GUI  zu spüren ist.

Ich hoffe ich werde jetzt nicht von den VB Anhänger gevierteilt, aber Basic ist eine sterbende Sprache. Einzig Microsoft hält noch ein Basic Dialekt der produktiv eingesetzt wird. Aber auch hier ist eine ganz klare Tendenz weg von VB zu C# spürbar auch wenn dies gern bestritten wird um nicht böses Blut zu sähen.
Dennoch sind die meisten .net Vorträge in C# gehalten. In den .net Büchern wird ebenso C# zumeist bevorzugt, und auch im ersten Framework steht im zugehörigen MSDN Artikel der Rat das .net Framework mit C# zu erlernen.

Apropro C#:
Auch C# währe eine gute Möglichkeit einer guten, fähigen Sprache. Da C# in sehr vielen Teilen identisch ist wie Java (ist als Java Clone gedacht) , gelten viele Vorteile von Java auch für C#. C# führte recht hilfreiche Dinge ein wie ein foreach zum durchlaufen von Schleifen oder das Autoboxing von typen in ihre Wrapperklassen, was bei Java noch etwas umständlicher ist. Jedoch hat Sun richtig reagiert und so wie MS bei Sun sich Java als Vorlage für C# genommen hat, so hat nun Sun diese Vorteile auch in der kommenden Version implementiert. Die 1.5 Alpha ist schon erhältlich.
Nachteil C#: Plattformunabhängigkeit. Diese ist einfach nicht gegeben. ..
Es gibt zwar das mono Projekt welches sich zum Ziel gesetzt hat die .net Plattform auf Linux zu implementieren, jedoch wird vieles aufgrund von Patenten auf seiten Microsofts nicht möglich sein, weshalb eine Applikation angepasst werden muss bevor sie auf beiden Plattformen laufähig ist.
Ausser mann verwendet mono auch auf der Windows Plattform. Jedoch ist mono immer noch nicht  released, und das wird auch noch eine weile dauern.
Plattformunabhängigkeit 2: Handy, Palm Markt. So ziemlich jedes Handy das heutzutage ausgeliefert wird, ist Java Fähig. Sprich es ist relativ einfach Midlets (Applikationen für mobile Geräte) zu entwickeln, ob dies Spiele oder Anwendungen sind, alles ist recht einfach möglich mit Java. Microsoft versucht seid 3 Jahren ein Standbein im Handy Markt zu bekommen. Bisher gabs nur schlappen, abstürze des Handybetriebssystems bei dem einem Hersteller, Lizenzstreitigkeiten mit dem anderen Herrsteller, weshalb .net als Handy Entwicklungssprache noch in den Sternen steht, zumal Siemens, Sonyerricson, Nokia, Motorrolla viel Geld in die Java J2ME Entwicklung gepumpt haben. 

Letzter Punkt: 
Delphi/Kylix. Bzw Object Pascal. 
Eine schöne Sprache, die einem gut zum Programmieren lernen dienen kann. Oft unterschätzt und deshalb nicht ganz so oft anzutreffen wie die anderen Sprachen. Nachteil: Abhängigkeit von Borland, da diese einzige Produktive Umgebung bieten können um Object Pascal zu programmieren . Auch portable Programmierung möglich, soviel ich weiss aber nur auf 2 Plattformen beschränkt Windows / UNIX(Linux)

Hoffe das hilft etwas.

PS: schönes neues!


----------



## Christian Fein (1. Januar 2004)

> _Original geschrieben von SilentWarrior _
> *Mich würd ja C++ auch interessieren, nur find ich kein schlaues Tutorial. Kennt irgendjemand eins? *



Ja der Buchhändler deines Vertrauens. C++ anhand von Tutorials zu lernen ist ein schlechter Rat.


----------



## SilentWarrior (1. Januar 2004)

> Ja der Buchhändler deines Vertrauens. C++ anhand von Tutorials zu lernen ist ein schlechter Rat.


Hm... da hab ich leider negative Erfahrungen gemacht. Hab mir vor etwa einem Jahr (Vater, vergib mir! ) von einer eBookz-Seite "C++ in 21 Tagen" heruntergeladen - und bei Tag 6 hab ich nix mehr kapiert. Ich bin wirklich nicht der dümmste, aber das Buch war schrecklich. Sind alle Bücher so? Oder liegt's an der Sprache? Wenn nicht - welches schlaue Buch gibt's denn, wo ein Anfänger wirklich alles versteht?

(Sorry, dass ich jetzt hier weiterschreibe, aber das jetzt in den anderen Thread zu transferieren fände ich doch etwas umständlich)


----------



## Christian Fein (2. Januar 2004)

> _Original geschrieben von SilentWarrior _
> *Hm... da hab ich leider negative Erfahrungen gemacht. Hab mir vor etwa einem Jahr (Vater, vergib mir! ) von einer eBookz-Seite "C++ in 21 Tagen" heruntergeladen - und bei Tag 6 hab ich nix mehr kapiert. Ich bin wirklich nicht der dümmste, aber das Buch war schrecklich. Sind alle Bücher so? Oder liegt's an der Sprache? Wenn nicht - welches schlaue Buch gibt's denn, wo ein Anfänger wirklich alles versteht?
> 
> (Sorry, dass ich jetzt hier weiterschreibe, aber das jetzt in den anderen Thread zu transferieren fände ich doch etwas umständlich) *


Ich habe C++ auch mit in 21 Tagen Buch gelernt.
Und ja das liegt an der Sprache, C++ ist eine der am wenigsten Einsteigerfreundlichen Sprachen, und eine der Sprachen bei der mann am meisten Zeit brauch um sie zu beherrschen überhaupt.
Gleichzeitig auch die Sprache, die mann ruckzuck wieder verlernt wenn mann nicht mehr viel in ihr programmiert, das habe ich erst kürzlich, schmerzhaft erfahren müssen.


----------



## Alexander Schuc (2. Januar 2004)

> _Original geschrieben von Christian Fein _
> *Es gibt zwar das mono Projekt welches sich zum Ziel gesetzt hat die .net Plattform auf Linux zu implementieren, jedoch wird vieles aufgrund von Patenten auf seiten Microsofts nicht möglich sein, weshalb eine Applikation angepasst werden muss bevor sie auf beiden Plattformen laufähig ist.
> Ausser mann verwendet mono auch auf der Windows Plattform. Jedoch ist mono immer noch nicht  released, und das wird auch noch eine weile dauern.*



Das mono nicht nicht released ist stimmt so nicht ganz. Im moment kann Version 0.29 von der mono Downloadsite bezogen werden.

Da hier ja gerade so ein netter Thread ist zu Programmiersprachen, kann ich ja auch gleich Chris etwas fragen.
Gibt es eigentlich zu _Interop_, und _unmanaged Code_ Gegenstücke in Java?


----------



## Konstantin Gross (2. Januar 2004)

> _Original geschrieben von Christian Fein _
> *...Plattformunabhängigkeit 2: Handy, Palm Markt. So ziemlich jedes Handy das heutzutage ausgeliefert wird, ist Java Fähig. Sprich es ist relativ einfach Midlets (Applikationen für mobile Geräte) zu entwickeln, ob dies Spiele oder Anwendungen sind, alles ist recht einfach möglich mit Java. Microsoft versucht seid 3 Jahren ein Standbein im Handy Markt zu bekommen...
> *



Das ist so nicht ganz richtig, man kann schon mit .NET für PDA Anwendungen/Spiele programmieren das ist möglich seit dem Compact Framework .NET


----------



## Christian Fein (2. Januar 2004)

> _Original geschrieben von Alexander Schuc _
> *Das mono nicht nicht released ist stimmt so nicht ganz. Im moment kann Version 0.29 von der mono Downloadsite bezogen werden.
> 
> Da hier ja gerade so ein netter Thread ist zu Programmiersprachen, kann ich ja auch gleich Chris etwas fragen.
> Gibt es eigentlich zu Interop, und unmanaged Code Gegenstücke in Java? *



Version 0.29 ist keine Release. 
Release beginnt bei 1.0 auch bzw gerade bei OpenSource Projekten.
Zudem sind viele Klassen, bei meinem kurzen Überblick habe ich ca 30 % gesehen die noch nicht mal implementiert sind.
Das ding ist nichtmal im Alpha Stadium. Eine 0.29 ist ein Developement Release. 



> Gibt es eigentlich zu Interop, und unmanaged Code Gegenstücke in Java?


managed Code ist eine eigenschafft des .net Framework.  Java ist grundsätzlich das was Microsoft so schön als Managed Code bezeichnet.
Die ganze Garbage Collection Geschichte gibts schon seid einer Ewigkeit.
Im grunde kannst du nach der Faustregel gehen: Was in .net umgesetzt worden ist, gabs schon seid Jahren bei Java. 
Das fängt bei den sogenannten Webforms an und geht über die komplette ASP.net  Architektur, über der Struktur und beschaffenheit des .net Frameworks bis hin zur eigentlichen Sprache C#.
All das wurde recht gut von Java kopiert.

interop: 
msdn sagt:
.NET Interop: Get Ready for Microsoft .NET by Using Wrappers to Interact with COM-based Applications

Gerade das sind dinge die .net plattformabhängig machen. Es gibt COM nur auf Windows, und sowas hat in einer plattformunabhängigen Sprache nichts zu suchen. Wenn ich DCOM / COM brauche sollte ich lieber CORBA/JB nehmen, das ist plattformunabhängig und ISO Standard.



> _Original geschrieben von Counterfeit _
> *Das ist so nicht ganz richtig, man kann schon mit .NET für PDA Anwendungen/Spiele programmieren das ist möglich seit dem Compact Framework .NET  *


Das ist nett, nur  gibt es so gut wie keine Windows Handys. Die die am Markt wahren sind wegen unzuverlässigkeit wieder in der Versenkung verschwunden. 
Also was nutzt dir die möglichkeit dafür zu programmieren?
Java kann so ziemlich jedes Handy.


----------



## Konstantin Gross (2. Januar 2004)

> _Original geschrieben von Christian Fein _
> *Das ist nett, nur  gibt es so gut wie keine Windows Handys. Die die am Markt wahren sind wegen unzuverlässigkeit wieder in der Versenkung verschwunden.
> Also was nutzt dir die möglichkeit dafür zu programmieren?
> Java kann so ziemlich jedes Handy. *



Ich habe ja auch nur PDAs erwähnt, für Handy ist mir klar das es wenige Windows Handys gibt.


----------



## Alexander Schuc (2. Januar 2004)

> _Original geschrieben von Christian Fein _
> *managed Code ist eine eigenschafft des .net Framework.  Java ist grundsätzlich das was Microsoft so schön als Managed Code bezeichnet.
> Die ganze Garbage Collection Geschichte gibts schon seid einer Ewigkeit.
> Im grunde kannst du nach der Faustregel gehen: Was in .net umgesetzt worden ist, gabs schon seid Jahren bei Java.
> ...



Zu mono, gut, habe ich dich ein wenig falsch verstanden. Hätte es mir aber denken können, wollte es aber nicht so stehen lassen, klang so abschreckend. 

Übrigens, so wie ich das bis jetzt mitbekommen habe wird es von Mono aus möglich sein z.b. Methoden aus der libc.so zu importieren, wie unter Windows Methoden dlls.
Damit dann ein Programm unter z.b. Windows funktionieren kann gibts es das 'dllmap' Element in der Konfigurationsdatei der Anwendung.
Damit kann man ein Gegenstück für die verwendete Library angeben sollte diese nicht existieren.

Also, Interop muss nicht nur mit COM zu tun haben.
Nur leider kommt dies alles nicht direkt von Microsoft.


----------



## Christian Fein (2. Januar 2004)

> _Original geschrieben von Alexander Schuc _
> *
> Übrigens, so wie ich das bis jetzt mitbekommen habe wird es von Mono aus möglich sein z.b. Methoden aus der libc.so zu importieren, wie unter Windows Methoden dlls.
> Damit dann ein Programm unter z.b. Windows funktionieren kann gibts es das 'dllmap' Element in der Konfigurationsdatei der Anwendung.
> ...



Unter dem Strich bleibt ein negativer Beigeschmack. Die möglichkeit COM Objecte zu nutzen hat in einer Plattformunabhängigen Sprache nichts verloren.

Schon jetzt gibt es so viel Dinge auf die mann achten muss um auch nur einigermassen plattformunabhängig zu sein, sprich später mono und .net fähige Programme zu entwickeln das ein Arbeiten damit zur Qual wird.
.net ist eine schöne Sache, aber in der produktiven Arbeit auf Windows beschränkt.

Wir haben eventuell eine verschiedene Vorstellung weshalb eine Programmiersprache lernen. Zum Spass, oder auch als Zukunftsperspektive. 
mono ist leider noch ein gutes Stück entfernt bevor ich es vor meinem Chef verantworten könnte, mono für ein Projekt zu nutzen.
Zudem hat das mono Projekt so massig schwierigkeiten mit den Lizenzen und Patenten von Microsoft, das es noch ungewiss ist, ob überhaupt das geplante so umgesetzt werden kann. Wer sich da ein bischen informieren will, sollte die mono maillingliste abonnieren, da graust es einen.


----------



## Alexander Schuc (2. Januar 2004)

> _Original geschrieben von Christian Fein _
> *Unter dem Strich bleibt ein negativer Beigeschmack. Die möglichkeit COM Objecte zu nutzen hat in einer Plattformunabhängigen Sprache nichts verloren.*



Schon klar, um wirklich plattformunabhängig zu sein darf man ja nur die vom Framework bereitgestellten Klassen verwenden.
Für die Windowsprogrammierung ist es allerdings recht praktisch. Das Clipboard Programm von mir das hier im CodersTalk wo rumliegt wäre ohne importieren einer Methode der user32.dll nicht möglich gewesen.



> _Original geschrieben von Christian Fein _
> *Schon jetzt gibt es so viel Dinge auf die mann achten muss um auch nur einigermassen plattformunabhängig zu sein, sprich später mono und .net fähige Programme zu entwickeln das ein Arbeiten damit zur Qual wird.
> .net ist eine schöne Sache, aber in der produktiven Arbeit auf Windows beschränkt.*



Leider ja, vorallem wenn es sich um GUI Anwendungen handelt.



> _Original geschrieben von Christian Fein _
> *Wir haben eventuell eine verschiedene Vorstellung weshalb eine Programmiersprache lernen. Zum Spass, oder auch als Zukunftsperspektive.
> mono ist leider noch ein gutes Stück entfernt bevor ich es vor meinem Chef verantworten könnte, mono für ein Projekt zu nutzen.
> Zudem hat das mono Projekt so massig schwierigkeiten mit den Lizenzen und Patenten von Microsoft, das es noch ungewiss ist, ob überhaupt das geplante so umgesetzt werden kann. Wer sich da ein bischen informieren will, sollte die mono maillingliste abonnieren, da graust es einen. *


Nun, begonnen hat es bei mir zwar aus Spass, mittlerweile möchte ich allerdings auch eine Ausbildung in diesem Bereich anstreben.
Muss aber erstmal durch die Matura.

Aber wozu antworte ich, du weisst ja eh alles/mehr als ich. =)


----------



## Neurodeamon (2. Januar 2004)

> _Original geschrieben von SilentWarrior _
> *Oh, das würde mich auch mal interessieren! Ich hab ja mal vor fünf Jahren oder so in der Schule Visual Basic programmiert (oje...) und dann vor einem Jahr oder so mal länger Pascal - das war noch ganz nett. Aber stimmt schon, PHP verdirbt einem alles. Mich würd ja C++ auch interessieren, nur find ich kein schlaues Tutorial. Kennt irgendjemand eins? *



Tutorials kenne ich viele, aber da halte ich auch nicht viel von. Sind meistens besch***eiden geschrieben.

Ein gutes Buch ist:
c++ pocket: Der leichte Einstieg
Peter Wollschlaeger
Broschiert - 378 Seiten - Markt+Technik 
ISBN: 3827265010

Die Amazon Bewertungen sind recht positiv.
Ich habe es jetzt hier vorliegen. Das schöne daran ist:
Es ist nicht für komplette Anfänger. Man sollte schon wissen was integer, float, array, schleifen, etc. sind. Aber das steht auch im Vorwort des Buches.

Zumindest hier hat mir PHP ein gutes Vorverständnis gebracht.

Ich glaube C++ hat ziemliches Potenzial. Selbst wenn es schwer zu lernen ist. Mal schauen was ich so damit bauen kann. Vor einigen Jahren hätte ich nicht mal daran gedacht PHP zu benutzen. Pascal war mir ein GRÄUL und Basic hat mir eine Hasskappe beschert ... echt ööööde... Lag vielleicht an meinen Lehrern, die Programmierung nur mit mathematischen Problemen in Verbindung brachten und nicht mit nützlicher Software.


----------



## Christian Fein (2. Januar 2004)

> _Original geschrieben von Alexander Schuc _
> *Schon klar, um wirklich plattformunabhängig zu sein darf man ja nur die vom Framework bereitgestellten Klassen verwenden.
> *



Leider, nein, viele Teile des Frameworks werden von mono aufgrund von Softwarepatenten nicht implementiert. Sprich es ist auch so nicht möglich 
plattformunabhängig zu programmieren.
Soviel ich weiss ist auch ADO.net davon betroffen. 



> *
> Für die Windowsprogrammierung ist es allerdings recht praktisch. Das Clipboard Programm von mir das hier im CodersTalk wo rumliegt wäre ohne importieren einer Methode der user32.dll nicht möglich gewesen.
> *



Nein das ist sache des Frameworks als mittler zu dienen. Ich kann dir gern das Clipboard Programm programmieren, so das es ohne neukompilation unter sämmtlichen Plattformen läuft, auf denen das J2SDK verfügbar ist.
Also u.a UNIX, Linux, Mac, OS/2, BeOS usw.
Da ist der knackende Punkt.



> _Original geschrieben von Alexander Schuc _
> *
> Nun, begonnen hat es bei mir zwar aus Spass, mittlerweile möchte ich allerdings auch eine Ausbildung in diesem Bereich anstreben.
> Muss aber erstmal durch die Matura.
> *



Da wünsch ich dir viel erfolg, aber auf der Uni wirst du eher mit Java und C++ und Pascal konfrontiert. .net spielt u.a im akademischen Bereich eine untergeordnete Rolle.




> _Original geschrieben von Alexander Schuc _
> *
> Aber wozu antworte ich, du weisst ja eh alles/mehr als ich. =) *


Ich hoffe du meintest das jetzt nicht im negativen Sinne. Ich versuch mich ja zurückzuhalten, was .net betrifft. 
Punkt ist: Ich habe die .net Foren auf tutorials.de eigentlich eingerichtet, weil ich bei der Beta 2 des Frameworks sehr an .net interressiert  war. 
Meine Hoffnung war das Microsoft das Projekt sauber durchzieht, da auch ihre Software, was Entwicklungsplattformen wie VS und ähnlichem doch aussergewöhnlich gut war. Ebenso ist VS.net eine Runde sache, aber irgendwie hat mein Interresse und das damit zusammenhängenden Informieren, lesen der mono Maillist, MSDN Artikel usw, leider meine Befürchtungen war werden lassen.
.net ist als Java Klone gedacht, ohne den grossen Vorteil von Java wirklich mitzunehmen, die Plattformunabhängigkeit, und das stösst mir bitter auf, weil   mich der Zeit die ich in .net investiert habe beraubt fühle.
Deshalb kann es mannchmal vorkommen das eine gewisse Abneigung gegenüber .net vorhanden ist. Auch wenn es eine immer noch recht runde Sache ist.


----------



## Alexander Schuc (2. Januar 2004)

> _Original geschrieben von Christian Fein _
> *Leider, nein, viele Teile des Frameworks werden von mono aufgrund von Softwarepatenten nicht implementiert. Sprich es ist auch so nicht möglich
> plattformunabhängig zu programmieren.
> Soviel ich weiss ist auch ADO.net davon betroffen.
> *


Mh, der Namespace System.Data ist zu 90% implementiert, und es gibt einige ADO.net DataProvider für verschiedene DB-Systeme.



> _Original geschrieben von Christian Fein _
> *Nein das ist sache des Frameworks als mittler zu dienen. Ich kann dir gern das Clipboard Programm programmieren, so das es ohne neukompilation unter sämmtlichen Plattformen läuft, auf denen das J2SDK verfügbar ist.
> Also u.a UNIX, Linux, Mac, OS/2, BeOS usw.
> Da ist der knackende Punkt.
> *


Die Methode welche ich importiert habe ist 'SetClipboardViewer', damit mein Programm bei änderungen der Zwischenablage benachrichtigt wird. Reine .net Mittel hab ich keines gefunden.
Wenn du willst zeige ich dir den Code. Wenn du Zeit hast es in Java 'nachzuprogrammieren', einen 'Leser' hättest. (mich) =)



> _Original geschrieben von Christian Fein _
> *Da wünsch ich dir viel erfolg, aber auf der Uni wirst du eher mit Java und C++ und Pascal konfrontiert. .net spielt u.a im akademischen Bereich eine untergeordnete Rolle.*


Danke. Das mit den Sprachen ist mir klar. Java machen wir bereits jetzt an meiner Schule, allerdings etwas langsam. In den letzten Jahren hätten wir viel mehr machen können, nur leider gibts es nicht viele die mitkommen. 
C# ansich habe ich nur wegen ASP.net begonnen zu lernen, allerdings bin ich doch länger bei der 'Desktop-programmierung' geblieben.
Im übrigen, nur die Sprache die ich bei einer Ausbildung lernen würde, würder sicherlich nicht ausreichen um flexibel genug zu sein für diesen Beruf.



> _Original geschrieben von Christian Fein _
> *Ich hoffe du meintest das jetzt nicht im negativen Sinne. Ich versuch mich ja zurückzuhalten, was .net betrifft. *


Nein, meinte ich eigentlich recht positiv. Hab eh lang genug überlegt wie ichs  formulieren soll, damit es nicht negativ klingt. Ist mir schlussendlich wohl nicht gelungen.
Du hast ja mehr Wissen, und vorallem auch mehr Erfahrung in diesem Bereich.



> _Original geschrieben von Christian Fein _
> *Punkt ist: Ich habe die .net Foren auf tutorials.de eigentlich eingerichtet, weil ich bei der Beta 2 des Frameworks sehr an .net interressiert  war.
> Meine Hoffnung war das Microsoft das Projekt sauber durchzieht, da auch ihre Software, was Entwicklungsplattformen wie VS und ähnlichem doch aussergewöhnlich gut war. Ebenso ist VS.net eine Runde sache, aber irgendwie hat mein Interresse und das damit zusammenhängenden Informieren, lesen der mono Maillist, MSDN Artikel usw, leider meine Befürchtungen war werden lassen.
> .net ist als Java Klone gedacht, ohne den grossen Vorteil von Java wirklich mitzunehmen, die Plattformunabhängigkeit, und das stösst mir bitter auf, weil   mich der Zeit die ich in .net investiert habe beraubt fühle.
> Deshalb kann es mannchmal vorkommen das eine gewisse Abneigung gegenüber .net vorhanden ist. Auch wenn es eine immer noch recht runde Sache ist. *



Microsoft ist leider Microsoft. Plattformunabhängigkeit klingt gut, und lässt sich gut verkaufen, dennoch ists nicht so rosig wie sie es eigentlich verkauft haben. Verkaufen und bewahren der Kundschaft ist wichtig.

Ich finde aber auch ohne wirkliche Plattformunabhängigkeit ist das .net Framework mit C# eine schöne Umgebung zum programmieren.
C# ist eine moderne, produktive Sprache, die mir vom 'Aufbau' her übrigens besser gefällt als Java.
Die Art wie diverse Sachen in C# gelöst sind finde ich rein subjektiv schöner als in Java. Wenn ich dann nach längerer Zeit wieder was in Java schreibe ärgere ich mich dann meist darüber.


----------



## Christian Fein (2. Januar 2004)

> _Original geschrieben von Alexander Schuc _
> *Mh, der Namespace System.Data ist zu 90% implementiert, und es gibt einige ADO.net DataProvider für verschiedene DB-Systeme.
> *



Ja aber dennoch steht der Patent Finger auf ADO.net. 
Es mag möglich sein, das sich dies in der letzten Zeit geändert hat, aber Windows.Forms und ADO so habe ich das in errinnerung, sind aufgrund Patente unsicher inwieweit es implementiert wird. 



> _Original geschrieben von Alexander Schuc _
> *
> Die Methode welche ich importiert habe ist 'SetClipboardViewer', damit mein Programm bei änderungen der Zwischenablage benachrichtigt wird. Reine .net Mittel hab ich keines gefunden.
> Wenn du willst zeige ich dir den Code. Wenn du Zeit hast es in Java 'nachzuprogrammieren', einen 'Leser' hättest. (mich) =)
> *



Wenn ich da die Zeit finde gerne 




> _Original geschrieben von Alexander Schuc _
> *
> Danke. Das mit den Sprachen ist mir klar. Java machen wir bereits jetzt an meiner Schule, allerdings etwas langsam. In den letzten Jahren hätten wir viel mehr machen können, nur leider gibts es nicht viele die mitkommen.
> C# ansich habe ich nur wegen ASP.net begonnen zu lernen, allerdings bin ich doch länger bei der 'Desktop-programmierung' geblieben.
> ...


Ja und nein, das kommt immer darauf an in welcher Firma, welche Software mann schreibt. Ich arbeite in einer sehr kleinen Firma, die vieles Outsourced. Dort bin ich aber für sämmtliche Implementierungen verantwortlich. Das hat den Vorteil, es wird nie langweilig. 
Im letzten Jahr habe ich beruflich eingesetzt:
Hautpsächlich Java, ASP mit JScript , PHP, C# für einen XML Datenserver, ActionScript für eine kleines Projekt zwischendurch. Ich hatte zu Beginn des Projektes absolut keine Ahnung von Actionscript und musste innerhalb von 2 Wochen, ActionScript bis zu einem gewissen Masse lernen um das Rohgerüst eines Flashspielchen anpassen zu können. War interressant 
In anderen Firmen sieht es anders aus, es gibt Softwarefirmen die wirklich reines VB programmieren, und aus dieser Ecke auch nicht herauswollen, oder ähnliches.




> _Original geschrieben von Alexander Schuc _
> *
> Nein, meinte ich eigentlich recht positiv. Hab eh lang genug überlegt wie ichs  formulieren soll, damit es nicht negativ klingt. Ist mir schlussendlich wohl nicht gelungen.
> Du hast ja mehr Wissen, und vorallem auch mehr Erfahrung in diesem Bereich.
> *



Mir wurde nur schon nachgesagt, ich wirke teilweise arrogant und rechthaberisch 
drum, frage ich lieber nochmal nach, denn das ist mir selber so gar
nicht bewusst.



> _Original geschrieben von Alexander Schuc _
> *
> Microsoft ist leider Microsoft. Plattformunabhängigkeit klingt gut, und lässt sich gut verkaufen, dennoch ists nicht so rosig wie sie es eigentlich verkauft haben. Verkaufen und bewahren der Kundschaft ist wichtig.
> *



Ja leider, der Punkt stinkt mich doch sehr an.



> _Original geschrieben von Alexander Schuc _
> *
> Ich finde aber auch ohne wirkliche Plattformunabhängigkeit ist das .net Framework mit C# eine schöne Umgebung zum programmieren.
> C# ist eine moderne, produktive Sprache, die mir vom 'Aufbau' her übrigens besser gefällt als Java.
> ...



Ja C# ist sehr gut, gefällt mir auch, aber was genau fehlt dir bei Java, oder was ist bei C# besser implementiert?
Oftmals ist es so, das jenes welches bei Java genauso vorhanden ist, aber
dir eventuell nicht bekannt ist. Währe interressant zu erfahren.

Mir fallen momentan nur 2 Dinge ein, die bei Java fehl(t)en und bei C# vorhanden sind.
- Autoboxing
- foreach iteration

Beide Dinge sind bei Java 1.5 implementiert. Zudem kommen Generics sprich Templates, auch bei C# wird Generics in kommenden Versionen implementiert.

Mannche sehen die .net Art von Properties als ein Vorteil. Das sehe ich absolut anders, ich mag die get / set / is Methoden rein subjectiv lieber.


----------



## Alexander Schuc (2. Januar 2004)

> _Original geschrieben von Christian Fein _
> *Mir wurde nur schon nachgesagt, ich wirke teilweise arrogant und rechthaberisch
> drum, frage ich lieber nochmal nach, denn das ist mir selber so gar
> nicht bewusst.*


Wärest du ein bestimmter Bekannter meinerseits und würdest so schreiben (Gut wärest du er, könntest du nicht so schreiben da dir das wissen fehlen würde) würde ich das durchaus auch behaupten. Aber ich fined passt schon so wie du schreibst. (Ich hoffe das kommt nun richtig rüber  )



> _Original geschrieben von Christian Fein _
> *Ja C# ist sehr gut, gefällt mir auch, aber was genau fehlt dir bei Java, oder was ist bei C# besser implementiert?
> Oftmals ist es so, das jenes welches bei Java genauso vorhanden ist, aber
> dir eventuell nicht bekannt ist. Währe interressant zu erfahren.
> ...



Wo du gerade Properties ansprichst, die fehlen mir bei Java wirklich.
Desweiteren finde ich Eventhandling unter .net auch besser, allerdings habe ich mich da nur mit grundlegenden Sachen in Java beschäftigt. (ActionListener hauptsächlich) Wie man eigene Events unter Java erstellt hab ich noch immer nicht entdeckt, muss ich mal besser suchen. Evt. kannst du mir da ja einen Hinweis geben.

Ich kann aber ansich nicht wirklich sagen das ich die Technik hinter Java, bzw. die Art wie etwas implementiert ist, nicht gefällt. Eigentlich ist es ein rein subjektives _nicht gefallen von Java_ gegenüber C#.

Im Anhang befindet sich das besagte Clipboard-Programm.


----------



## Christian Fein (2. Januar 2004)

> _Original geschrieben von Alexander Schuc _
> *
> Wo du gerade Properties ansprichst, die fehlen mir bei Java wirklich.
> *



Die sind doch da. Private Member mit Zugriffsmethoden hast du genauso. Die Properties von .net sind nichts anderes, nur das die Schreibweise anders ist. Das gefällt mir rein Subjectiv nicht, denn es sind nichts anderes als private Member. Nur bekommen sie bei Komponenten Programmierung eine bedeutung, dies wird bei Java durch
getPropertiename()
setPropertiename()
isPropertiename()
Methoden verwirklicht.  Die im übrigen meine IDE automatisch erstellt.



> _Original geschrieben von Alexander Schuc _
> *
> Desweiteren finde ich Eventhandling unter .net auch besser, allerdings habe ich mich da nur mit grundlegenden Sachen in Java beschäftigt. (ActionListener hauptsächlich) Wie man eigene Events unter Java erstellt hab ich noch immer nicht entdeckt, muss ich mal besser suchen. Evt. kannst du mir da ja einen Hinweis geben.
> *



Ich finde gerade das Eventmodel mit  Listener und  Adapterklassen einwandfrei verständlich. 


```
private void tuWas()  {
  out.println("Status geändert!); 
}

foo.addSelectionListener(new SelectionAdapter() {
  public void selectionChanged(SelectionEvent e) {
       tuWas();
   }
};
```

Listener sind Interfaces. Nachteil ist das bei  Zuweisung eines Interfaces an foo sämmtliche Methoden implementiert werden müssen. Da dies bei mannchen Listener Klassen zeitaufwendig sein kann, gibt es die Adpaterklassen, so das nur jene Methoden überschrieben werden müssen die 

http://java.sun.com/docs/books/tutorial/uiswing/events/handling.html
Gibt eine wunderbare einführung in sämmtliche vorhandenen Listener Klassen, und ebenso die möglichkeit eigene zu schreiben. 
Ich persöhnlich bin noch nie in die Situation gekommen einen eigenen
schreiben zu wollen, welche Situation verlangt dies?




> _Original geschrieben von Alexander Schuc _
> *
> Ich kann aber ansich nicht wirklich sagen das ich die Technik hinter Java, bzw. die Art wie etwas implementiert ist, nicht gefällt. Eigentlich ist es ein rein subjektives nicht gefallen von Java gegenüber C#.
> 
> Im Anhang befindet sich das besagte Clipboard-Programm.  *


Schau ich mir doch mal an


----------



## Matthias Reitinger (2. Januar 2004)

Falls noch Interesse an C++-Tutorials besteht...

http://www.c-plusplus.de/c___1.htm

Das erste von den dort aufgeführten kann auch als Wochenend-Auffrischkurs missbraucht werden, ich spreche aus Erfahrung 

PS: Ach ja, zum Thema... es gibt nicht "die" Programmiersprache. Welche Programmiersprache man letztendlich für ein Projekt verwendet, hängt immer von den Anforderungen ab. Aber wenn es nur darum geht, "moderne Programmierung" zu erlernen (sprich: OOP/OOA), so würde ich C# oder Java empfehlen. C++ ist oft unnötig verwirrend.


----------



## Alexander Schuc (2. Januar 2004)

> _Original geschrieben von Christian Fein _
> *Die sind doch da. Private Member mit Zugriffsmethoden hast du genauso. Die Properties von .net sind nichts anderes, nur das die Schreibweise anders ist. Das gefällt mir rein Subjectiv nicht, denn es sind nichts anderes als private Member. Nur bekommen sie bei Komponenten Programmierung eine bedeutung, dies wird bei Java durch
> getPropertiename()
> setPropertiename()
> ...


Mit _die fehlen mir bei Java wirklich._ meinte ich, dass sie mir so wie sie in C# vorhanden sind in Java fehlen würden. 



> _Original geschrieben von Christian Fein _
> *Ich finde gerade das Eventmodel mit  Listener und  Adapterklassen einwandfrei verständlich.
> 
> *
> ...



Irgendwie haben die dort gelisteten Events alle etwas mit einer GUI / einem GUI-Element zu tun. Oder übersehe ich etwas?
Vor ein paar Wochen habe ich mir eine Komponente geschrieben, welche ein Webinterface bereitstellte. Und dort habe ich z.b. ein Event geschrieben welches von meiner Komponente ausgelöst wurde, wenn ein User Formulardaten übertragen hat



> _Original geschrieben von Christian Fein _
> *Schau ich mir doch mal an  *


Viel Spass, ist aber nichts größes.


----------



## Christian Fein (2. Januar 2004)

> _Original geschrieben von Alexander Schuc _
> *
> Irgendwie haben die dort gelisteten Events alle etwas mit einer GUI / einem GUI-Element zu tun. Oder übersehe ich etwas?
> Vor ein paar Wochen habe ich mir eine Komponente geschrieben, welche ein Webinterface bereitstellte. Und dort habe ich z.b. ein Event geschrieben welches von meiner Komponente ausgelöst wurde, wenn ein User Formulardaten übertragen hat
> *



Ein Event ist eigentlich nicht dazu da um Codeablauf zu gestallten.  
Ein Vorteil den ein Event dort bringen soll, erschliesst sich mir nicht, eher den grossen Nachteil das dies schwer Nachvollziehbaren Code ergibt.

Notfalls kannst du auch eine Exception werfen, das geht noch einfacher:


```
try {
   dataExists();
} catch( UncheckedDataException e) {
   checkData();
} finally {
   saveData();
}
```

Aber auch das halte ich für unnötig und eher schlecht. In einer Webapplikation haben Events eigentlich nichts zu suchen. Events sind zeitlich unvorhersagbares Auftreten von Zuständen.
Bei Webapplikationen gibt es in dem Fall nur 2 Zustände und diese Treten immer linear auf. Sprich:
- Daten vorhanden
- Daten nicht vorhanden.

Ich denke gerade an den legendären Programmierer - Satz:
* "Keep it stupid simple"* 

EventHandling ist eher ein notwendiges Übel bei GUI Applikationen oder Threaded Programmierung. Der stolperstein der nichtlinearen Anwendung verkompliziert Dinge die eigentlich einfacher sind. Da gehe ich grundsätzlich lieber den Weg des geringeren Widerstandes, und werde dafür mit Code beschenkt in den ich mich einfacher, schneller wieder reinarbeiten kann.
Dennoch ist es relativ einfach eigene Events zu schreiben.

Erstelle ein Interface mit den Methoden die dein Listener haben soll:

```
public interface DataCheckListener {
  public void dataUnchecked(DataCheckEvent  e);
}

Dann erstellst du eine EventKlasse
public class DataCheckEvent extends Event {
   // hier eigene möglichkeiten diese 
}
```
Der Auslöser bei einem Event, ist demnach eventuell ein HttpServlet Object, also brauch dieser eine Methode um ein die Events zu registrieren:

```
private addDataCheckListener(DataCheckListener d)  {
   dslistener.add(d);
}
```
Somit ist dein EventHandling fertig. Sprich du kannst wunderbar das Event
abfeuern:


```
private void fireDataCheckEvent() {
    Iterator i = dslistener.iterator();
     while(i.hasNext()) {
         ( (DataCheckListener)i.next()).dataUnchecked(new DataCheckEvent());
      }
}
```


----------



## JoelH (3. Januar 2004)

> _Original geschrieben von Neurodeamon _
> *Ich würde gerne wissen, welche Programmiersprache für Euch am meisten Sinn macht. *



Ist doch ganz einfach, die Sprache die mit dem grössten Kosten- Nutzenfaktor ein Problem löst ist die Sprche der wahl. Dabei kann die Sprache differieren aber dass ist Schnuppe, denn SInn macht nur die Sprache die am meisten Profit bringt.


----------



## Christian Fein (3. Januar 2004)

*Re: Re: Welche Programmiersprache?*



> _Original geschrieben von JoelH _
> *Ist doch ganz einfach, die Sprache die mit dem grössten Kosten- Nutzenfaktor ein Problem löst ist die Sprche der wahl. Dabei kann die Sprache differieren aber dass ist Schnuppe, denn SInn macht nur die Sprache die am meisten Profit bringt. *



Ja da hast du sicher recht. Aber es geht im Augenblick darum welche Programmiersprache der Threadstarter sich anneignen will.


----------



## JoelH (3. Januar 2004)

*hmm,*

IMHO kennt er ja schon eine der 'fleissigsten', nämlich php. Da sit jede Menge gutes eingeflossen aber auch jede Menge Schrott, OOP und php sind zwei Welten, noch immer. Wie auch immer, ich tendiere zu Ruby als Emfehlung. Ist abseits des Mainstream aber dafür absolut gut. EInen einfachen multithread Server schreibt man damit im weniger als 200 Zeilen Code. Fensterprograme sind kein Problem dank TCL/TK. Plattformunabhängigkeit ist sowieso primäre Eigenschaft.

Nee, also Ruby ist einfach geil http://www.ruby-lang.org . Trotzdem würd ich gerne mal Smalltalk lernen, hab aber leider keien Zeit dazu 

PS. Beruflich spreche ich Delphi, ist auch nciht schlecht.


----------



## Alexander Schuc (3. Januar 2004)

War ansich keine Webapplikation, war ein kleiner Webserver mit dem man das Programm übers Web steuern kann.



> Ein Event ist eigentlich nicht dazu da um Codeablauf zu gestallten.
> Ein Vorteil den ein Event dort bringen soll, erschliesst sich mir nicht, eher den grossen Nachteil das dies schwer Nachvollziehbaren Code ergibt.



Finde ich nciht das es schwer nachvollziehbaren Code ergibt.

Ich benutze zwischendurch eine kleine IRC Library namens Thresher.
Folgendermassen wird sie benutzt:
# Man instanziert ein Object der Connection-Klasse.
# Stellt Server etc. ein
# Fügt EventHandler für die benötigten Ereignisse wie z.b. "Eintreffen einer Nachricht", "User betritt den Channel", "User wird aus dem Channel gekickt" etc. hinzu.
# Stellt die Verbindung her.

Im EventHandler hat man dann alle benötigten Daten wie z.b. Userdaten, Nachricht. Je nach Event.



> Ein Event ist eigentlich nicht dazu da um Codeablauf zu gestallten.


Dies meinst du jetzt auf eine Webanwendung bezogen, oder? Bis auf die Events der WebForms würde mir auch nicht wirklich jetzt eine Event-Art einfallen die man sinnvill benötigen könnte.

Bei Desktopanwendungen finde ich es aber durchaus sinnvoll. Wie z.b. die Events des FileSystemWatchers


----------



## Christian Fein (3. Januar 2004)

> _Original geschrieben von Alexander Schuc _
> *War ansich keine Webapplikation, war ein kleiner Webserver mit dem man das Programm übers Web steuern kann.
> *


Ja dann habe ich dich da falsch verstanden. Dachte du meintest eine Webapplikation. 
Grundsätzlich meine ich, Komplexität herausnehmen aus dem Code wo immer dies notwendig ist. Und wie du selber auch sagtest in einer Webapplikation sind Events nicht notwendig. 
Das du etwas anderes meintest, da kann ich das natürlich jetzt nicht nachvollziehen ob Sinnvoll oder nicht, weil ich deine Anwendung nicht kenne.

Oben der Code ist eine Implementierung eines eigenen Events. Auch hier kannst du ohne Probleme deine Daten in der DataCheckEvent  Klasse unterbringen.



> _Original geschrieben von Alexander Schuc _
> *
> Bei Desktopanwendungen finde ich es aber durchaus sinnvoll. Wie z.b. die Events des FileSystemWatchers *



Das hat niemand bestritten 

Aber unsprünglich ging es darum, das dir irgendwas an der Art wie Events in Java implementiert wird nicht gefallen. Revidierst du deine Aussage, oder muss ich weiter CodeSchnipsel  schreiben?


----------



## JoelH (3. Januar 2004)

> _Original geschrieben von Christian Fein _
> * Events sind zeitlich unvorhersagbares Auftreten von Zuständen. *



Aber genau darum sind sie doch 'Servereigenschaften' schlecht hin, denn gerade bei Servern aller art ist das warten auf 'Events' das grösste begehr. Oder wie siehst du dass ? Ein Server macht doch eigentlich nix anderes als auf ein Event zu wartenn, sprich auf etwas reagieren zu dürfen. 

Natürlich ist dies nicht das beste wenn es um auslastung, verteilung etc. geht. Aber der einfachste Server sit einfach ein Programm welches auf eine Anfrage wartet und anhand diesre dann einen neuen Thread erstellt der mit den 'ANfrager' komuniziert. Dadurch ist der Server wieder auf der Warteschleife und der Thread , durch ein Event gestartet, spricht mit den Anfrager usw.


----------



## Christian Fein (3. Januar 2004)

> _Original geschrieben von JoelH _
> *Aber genau darum sind sie doch 'Servereigenschaften' schlecht hin, denn gerade bei Servern aller art ist das warten auf 'Events' das grösste begehr. Oder wie siehst du dass ? Ein Server macht doch eigentlich nix anderes als auf ein Event zu wartenn, sprich auf etwas reagieren zu dürfen.
> *



Richtig, das habe ich auch nicht bestritten, ich rede von Webanwendungen. JSP / Servlets / ASP.net.
Diese laufen linear ab.


----------



## JoelH (3. Januar 2004)

*hmm,*

diese haben defakto keine Threadsteuerung und entberen dadurch jeder Disskusionsgrundlage. Da verstehe ich dann nimmer über was ihr hier disskutiert.

Webscripte haben immer dasselbe zu tun, wenn der Input gleich ist.


----------



## Christian Fein (3. Januar 2004)

*Re: hmm,*



> _Original geschrieben von JoelH _
> *diese haben defakto keine Threadsteuerung und entberen dadurch jeder Disskusionsgrundlage. Da verstehe ich dann nimmer über was ihr hier disskutiert.
> 
> Webscripte haben immer dasselbe zu tun, wenn der Input gleich ist. *



Ich habe den  Alexander falsch verstanden. Ich dachte er meinte er hat eine Webapplikation, Eventgesteuert implementiert. 
Jedoch ist es eher ein Webserver. 

Typisches Missverständniss, um Mitternacht darf das sein 

Darauf gekommen sind wir eigentlich dadurch das Alexander das EventHandling bei .net besser findet, und ich es bei Java.


----------



## Alexander Schuc (3. Januar 2004)

```
// Delegate erstellen
public delegate void MessageRecievedEventHandler(string message);

// Klasse, welche das Event abfeuert
public class KlasseMitEinemEvent()
{
	public event MessageRecievedEventHandler OnMessageRecieved;
	
	// hier das event ansich erst abfeuern,
	// (wenn eventhandler hinzugefügt sind)
	protected virual void MessageRecieved(string message)
	{
		if (OnMessageRecieved != null)
			OnMessageRecieved(message);
	}

	private void bla()
	{
		// hier geschieht etwas
		// in dem fall wohl der Thread der auf neue Nachrichten wartet
		MessageRecieved("bla");
	}

}

Und von einer anderen Klasse aus,
welche darauf wartet das Nachrichten kommen

public class MeineKlasseDieAufDieNachrichtWartet()
{
	private KlasseMitEinemEvent MeineKlasse;

	public MeineKlasseDieAufDieNachrichtWartet()
	{
		MeineKlasse = new KlasseMitEinemEvent();
		MeineKlasse.OnMessageRecieved += new MessageRecievedEventHandler(this.NachrichtVerarbeiten);
	}

	public void NachrichtVerarbeiten(string message)
	{
		System.Console.WriteLine("Nachricht erhalten: " + message);
	}
}
```

Diese Art von EventHandling finde ich einfach schöner. CodeSchnippsel kannst aber dennoch gerne immer wieder bringen. 



> Ich habe den Alexander


Man darf mich Alex, oder noch besser, Wiesel nennen.


----------



## Christian Fein (3. Januar 2004)

Okido Alex, dann will ich mal aufzeigen was mir an diesem Eventhandling nicht so dolle gefaellt:



			
				Alexander Schuc hat gesagt.:
			
		

> // Delegate erstellen
> public delegate void MessageRecievedEventHandler(string message);



Genau der delegate. 
Delegates wurden als eine Art Funktionszeiger implementiert. Sprich kurzerhand wurde gesagt: Mit normalen Hausmitteln ist es nicht möglich 
so wie gewollt das Eventhandling zu implementieren, da wird kurzerhand 
ein neues Schlüsselwort / Sprachfeature eingeführt.
Delegates sollten, laut Antrag Microsoft, auch in Java implementiert werden, als Microsoft noch selber stark auf Java setzte.
Das ganze ist im Java Community Prozess, in denen Firmen wie Sun Microsystems, IBM, Oracle, Together usw sitzen gescheitert. Also wurde
kurzerhand die Fehlimplementierung in .net eingebaut.

Bei Java ist das ganze im Sinne von OOP geregelt. Der Listener ist kein kurioses etwas, oder gar ein Ding welches extra fuer diesen Zweck in die Sprache eingebaut worden ist, sondern ein ganz normales Object das bestimmte vorraussetzungen erfüllt, ganz nach dem OOP Vorbild.


----------



## Daniel Toplak (4. Januar 2004)

Das solche Postings immer wieder in einer Art Glaubenskrieg/ -diskussion enden müssen.    
Nein mal im Ernst jeder hat irgendwo seine Vorlieben für irgende eine Sprache.
Und Gottseidank sind die Kritiken und Vorlieben hier konstruktiv.
Aber glaubt ihr, ihr habt dem Ersteller dieses Postings ernsthaft weitergeholfen? Denn evtl. ist er ja mit den Fragen über Eventhandling usw... überfordert und wollte vielleicht nur gewisse Sprachfeatures und Vor-/Nachteile erfahren.
Meiner Meinung nach kommt es wirklich nicht auf die Sprache ansich, sondern auf die Aufgabenstellung, bzw. beim "Spaßprogrammieren" auf die Anwendungen die man erstellen möchte an.
Bei beruflicher Nutzung sollte man natürlich flexibel bleiben.
Ich persöhnlich bevorzuge C++ (Glaubenskrieg, Vorliebe, da mach ich doch mit   ).
Denn ich denke das C++ rundum eine Sprache ist, mit der man so schnell nicht an irgendwelche Grenzen stößt.
Außerdem wenn man C++ einigermaßen beherrscht, kann man das auch sehr einfach als Sprungbrett für andere Sprachen nutzen, somit ist C++ ein guter Grundstock.
Allerdings beherrsche ich mal von Visual Basic abgesehen keine Konkurenten wie Java, C#, Pascal, ... und möchte somit nichts nachteiliges darüber sagen. Auser, daß ich beruflich nahezu an C++ gebunden bin, weil die Nachteile der anderen Sprachen nicht tragbar sind.
Aber ich meine, daß die Features die C++ besitzt schon dafür sprechen.
Da wären z.B.:
- OOP incl. poloymorphen Objekten.
- Zeiger und Funktionszeiger
- Generische Datentypen und Templates
- Geschwindigkeitsvorteile
- Hardwarenähe
- viel Freiheit ( auch ein Nachteil)
- nahezu plattformunabhängig mit intsprechenden Libs
- verwendbar für große Projekte
- ...
Natürlich gibt es auch Nachteile:
- schwieriger erlenbar
- der Programmierer muss sich um vieles kümmern und somit auch teilw. gefährlich
- teilw. schwer lesbarer Code, wenn man nachlässig ist
- ...

Gruss Homer


----------



## Neurodeamon (4. Januar 2004)

@Daniel Toplak:

Natürlich versteh ich kein Wort mehr =)
Aber das macht nix, ich folge dem Thread aufmerksam 
Ich glaube meine Entscheidung C++ mal anzutesten ist richtig. Das schöne daran ist (für mich) die Portierbarkeit in andere Betriebssysteme. Ich HASSE nichts so sehr wie Programme die absolut an ein System gebunden sind.

Nun könnt Ihr weiter mit dem Flamewar machen


----------



## Christian Fein (4. Januar 2004)

> _Original geschrieben von Daniel Toplak _
> *
> Aber glaubt ihr, ihr habt dem Ersteller dieses Postings ernsthaft weitergeholfen? Denn evtl. ist er ja mit den Fragen über Eventhandling usw... überfordert und wollte vielleicht nur gewisse Sprachfeatures und Vor-/Nachteile erfahren.
> *



Hey wir sind hier immer noch in Coders*Talk*


----------



## Daniel Toplak (4. Januar 2004)

> Hey wir sind hier immer noch in CodersTalk


Stimmt auch wieder.

Gruß Homer


----------



## Sneaker (13. Januar 2004)

C++ würde ich nicht ohne Lehrer lernen... ich hab gott sei dank in der Schule C++ gelernt und sonst kappiert man echt nix ! und wenn du meinst C++ ist nicht Systemgebunden dann darfste aber nicht sowas benutzen wie die Windows API oder die MFC weil das ist ja dann wieder an Windows gebunden.

Ich kann nur Python empfehlen  easy zu lernen, man wird nicht zur OO gezwungen was für den Anfanger recht angenehm ist und an Python wird ziemlich viel gearbeitet, gibt zur Zeit eigentlich alles was man mit jeder anderen sprache uach machen kann, selbst 3D spiele kann man in Python schon schreiben in OpenGL oder DirectX  und das tolle ist es gibt soviele funktionen die auf jeder Plattform laufen damit mein ich nicht nur Unix/Linux sondern auch MacOS.

so das war mein beitrag um ein bisschen von Eventhandling weg zu kommen 

ausserdem warte ich immer noch auf das Python Forum bei tutorials.de, naja wird wohl nicht mehr lange dauern... solange werde ich hier Python schon an den mann bringen 

und wo bekommst du infos über Python natürlich hier


----------



## Sunray (1. März 2004)

Ich habe vorher in PHP programmiert und habe dann das .NET Framework und Visual Basic .NET entdeckt.

Ich könnte mir nichts anderes mehr vorstellen. Interessant: die Idee des .NET Frameworks: "Die Programmiersprache ist sekundär"

Vorteile: Jeder kann in "seiner" Sprache programmieren und doch verstehen alle einigermassen den Quellcode anderer aufgrund der gleichlautenden Basisklassen.
Auch angenehm: Multilinguale (nennt man das so?) Programme über .NET Dlls.
Egal in welcher Sprache nützliche Klassen im Internet geschrieben sind.

OOP ist für mich Pflicht. Auf diesen Komfort könnte ich nicht mehr verzichten.


----------



## Neurodeamon (2. März 2004)

@Sunray: Darunter leidet aber (zumindest im Moment) die Portabilität auf andere Systeme. Siehe *nix Systeme und .NET
Und Mono (so heißt die Portierung glaube ich) kann noch nicht als Ersatz herhalten, soweit ich weiß.

Das ist einer der Punkte die ich an .NET nicht mag.


----------



## Sunray (2. März 2004)

Da geb ich dir Bedingungslos recht.
Ist schon nervig, dass man .NET Anwendungen nicht auf andere Plattformen ausliefern kann.

Ich als treuer Windows-Anhänger werde mir Linux in nächster zeit mal etwas genauer anschauen.


----------



## Christian Fein (2. März 2004)

> _Original geschrieben von Sunray _
> *Ich habe vorher in PHP programmiert und habe dann das .NET Framework und Visual Basic .NET entdeckt.
> 
> Ich könnte mir nichts anderes mehr vorstellen. Interessant: die Idee des .NET Frameworks: "Die Programmiersprache ist sekundär"
> ...



Diese Sprachunabhängigkeit ist kein Feature sondern ein Krampf.
In einem Projekt ist es unhaltbar in mehreren Sprachen zu programmieren, und dabei 
noch produktiv zu sein.

VB.net hat mit basic nichts mehr zu tun, und gibt so die letzten Vorteile von RAD Programmierung ab.
C# ist die .NET Sprache, und C++ mit managed Extensions und JScript wird gemieden wie die Pest.

Wenn ein Projekt durchgeführt wird, ist die Frage nach der Plattform wichtiger als die Sprache, wenn die Plattform stimmt dann ist die Sprache ein gutes Mittel.
Aber ein Projekt mit mehreren Sprachen durchzuführen ist ein Krampf.

Sorry ich seh das eher als Nachteil und weniger ein Vorteil.


----------



## CSANecromancer (29. März 2004)

Also bei mir kommt es mit der Sprache ganz darauf an, *was* ich machen will.

Perl:
Wenn ich keine graphischen Spielereien brauche (bunte Windows, Schaltflächen etc.pp.) sondern wirklich eine reine Datenverarbeitung mit guter Möglichkeit auch auf Daten in Netzwerken/Intranet/Internet zugreifen zu können, dann "rotze" ich die Programme in Perl hin.
Der Vorteil von Perl ist die Mehrdeutigkeit - und auch gleichzeitig das brutalste Manko. Perl ist wahnsinnig tolerant, was die Syntax angeht, man kann ein- und dieselbe Sache auf mindestens 4 verschiedene Arten machen. Leider resultiert daraus, daß vieles, was in anderen Sprachen mindestens als unsauber erkannt werden würde oder gleich Fehler der IDE produzieren würde, bei Perl anstandslos vom Interpreter durchgelassen wird.
Zum Erlernen als neue Sprache ist Perl bei mir ein jein, als Einsteigersprache ist es meiner Meinung nach eher ungeeignet. Wenn der Programmierer nicht selbst eine strikte Disziplin an den Tag legt, wuchern Perl-Programme nämlich wahnsinnig schnell zu unübersichtlichsten Spaghetti-Code. Klar, kleine Programme kann man damit blitzschnell schreiben, kein Thema. Auch größere Projekte sind wunderbar möglich. Doch die spätere Wartbarkeit des Codes liegt zu 99.9% beim Programmierer.

C++:
Ist für mich das Allzweckwerkzeug, wenn alles andere versagt und ich vollen Zugriff auf alle Möglichkeiten der Programmierung benötige. Genauer verwende ich seit jeher die Borland-Compiler und arbeite (bisher) am liebsten mit dem C++-Builder. Bevor hier jemand panisch aufschreit: Ich weiß, daß der seine Macken hat. Aber man kann Probleme mit einem Compiler mit Gewalt provozieren oder auch versuchen zu vermeiden...
Das Problem an C++ ist, daß es einem zwar alle Möglichkeiten bietet aber genau deswegen unglaublich groß und schwer zu lernen ist. Am Besten kann man C++ meiner Meinung nach lernen, wenn man noch gar keine Ahnung von Programmierung hat.  Dann ist man nicht von anderen Sprachen her "vorbelastet". Meinen Umstieg auf C++ habe ich auch nicht direkt geschafft sondern erst über C und M.U.D.-Coding. 

HTML, JavaScript:
Damit stöpsel ich meine Websites zusammen. Wenn ich etwas mehr Interaktion brauche verwende ich wieder Perl-Scripts. Die Grafikelemente (Tabellen, Bilder) bastel ich dann mit JS und verwende den JS-Code direkt in meinen Perl-Scripten.

Delphi und VisualBasic könnten für einen Sprachenumstieg sicher recht interessant sein, zumindest wenn ich nach dem gehe, was ich bisher davon gesehen habe.

Zu Java, PHP und Konsorten kann ich leider nichts sagen. PHP ersetze ich für mich durch Perl und statt Java benutze ich halt C++.


----------



## psycomantis (5. April 2004)

Am Besten kann man C++ meiner Meinung nach lernen, wenn man noch gar keine Ahnung von Programmierung hat.  Dann ist man nicht von anderen Sprachen her "vorbelastet". Meinen Umstieg auf C++ habe ich auch nicht direkt geschafft sondern erst über C und M.U.D.-Coding. 




Kann ich nur bestätigen. C++ ist die erste Sprache die ich gelernt habe und ich finde der Einstieg war bei weitem nicht so schwer, wie es im Forum immer wieder gesagt wurde.


----------



## Norbert Eder (5. April 2004)

Diese Mehrsprachigkeit hat durchaus ihre Vorteile.

Hier geht es nicht darum, dass ich in meiner IDE mit mehreren Sprachen arbeiten muss, sondern dass zb jemand ne GUI baut und Komponenten/Steuerelemente verwendet, die in C# von einem anderen Team-Member erstellt wurden. DAS HAT Vorteile.

Nitro


----------



## ADA&QS (16. April 2004)

Meine bevorzugte Programmierspache ist ADA 95, denn fuer Realtime System und Aufgaben mit Nebenlaufigkeit, lieferst ADA 96 sicher konstrukt Abstract Data Type mit eingebauten Monitor oder der Thread mit Rendvous Befehlen.


----------



## Christian Fein (16. April 2004)

> _Original geschrieben von nitronic _
> *Diese Mehrsprachigkeit hat durchaus ihre Vorteile.
> 
> Hier geht es nicht darum, dass ich in meiner IDE mit mehreren Sprachen arbeiten muss, sondern dass zb jemand ne GUI baut und Komponenten/Steuerelemente verwendet, die in C# von einem anderen Team-Member erstellt wurden. DAS HAT Vorteile.
> ...



Ist vollkommen an der Regel vorbei.

Es gibt Styleguids in Firmen an die sie die Programmierer zu halten haben um einen für alle Entwickler gut lesbaren Code zu produzieren.

Mehrere Sprachen in einem Projekt ist ein Tot für die Lesbarkeit des Projektes.

Ich durfte mich mit sowas in der Art schonmal rumschlagen (ASP hälfte mis JScript hälfte mit VBScript). 
Das kam daher das 2 verschiedene Firmen an der Geschichte gearbeitet haben. Dies ist einer der Gründe weshalb das ganze Projekt von diesen Firmen als "nicht pflegbar" aufgegeben worden ist, und ich dieses Projekt nur durch teilweise umschreiben retten musste.


----------



## Slizzzer (10. Mai 2004)

Ich bin im Moment auch in der Entscheidungsphase, welche Programmiersprache ich lernen will/kann.
Ausser acht lassen sollte man auch nicht die Kosten der Entwicklungsumgebung.
Da steht Borland für mich absolut im Wald. Soweit ich das gesehen habe liegt der Preis für Delphi weit jenseits der 1000 Eurogrenze.
Die .NET Standartpakete von MS sind mit rund 120 Euro durchaus auch für den Hobbyprogrammierer erschwinglich.
Sicher gibt es für einige Sprachen auch Open-Source oder Freeware Möglichkeiten. Aber die sind meist nicht so ausgereift (oder schlagt Ihr mich jetzt?!).
Ich denke für C, C++ gibbet unter Linux die besten kostenlosen Tools.  Wie sieht es da mit Java aus? Eclipse?
Postet doch mal Eure Entwicklungstools 

P.S.: Was ist eigentlich J++ bzw. J#? Hat das was mit Java zutun, oder ist die Ähnlichkeit vom Namen rein Zufällig?


----------



## Fabian H (10. Mai 2004)

> Sicher gibt es für einige Sprachen auch Open-Source oder Freeware Möglichkeiten. Aber die sind meist nicht so ausgereift (oder schlagt Ihr mich jetzt?!).
> Ich denke für C, C++ gibbet unter Linux die besten kostenlosen Tools.


Es gibt einen Windows Port von gcc:
Mingw

Und eine kostenlose Entwicklungsumgebung dazu:
Dev C++


----------



## Dario Linsky (10. Mai 2004)

> _Original geschrieben von Slizzzer _
> *Da steht Borland für mich absolut im Wald. Soweit ich das gesehen habe liegt der Preis für Delphi weit jenseits der 1000 Eurogrenze.
> Die .NET Standartpakete von MS sind mit rund 120 Euro durchaus auch für den Hobbyprogrammierer erschwinglich.
> *


Du übersiehst, dass es bei der Delphi-Version für mehrere tausend Euro um die Professional- bzw. Enterprise-Variante geht. Die umfangreicheren Versionen von Visual Studio liegen preislich auch im vierstelligen Bereich, die Personal-Versionen von Delphi und dem C++ Builder kosten im Laden ca. 300 Euro (soweit ich weiß) und zudem gibt es sie von Borland offiziell und kostenlos zum Download.


> Postet doch mal Eure Entwicklungstools


Eclipse, SharpDevelop, inzwischen nicht mehr so oft Delphi, Emacs/GCC und gedit/GCC.
Ach ja, RubyDevelop benutz ich auch noch.


----------



## Norbert Eder (11. Mai 2004)

EntwicklungsTools:
Visual Studio Enterprise Architect 2003, SharpDevelop, Eclipse, IntelliJ Idea und dann noch sämtliche Profilingtools.

Ad unterschiedliche Sprachen/Christian:
Ist NICHT an jeder Regel vorbei. Vielleicht ist dies in Eurer Firma so. In der Regel siehst Du den Source anderer Steuerelemente gar nicht. Es ist teilweise auch gar nicht wichtig, dass jemand den Source sieht, sondern lediglich die Komponente verwenden kann, die ihm zur Verfügung gestellt hat.

Ad Styleguides:
Jedes Unternehmen hat eigene Styleguides (wobei ich die Erfahrung gemacht habe, dass 99% der Unternehmen gar keine haben).


----------



## psycomantis (11. Mai 2004)

Slizzzer hat gesagt.:
			
		

> [B
> Ich denke für C, C++ gibbet unter Linux die besten kostenlosen Tools.  Wie sieht es da mit Java aus? Eclipse?
> Postet doch mal Eure Entwicklungstools



Ich muss sagen, dass ich programmiere und noch nicht einen cent(außer für Bücher)dafür ausgegeben habe. Für Linux gibts wer-was-wie viel Compiler die kostenlos sind und für Winwos nehm ich für c++ den Microsoft Visual C++6  Compiler (ist halt kostenlos),welchen man   http://www.c-plusplus.de/compiler.htm downloaden kann. Also Hobbyprogrammierung muss denke ich kein Geld kosten.


----------



## Billie (14. Mai 2004)

Ich will mich auch einmal zu Wort melden. Ich habe mir nur die ersten Zeilen durchgelesen und musste dort lesen "PHP verdirbt alles".

Also, ich habe zufällig auch mit PHP angefangen und bin jetzt auch auf dem Weg zu Java. Ich muss sagen PHP hat mir das Programmieren erst schmackhaft gemacht, so das ich noch über die Möglichkeiten von PHP hinaus wollte - deshalb jetzt Java.

Ich kann nicht sagen wie schwer C++ ist, aber es reizt mich auch nicht besonders das heraus zufinden, obwohl die Möglichkeiten mit C++ natürlich fast unendlich sind - Java setzt nicht auf ein bestimmtes Betriebssystem und ist für meine Anwendungen schnell genug.

PHP verdirbt alles... tztztz...


----------



## squeaker (1. Juni 2004)

*Smalltalk*

Ich gebe zu ich habe nicht den ganzen Thread gelesen - blos überflogen und entschuldige mich falls ich etwas wiederhole - aber ich glaube Smalltalk nicht gesehen zu haben.

Vorteile: 
- Platformunabhänig
- Große Klassenbibliothek
- Kostenlos
- Integrierte IDE
- Garbage Collection

Es gibt mehrere Dialekte allen voran Cincoms VisualWorks 7.2 (für nicht-kommerziellen Einsatz kostenlos) und Squeak (OpenSource).

Auch wenn die Feature-Liste von Java abekupfert scheint und die Ähnlichkeiten unübersehbar sind - Smalltalk ist älter als Java (es war seiner Zeit voraus).
Für Javajaner ungewohnt: ALLES ist ein Objekt und die Syntax passt auf eine DIN A4 Seite, ist also recht simpel. Ausserdem kann man Objekte zur Laufzeit ändern (auch Methoden austauschen/ändern) was einem beim Debuggen sehr gelegen kommt. Es ist auf den ersten Blick etwas gewöhnungsbedürftig (IF z.B. ist kein Sprachkonstrukt sondern eine Methode von true bzw. false, den einzigen Instanzen von True/False welche von Boolean abgeleitet sind), da aber fast die komplette Bibliothek (welche sehr umfassend ist) in Smalltalk geschrieben ist, kann man sie ohne Probleme einsehen (man kann jeden Quellcode einsehen) und sogar ändern bei bedarf (nur für GURUs zu empfehlen). Alles in allem wer sich überlegt einen Blick auf JAVA zu werfen, sprich wer nicht unbedingt die Geschwindigkeit von C++/asm braucht bzw. die Textverarbeitungs-/HTML-fähigkeiten diverser Skriptsprachen braucht sollte einen Blick riskieren.
Es lohnt sich!

Tobias


----------



## Christian Fein (1. Juni 2004)

Es spricht absolut nichts gegen Smalltalk.

Ich programmiere zwar kein Smalltalk aber die Konzepte sind gut. Smalltalk ist auch u.a ein 
geistiger Vater von Java.
So hat IBM früher extrem auf Smalltalk gesetzt bevor sie sich Java zugewandt haben.

Zu den Sprachfeatures und Einsatzgebiet von Smalltalk kann ich nicht viel sagen weil
ich mich damit zuwenig beschäftigt habe.

Es gibt nur einen Negativpunkt den ich aufgrund  mangelnder Smalltalkenntnisse wirklich sagen kann, das ist die immer geringer werdende Unterstützung in der Industrie und im 
Arbeitsmarkt.
Dennoch hilft Smalltalk OOP "richtig" zu lernen, weshalb ich dein Aufruf sich Smalltalk 
mal anzuschauen auch unterschreiben kann.


----------



## squeaker (2. Juni 2004)

Ich bin sowieso der Meinung man sollte:

 a) in der Lage sein Konzepte zu lernen und zu abstrahieren um sie dann auf andere Sprachen anwenden zu können.

 b) Sprachen in ihren jeweils günstigsten Anwendungsgebieten einzusetzen.

Als Privatanwender kann und sollte man es sich leisten mit Sprachen zu spielen um so möglichst unabhängig von der einzelnen Sprache zu sein. Von genereller Verdammnis halte ich nix.

(ich programmier "besser" Java, da mehr Erfahrung - will das aber gerade beheben - siehe RoboRally Thread).


----------



## Tim C. (2. Juni 2004)

> _Original geschrieben von BillieJoe _
> *PHP verdirbt alles... tztztz... *


Wenn man PHP nicht mit Buch sondern mit Tutorials lernt, oder es über das anpassen von Fremdscripten "lernt", dann versaut es in der Tat. Man gewöhnt sich einen Stil an, den man bei einem Großteil der anderen Sprachen erstmal wieder ablegen muss. PHP 5 wird da in Sachen Toleranz gegenüber unsauberem Code hoffentlich einen guten Schritt vorankommen und nicht mehr so viele Frickeleien dulden.

Aber das Thema haben wir glaube ich mitlerweile oft genug diskutiert und ist hier etwas Offtopic.


----------

