Weiter Programmiersprachen erlenen?

Könnt ihr nochwas zu meinem Post eins oben drüber sagen!
Da kann ich evtl. etwas Senf dazu geben. :)

Java an und für sich ist nicht schlecht, allerdings bin ich nie wirklich damit warm geworden. Insbesondere gibt es mittlerweile Java-Programmierer fast wie Sand am Meer, was bedeutet, daß auf mich als Java-Neuling sicher ca. 12 wirklich erfahrene Java-Programmierer kommen würden.
Im Hinblick darauf, daß Windows Vista das .net Framework als Standard beinhalten wird, sehe ich .net für einen Programmierer als sehr interessant an.
Es geht ja nicht darum, ob Windows Vista jetzt supertoll ist oder der letzte Schrott. Persönlich werde ich meine eigenen Programme auch weiterhin unter win32 entwickeln. Aber... ich zahle mir ja auch selber kein Gehalt. Mein Chef zahlt mir das und der muß Kundenwünsche erfüllen. Und die Kunden wiederum schwören in sehr vielen Firmen auf Microsoft. Selbst den allergrößten Rotz würden die noch kaufen, solange nur das dicke MS-Logo darauf prangt. Daher wage ich die Prognose, daß Windows Vista sehr wohl eine starke Verbreitung finden wird, allermindestens im Arbeitsbereich, was mich wieder zu .net zurück führt.

Java oder .net (als Framework gesehen)?

Ich persönlich würde diese Frage sofort mit .net beantworten. Der Grund hierfür liegt darin begründet, daß es mindestens zwei durchaus verbreitete Sprachen gibt, die .net (mehr oder weniger) voll unterstützen: C# und Delphi. Java ist - naja, Java eben. Wenn du dich aber mit C# und/oder Delphi auskennst, wirst du später auch verhältnismäßig leicht den Umstieg auf C++ oder auch Java schaffen (umgekehrt geht das natürlich durchaus auch). Der Knackpunkt für mich ist jedoch, daß du bei Java eben "nur" Java lernst, bei C# aber locker noch die Grundlagen für alle Sprachen mitbekommst, die früher oder später auch auf .net aufbauen. Desweiteren ist derzeit noch ein echter Bedarf an .net-Programmierern gegeben, während der Java-Markt recht gesättigt erscheint.

Von daher wäre meine eindeutige Empfehlung C# mit .net.
 
Leider nehmen die Schlipsträger, denen durch eben besagtes modisches Stilelement die Sauerstoffversorgung zum Gehirn stark beeinträchtigt wird, als entscheidungstreffende Personen weiter zu. Dadurch werden teure (finanziell wie auch wartungstechnisch) Falloutprodukte wie Win"es ist doch so schön bunt und einfach, mein Sohn benutzt das auch"dows immer weiter bevorzugt, anstatt sich mit potentiell mächtigeren und besseren Alternativen auseinanderzusetzen. Man verstehe mich nicht falsch, Microsoft hat einige gute Ideen in die Welt gesetzt, deren Umsetzung kränkelte oder scheiterte aber an deren betriebsbedingten Scheuklappen.

Ich sehe weiterhin C (und dessen seltsam umgesetzte OOP-Variante C++) sowie Java als die Sprachen die es wenigstens im Syntax her zu verstehen gilt. Die Konzepte der Programmierung lernt man letztendlich aber sowieso nicht an einer Sprache sondern man lernt eine Sprache wenn man die Konzepte verstanden hat.

Im Bereich der CMS könnte man natürlich auf .net Sprachen verweisen, sinnig ist das aber nur bedingt. CMSs sollte in meinen Augen immer Serverseitig liegen und damit drängt sich Java geradzu auf, denn mal ehrlich: gute und perfomante Webserver laufen *ausschließlich * unixitär. Und .net auf Unix/Linux ist... möglich aber noch immer nicht ausgereift.

Fazit: Serverseitiges CMS und Java sind in diesem Fall also ein sehr gutes Team.
 
Ich sehe weiterhin C (und dessen seltsam umgesetzte OOP-Variante C++) sowie Java als die Sprachen die es wenigstens im Syntax her zu verstehen gilt.

Nur ist die Syntax aber eben nicht alles.
C ist grob gesagt prozedural orientiert, Java ist objektorientiert. Wenn man schon länger programmiert ist dieser Unterschied nicht mehr von Belang, für einen Einsteiger macht das imho aber einen ganz gewaltigen Unterschied, wie zum Teil auch schon Threads hier im Forum gezeigt haben.
Wenn dann wäre in meinen Augen schon eher die Frage sinnvoller C++ oder Java (und sooo seltsam finde ich das OOP in C++ gar nicht, ist aber wohl Geschmackssache :) ), da beide Sprachen objektorientiert sind. Wenn ich mir diese Entscheidung anschaue - sorry. Aber ich kann keinem Anfänger guten Gewissens C++ empfehlen. Allerspätestens die Pointerarithmetik stellt einen Einsteiger dann vor größte Verständnisprobleme.
Bliebe unter dem Strich nur noch Java - falls man die ganzen .net-Sprachen einfach ignoriert. Wenn man die aber hinzuzieht und objektiv betrachtet, so weisen Java, C# und Delphi einige deutliche Gemeinsamkeiten auf:
- Objekorientierung. Fände ich nicht schlecht, dieses Konzept einem Einsteiger gleich mit auf den Weg zu geben.
- Nutzung von Packages. Ist evtl. nur eine "Folge" der Objektorientierung, aber auch da sind riesige Unterschiede zwischen beispielsweise Java (C#, Delphi) und C++. In Java (C#, Delphi) muß man Packages und Klassen verwenden in C++ kann man das, aber man ist nicht dazu gezwungen.
- Keine exzessive Pointer-Arithmetik. Solche Scherze wie char********** find_me; sind da nicht möglich, was die Konzentration des Lernenden frei lässt für die wesentlichen Dinge.

Später kann man sich, wenn man eine OO-Sprache beherrscht, dann doch immer noch mit C++ beschäftigen.

Die Konzepte der Programmierung lernt man letztendlich aber sowieso nicht an einer Sprache sondern man lernt eine Sprache wenn man die Konzepte verstanden hat.
Jein. Grundlegend stimmt das schon. Die Sprache ist das Werkzeug. Aber wenn man das Werkzeug nicht beherrscht, wie soll man die erlernten Konzepte üben? Von daher kann ich nur zu einem möglichst einfachen Werkzeug raten, bei dem man nicht ewig und drei Tage braucht, um es benutzen zu können, um seine Übungen zu machen.

Im Bereich der CMS könnte man natürlich auf .net Sprachen verweisen, sinnig ist das aber nur bedingt.
Ich persönlich würde sogar so weit gehen und pauschal dein "nur bedingt" gegen ein "nicht" eintauschen. :)

Fazit: Serverseitiges CMS und Java sind in diesem Fall also ein sehr gutes Team.
Absolut.
 
> Nur ist die Syntax aber eben nicht alles.

Nein, natürlich nicht. Die Syntax ist nur ein Schritt zur Beherrschung des Werkzeuges, nicht das erlernen der Grundlagen.

> C ist grob gesagt prozedural orientiert, Java ist objektorientiert. Wenn man schon länger
> programmiert ist dieser Unterschied nicht mehr von Belang, für einen Einsteiger macht
> das imho aber einen ganz gewaltigen Unterschied, wie zum Teil auch schon Threads
> hier im Forum gezeigt haben.

Jetzt wirds etwas polemisch von mir, sorry dafür...
Selbst Java ist nur im Ansatz OOP und beinhaltat immer noch starke prozedurale Tendenzen. OOP würde eine echte Kapselung von Objekten beinhalten, ohne direkten Zugriff auf deren innere Methoden. Es gibt in der echten OOP keine private- oder public-deklarationen und -zugriffe, sondern nur Nachrichten zwischen den Objekten.

Wer OOP lernen will, soll Smalltalk nehmen (und bekommt seine eigene kleine Welt dazu)

> Wenn dann wäre in meinen Augen schon eher die Frage sinnvoller C++ oder Java (und
> sooo seltsam finde ich das OOP in C++ gar nicht, ist aber wohl Geschmackssache :) ),

Auf jeden Fall :)
Ich finde die Umsetzung des OOP-Konzeptes in C++ im Grunde gruselig, wenn auch die Ergebnisse für sich sprechen.

> da beide Sprachen objektorientiert sind. Wenn ich mir diese Entscheidung anschaue -
> sorry. Aber ich kann keinem Anfänger guten Gewissens C++ empfehlen.
> Allerspätestens die Pointerarithmetik stellt einen Einsteiger dann vor größte
> Verständnisprobleme.

Aber ganu das macht in meinen Augen das erlernen von Programmierung mit aus. Sich das Hirn zu verbiegen um Pointertheorien zu verstehen. Sowas wie einen Baum zu bauen und diesen dann rotrieren zu lassen oder etwa den Turm von Hanoi parametrisierbar und nicht-rekursiv zu bauen. Zu guter Letzt das alles dann in einer Metasprache theoretisieren und in der geeigneten Sprache zu implementieren.

C gibt Dir dafür alle Freiheiten - und alle Probleme. Java schränkt (mich) da mehr ein als das es mir Arbeit abnimmt.

> Bliebe unter dem Strich nur noch Java - falls man die ganzen .net-Sprachen einfach
> ignoriert. Wenn man die aber hinzuzieht und objektiv betrachtet, so weisen Java, C# und
> Delphi einige deutliche Gemeinsamkeiten auf:

.net und Delphi in einen Topf zu werfen ist bemerkenswert. ObjectPascal gibt es schon sehr viel länger als das Konzept von .net überhaupt existiert.

> - Objekorientierung. Fände ich nicht schlecht, dieses Konzept einem Einsteiger gleich
> mit auf den Weg zu geben.

Im Grunde keine schlechte Idee, aber wer die Grundlagen von Iteration und Rekursion, Datentypen, etc. nicht versteht, kann mit OOP nicht viel anfangen. Und zu wichtigen Datentypen gehört meiner unbedeutenden Meinung nach auch Pointer.

> - Keine exzessive Pointer-Arithmetik. Solche Scherze wie char********** find_me; sind
> da nicht möglich, was die Konzentration des Lernenden frei lässt für die wesentlichen
> Dinge.

Was ist denn wesentlicher als Datentypen und Operationen auf diesen? Letztendlich dreht sich doch alles genau darum. Die Kapselung dieser durch den OOP-Ansatz lernt man dann, wenn man den Rest verstanden hat.

> Später kann man sich, wenn man eine OO-Sprache beherrscht, dann doch immer noch
> mit C++ beschäftigen.

Ich sehe das genau anders rum. OOP ist zwar *die* Methodik heute, die Grundlagen liegen aber weit vor diesem Konzept. Erst recht, wenn man eine aus der prozeduralen Ecke gewachsenen Sprache wie Java benutzt.

> Jein. Grundlegend stimmt das schon. Die Sprache ist das Werkzeug. Aber wenn man
> das Werkzeug nicht beherrscht, wie soll man die erlernten Konzepte üben?

Metasprachen. Die Implementation folgt der Konzeptionierung. Auch wenn es trocken ohne Ende ist, dabei lernt man am meisten.

> Von daher
> kann ich nur zu einem möglichst einfachen Werkzeug raten, bei dem man nicht ewig
> und drei Tage braucht, um es benutzen zu können, um seine Übungen zu machen.

was ein vi mit gcc wunderbar kann :)

> Ich persönlich würde sogar so weit gehen und pauschal dein "nur bedingt" gegen ein
> "nicht" eintauschen. :)

Im Sinne der hier vorhherschenden Affinität zu .net habe ich es für besser gehalten, .net nicht im Absoluten für ein solches Vorhaben zu eliminieren. :)
 
Jetzt wirds etwas polemisch von mir, sorry dafür...
Darf ich auch polemisch werden? :)
1. Da generell und grundsätzlich nur ByteCode oder Maschinencode erzeugt wird und dieser immer und grundsätzlich nicht mal prozedural sondern sogar sequentiell mit Sprungmarken ist, ist die gesamte OOP in diesem Sinne eine reine Gedankenblase.
Mal ehrlich - ob etwas jetzt "true" OOP oder "ein bißchen" OOP ist, spielt doch für einen Einsteiger nicht die geringste Rolle, oder?
2. SmallTalk. Also außerhalb dieses Forums habe ich von dieser Sprache noch nie gehört. Und ich habe von einfachen Client-PCs über diverse Linux-/Unix-Server bis hin zu IBM Mainframes auf den unterschiedlichsten Plattformen gearbeitet. Aber echt, SmallTalk ist mir nicht ein einziges Mal untergekommen. Auch in keiner einzigen Stellenbeschreibung, wobei ich das evtl. einfach nur überlesen habe. Die Fragestellung lautete nach einer Programmiersprache mit Zukunft. Letzteres bei SmallTalk? Na ich weiss ja nicht... Ich halte auch den Ansatz von Prolog für witzig und interessant, würde aber niemals einem Einsteiger raten, mit Prolog anzufangen. Ganz zu schweigen von Brainfuck.

Aber ganu das macht in meinen Augen das erlernen von Programmierung mit aus. Sich das Hirn zu verbiegen um Pointertheorien zu verstehen. Sowas wie einen Baum zu bauen und diesen dann rotrieren zu lassen oder etwa den Turm von Hanoi parametrisierbar und nicht-rekursiv zu bauen.
Für mich persönlich fällt das unter den Begriff "overkill". Man kann einen Einsteiger auch mit derart viel Wissen überrollen, daß er jegliches Interesse am Programmieren verliert. Ein "hello world" läßt sich mit 3 Zeilen realisieren oder alternativ mit 25+ Klassen, Windowshandles (via Win API) und mehreren hundert Zeilen Sorce inklusive vollster Pointerarithmetik. Ich denke Ersteres ist das, was ein Anfänger lernen will, Letzteres ist das, wo er früher oder später landen wird. :)

.net und Delphi in einen Topf zu werfen ist bemerkenswert. ObjectPascal gibt es schon sehr viel länger als das Konzept von .net überhaupt existiert.
Und Pascal existierte, als Billyboy noch die Schulbank drückte. Aber du hast Recht - auch ich finde es bemerkenswert, nämlich dahingehend, daß wieder ein Möchtergernmonopol aus Redmond aufgebrochen worden ist. Sprach man vor gar nicht so langer Zeit von .net hieß das dann immer, automatisch und zwingend C#. Dem ist eben nicht mehr so.

Im Grunde keine schlechte Idee, aber wer die Grundlagen von Iteration und Rekursion, Datentypen, etc. nicht versteht, kann mit OOP nicht viel anfangen.
Hmmm... irgendwie hänge ich jetzt. Was haben Iterationen und Rekursionen sooo bedeutend mit OOP im Speziellen zu tun? Also ich habe nie die Feinheiten beider Termini studiert und verdiene mir dennoch mit OOP mein Geld. Ergo gehe ich blauäugig mal davon aus, daß man nicht unbedingt Mathe studiert haben muß, um programmieren zu können.
Datentypen sind klar.

Und zu wichtigen Datentypen gehört meiner unbedeutenden Meinung nach auch Pointer.
Stimmt. Aber es macht für einen Anfänger einen ganz gewaltigen Unterschied, ob er alle Pointeroperationen selbst durchführen muß oder ob ihm ein Großteil davon durch die jeweilige Sprache/das Framework/die IDE abgenommen wird.

Was ist denn wesentlicher als Datentypen und Operationen auf diesen?
Logisches Denken? Solange das nämlich nicht geschult ist, kannst du alles andere (und damit meine ich ALLES) komplett vergessen. Glaube nicht, daß jeder Mensch locker vom Hocker flockig logisch denken kann. Das will geübt sein. Wenn aber ein Anfänger schon damit Probleme hat, wird ihm das Verständnis der Materie sicher nicht durch zusätzliche Schwierigkeiten erleichtert.

Die Kapselung dieser durch den OOP-Ansatz lernt man dann, wenn man den Rest verstanden hat.
Ich bin der lebendige Beweis, daß diese Aussage falsch ist.

Ich sehe das genau anders rum. OOP ist zwar *die* Methodik heute, die Grundlagen liegen aber weit vor diesem Konzept.
Ok, da kommen wir thematisch wohl wieder zusammen. Ich stimme dir bei, daß die Konzepte die Grundlagen für die erfolgreiche Programmierung bilden. Andererseits - welche großartigen Konzepte braucht man denn für ein "hello world" oder den Nachbau eine Notepads? Für diese Anfänger"projekte" brauche ich kein UML und auch keine Flußdiagramme. Später, wenn ich mich nicht mehr damit herumschlagen muß, was die Unterschiede zwischen for, while, do, until etc. sind, dann kann ich mich immer noch schlau machen in vernünftiger Projektierung und dann kommen die Konzepte und Metasprachen von ganz alleine wieder dazu.

Metasprachen. Die Implementation folgt der Konzeptionierung. Auch wenn es trocken ohne Ende ist, dabei lernt man am meisten.
Zugegeben. Aber wer nicht gerade eine schwer akademische Ader hat, wird von diesem trockenen Stoff dermaßen abgeschreckt werden, daß er die Programmierung sein läßt nach dem Motto "das ist eh nur was für Bekloppte ohne Sozialleben". Jeder andere wird wohl früher oder später (und mit Sicherheit weitaus früher als später) auch mal ein Erfolgserlebnis auf dem Bildschirm haben wollen.

was ein vi mit gcc wunderbar kann :)
gcc meinetwegen. Aber vi? Da könnte ich jetzt einen philosophischen Streit ohne Ende vom Zaun treten ("nEdit!" "vi!" "Pico!" "Sag' ich doch." "Emacs!" "KETZER! VREBRENNT IHN!"). Aber ein bißchen mehr als ein einfacher Texteditor darf es imho für einen Anfänger schon sein.

Im Sinne der hier vorhherschenden Affinität zu .net habe ich es für besser gehalten, .net nicht im Absoluten für ein solches Vorhaben zu eliminieren. :)
Mich köntest du nicht einmal unter Androhung schwerster körperlicher Verweise dazu bringen, ein CMS unter .net auch nur zu versuchen. :)
 
Im Hinblick darauf, daß Windows Vista das .net Framework als Standard beinhalten wird, sehe ich .net für einen Programmierer als sehr interessant an.
[...]
Von daher wäre meine eindeutige Empfehlung C# mit .net.

Aber ich habe, nicht nur von wiki, schon gelesen das man den wechsel von Java auf C# sehr einfach einstufen kann, da die Syntax ja fast gleicht ist. Und wie ich, auch auf wiki, lesen kann, ist C# mit der .NET Technologie ausgestattet.

I2. SmallTalk. Also außerhalb dieses Forums habe ich von dieser Sprache noch nie gehört. Und ich habe von einfachen Client-PCs über diverse Linux-/Unix-Server bis hin zu IBM Mainframes auf den unterschiedlichsten Plattformen gearbeitet. Aber echt, SmallTalk ist mir nicht ein einziges Mal untergekommen. Auch in keiner einzigen Stellenbeschreibung, wobei ich das evtl. einfach nur überlesen habe. Die Fragestellung lautete nach einer Programmiersprache mit Zukunft. Letzteres bei SmallTalk? Na ich weiss ja nicht... Ich halte auch den Ansatz von Prolog für witzig und interessant, würde aber niemals einem Einsteiger raten, mit Prolog anzufangen. Ganz zu schweigen von Brainfuck.

Also Smalltalk kenn sogar ich, es ist eine der ältesten Objektorientierten Programmiersprachen der Szene.
Ich habe sogar schon mal de Rat bekommen, mit LISP zubeginnen, jedoch ist mir das zu unsympatisch, bezogen auf die verbreitung.
 
Aber ich habe, nicht nur von wiki, schon gelesen das man den wechsel von Java auf C# sehr einfach einstufen kann, da die Syntax ja fast gleicht ist. Und wie ich, auch auf wiki, lesen kann, ist C# mit der .NET Technologie ausgestattet.
Das ist durchaus richtig. Und wenn ich diesen Sätzen von dir entnehmen kann, daß du dich für dich selbst bereits für Java entschieden hast - dann passt doch alles. Du hast die Präferenz, die du gesucht hast. Ich ziehe C# dennoch Java vor (aus den bereits genannten Gründen). Aber - halt dich fest - :Selbst in C# würde ich heutzutage nicht auf freiwilliger Basis programmieren. Jeder hat so seine Lieblingssprachen. So wie Navy SmallTalk mag, so mag ich eben andere Sprachen. Du wolltest ja Empfehlungen haben. Meine habe ich ausgesprochen. Wenn sie dir geholfen hat, deine Entscheidung zu treffen, dann hat sie ihren Zweck erfüllt. (Und nein, wenn ich eine Empfehlung abgebe, erwarte ich keineswegs, daß jeder auf diesen Zug aufspringt, das Leben wäre ja sonst totlangweilig ;) ).

Also Smalltalk kenn sogar ich, es ist eine der ältesten Objektorientierten Programmiersprachen der Szene.
Ich habe sogar schon mal de Rat bekommen, mit LISP zubeginnen, jedoch ist mir das zu unsympatisch, bezogen auf die verbreitung.
SmallTalk zweifel ich gar nicht an, ich habe nur noch nie davon gehört (im Gegensatz zu LISP). Macht aber nichts. Da ich weder Gott, ja nicht einmal der Papst bin, muß ich auch nicht alles kennen. ;) Denn auf der anderen Seite dürften auch PL/1 und CPM nicht mehr allzu verbreitet sein und das wiederum sind Sachen, die ich kenne.
 

Neue Beiträge

Zurück