Christian Seiler: C vs. C++

Beitrag lesen

Hallo Martin,

viele der "tollen Tricks" von C++, die in C nicht zur Verfügung stehen, empfinde ich auch nicht unbedingt als Vorteil. Das Überladen von Operatoren ist vielleicht in manchen Fällen eine praktische Sache; es führt aber auch dazu, dass der Programmcode kontextabhängig wird, derselbe Code also unter verschiedenen Bedingungen unterschiedlich interpretiert wird. Das macht C++ schwer nachvollziehbar.

Sagen wir's so: C++ bietet einem so viele Möglichkeiten, die man derart einfach missbrauchen kann, dass man sehr leicht Beispiele für miserablen Code findet, den man nicht wirklich verstehen kann.

Aber gerade z.B. Operatorüberladung: Finde ich persönlich sehr nützlich wenn brauchbar angewandt. Wenn ich eine eigene Klasse schreibe z.B. für beliebig große Integer, dann ist es praktisch, wenn ich trotzdem noch a + b schreiben kann, um die zu addieren. Dito mit z.B. Datumsklassen.

Es gibt aber leider genug Beispiele, wo Leute Operatorüberladung für kompletten Mist eingesetzt haben. Von daher verstehe ich, dass Du dem ganzen sehr skeptisch gegenüberstehst.

Man kann mit viel Schmerzen, Präprozessor-Tricks und intimsten Kenntnissen von Compiler und Zielsystem durchaus auch in C objektorientiert programmieren.

Ich sehe dabei überhaupt keine Schmerzen und brauche auch keine Tricks. Ich betone immer wieder: Objektorientierung findet im Kopf des Programmierers statt. Man kann sogar in Assembler objektorientiert programmieren (und das tu ich gelegentlich), in C erst recht. Und zwar ohne die Knüppel, die C++ einem dabei gelegentlich zwischen die Beine wirft.

Kommt darauf an, was Du machen willst. Wenn Du OOP auf den kleinsten gemeinsamen Nenner (Objekte) beschränkst, dann hast Du sicherlich recht. Wenn Du dagegen noch Laufzeitpolymorphie und Überladen von Methoden unterstützen willst (oder alternativ halt Prototyping wenn man einen anderen Weg gehen will) - und diese Konzepte machen OOP in meinen Augen erst wirklich nützlich - dann ist das in C zwar möglich (und in Assembler auch), aber das wird dann eklig.

Ich beobachte oft, dass man C und C++ durcheinander wirft, beide Begriffe synonym verwendet, oder ohne Unterschied beide unter C/C++ zusammenfaßt.

Halte ich für legitim, denn ungeachtet der unterschiedlichen Ideologie ist C++ technisch eine Obermenge von C.

Strenggenommen gibt es einige winzige Ausnahmen.

Viele Grüße,
Christian

--
Mein "Weblog" [RSS]
Using XSLT to create JSON output (Saxon-B 9.0 for Java)
»I don't believe you can call yourself a web developer until you've built an app that uses hyperlinks for deletion and have all your data deleted by a search bot.«
            -- Kommentar bei TDWTF