Unterschiede C zu C++





  • right link schrieb:

    http://yosefk.com/c++fqa/

    Dann gebe aber bitte auch die C++ FAQ mit an, ansonsten ist dein Link nur das typische Auslassen von jemanden der C++ absolut nicht mag (oder nicht verstanden hat und versucht C++ wie C zu programmieren). Mich stört nicht eine Kontra-Haltung gegen C++ (ich sehe selbst einige Mankos), aber einseitige Darstellungen sehe ich als unprofessionell an.

    Davon abgesehen wenn man "difference between c and c++" in google eingibt bekommt man schon einen guten Einblick. Was imho aber zumeist fehlt ist eine Übersicht wie sich die Programmierstile unterscheiden (Beispielsweise wird in Funktionen der Programmierstil sich mit Ausnahme einiger Schlüsselwörter eher ähneln, aber später bei halbwegs komplexeren Dingen wie dynamische Listen usw. teilweise massiv unterscheiden).



  • asc schrieb:

    a) Programmierstil & Schlüsselwörter
    In C++ gibt es einige Schlüsselwörter mehr (u.a. class, virtual, namespace...) und in der Regel programmiert man unter C++ Objektorientiert oder Generisch (wobei die prozedurale Programmierung auch möglich ist).

    das ist so nicht ganz richtig. denn innerhalb der methoden und templatefunktionen ist das ganze geschehen natürlich prozedural. generizität ist eher unabhängig von prozeduralität. und die objektorientierung sorgt für ein wenig mehr übersicht. bei dir klingt das so, was würde objektoruientierung dafür sorgen, daß ich den code nicht mehr in prozeduren/funktionen/methoden/makros zerlegen darf. viel mehr trägt die objektorientierung zu einer feineren zerlegung bei.

    In C wird prozedural Programmiert, es gibt keine Klassen, Referenzen, Templates...
    

    ich würde das anders formulieren. ich hab schon anno 1998 in c objektorientiert programmiert. auch die ganzen FILE-sachen sind doch eindeutig objektorientiert.



  • asc schrieb:

    ...der C++ absolut nicht mag (oder nicht verstanden hat und versucht C++ wie C zu programmieren).

    der yossi lästert über c++ aus der sicht eines Java-coders.
    🙂



  • volkard schrieb:

    ...denn innerhalb der methoden und templatefunktionen ist das ganze geschehen natürlich prozedural.

    Das mag zwar weitgehend stimmen, dennoch unterscheidet sich in einem C++ Programm nicht selten auch der Programmierstil in einer Methode von der in C (Sei es alleine schon wegen RAII-Techniken, berücksichtigung von Exeptions - weniger behandlung von Fehlercodes...).

    volkard schrieb:

    In C wird prozedural Programmiert, es gibt keine Klassen, Referenzen, Templates...
    

    ich würde das anders formulieren. ich hab schon anno 1998 in c objektorientiert programmiert. auch die ganzen FILE-sachen sind doch eindeutig objektorientiert.

    Das Nachbilden von OO gegenüber direkter Sprachunterstützung sehe ich nicht als wirkliche Objektorientierung an (die Diskussion werde ich hier aber nicht erneut in die Länge ziehen wollen; so sehe ich die Win32 API als prozedurale Bibliothek mit OO-Konzepten aber beileibe nicht als Objektorientierte Bibliothek).

    cu André



  • klar. dann hast du recht. wenn du objektorientierung als das definierst, was c++ von anderen sprachen unterscheidet, dann unterscheidet sich c++ durch die objektorientierung von anderen sprachen. 💡 👍 🤡



  • volkard schrieb:

    klar. dann hast du recht. wenn du objektorientierung als das definierst, was c++ von anderen sprachen unterscheidet, dann unterscheidet sich c++ durch die objektorientierung von anderen sprachen. 💡 👍 🤡

    Nein, ich unterscheide zwischen "Objektorientierten Sprachen" (C++, Java, C#, Eiffel...) und "Prozeduralen Sprachen" (C, einige Basic-Dialekte...). Zumindest so wie es eigentlich von 90%+ der OO-Bücher beschrieben wird. In C gibt es nunmal keine native OO-Unterstützung, mit Objectiv-C usw. sieht es wohl anders aus.



  • asc schrieb:

    Das Nachbilden von OO gegenüber direkter Sprachunterstützung sehe ich nicht als wirkliche Objektorientierung an.

    Objektorientierung ist ein Konzept und als solches sprachunabhängig.



  • C++fan 2009 schrieb:

    Objektorientierung ist ein Konzept und als solches sprachunabhängig.

    Man kann sehr viele Programmierparadigmen auch ohne Sprachunterstützung auf unterschiedliche Sprachen übertragen, zum Teil gar nicht mal so schlecht. Irgendwie sollte man aber definieren können, was eine Sprache mit einem bestimmten Paradigma ausmacht. Und meiner Ansicht nach gehört eine gute Unterstützung dieses Konzeptes seitens der Sprache/deren Standardbibliothek dazu.

    Ich würde zum Beispiel nicht behaupten, C++ sei eine primär funktionale Programmiersprache, auch wenn dazu bereits recht gute Ansätze vorhanden sind, die im neuen Standard auch auf Sprachebene ausgebaut werden.



  • ah danke euch für die zahlreichen antworten.
    danke sehr



  • volkard schrieb:

    denn innerhalb der methoden und templatefunktionen ist das ganze geschehen natürlich prozedural.

    Meinst du vielleicht imperativ? Prozedural würde ja heißen, dass komplexere Methoden durch Prozeduren weiter zerlegt werden, und das ist sollte normalerweise nicht der Fall sein (auch wenn es natürlich gemacht wird).

    volkard schrieb:

    auch die ganzen FILE-sachen sind doch eindeutig objektorientiert.

    Nein, nicht "eindeutig". Bei einer bestimmten, und wie ich meine sehr naiven, Sichtweise von OO vielleicht gerade so. Das ist die Getränkeautomat-Analogie, wo es ein einziges Ding gibt, an dem man Knöpfe drücken kann, und es macht dann irgendwas. Damit hast du zwar Kapselung und damit auch eine Schnittstelle, aber überhaupt keine Beziehungen zu anderen Objekten. Keine Idee von Kohäsion und Kopplung. Leute, die OOP nur so kennen, bauen Klassen mit 5000 Zeilen, die intern prozedural zerlegt sind.



  • Bashar schrieb:

    Damit hast du zwar Kapselung und damit auch eine Schnittstelle, aber überhaupt keine Beziehungen zu anderen Objekten. Keine Idee von Kohäsion und Kopplung. Leute, die OOP nur so kennen, bauen Klassen mit 5000 Zeilen, die intern prozedural zerlegt sind.

    ich sehe nur die schnittstelle. vielleicht war es einfach nicht sinnvoll, die FILE-sachen mit anderen sachen in beziehung zu setzen. an der kohäsion dort mag ich auch nicht viel meckern.


Anmelden zum Antworten