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