C oder C++



  • Hallo,

    man sagt doch immer man verwendet C für die Treiberprogrammierung.
    Hat das nur damit zu tun dass die Klassen in C++ mehr overhead verursachen und deswegen langsamer sind ?



  • jipee, der leierkasten dreht sich!



  • __-- schrieb:

    jipee, der leierkasten dreht sich!

    Leierkasten?



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ (auch C++0x) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • blurry333 schrieb:

    Hallo,

    man sagt doch immer man verwendet C für die Treiberprogrammierung.
    Hat das nur damit zu tun dass die Klassen in C++ mehr overhead verursachen und deswegen langsamer sind ?

    Nein.
    Stimmt auch nichtmal.



  • blurry333 schrieb:

    Hallo,

    man sagt doch immer man verwendet C für die Treiberprogrammierung.
    Hat das nur damit zu tun dass die Klassen in C++ mehr overhead verursachen und deswegen langsamer sind ?

    Du kannst in C++ genauso schnelle Programme programmieren wie in C. Klassen verursachen auch keinen generellen Overhead, eher ein stärker gekapseltes Design. Ich habe übrigens eher gehört, dass man Treiber in Assembler programmiert. Ich könnte mir vorstellen, dass C einen eher dazu verleitet, effizienter zu programmieren, schon allein, weil Strings nicht gekapselt sind und du daher alle möglichen Infos, die du bei std::string nicht verwenden könntest, verwenden kannst. Dafür ist es dann auch entsprechend fehlerträchtiger.



  • in der Firma wo ich mal war, hat er den Treiber in C geschrieben und zwar
    im Borland .



  • blurry333 schrieb:

    man sagt doch immer man verwendet C für die Treiberprogrammierung.
    Hat das nur damit zu tun dass die Klassen in C++ mehr overhead verursachen und deswegen langsamer sind ?

    Klassen an sich verursachen keinen Overhead. Bei OOP gibt es zwar einen Overhead, weil man hier einen dynamischen Dispatch hat. Aber C++ ist eine Multiparadigmensprache und man muss kein virtual benutzen. Gerade mit Templates kann man viel Flexibilität haben und deutlich schnelleren Code erzeugen.

    Das man eher C für Treiberprogrammierung benutzt liegt eher an der historischen Entwicklung (C war halt eher da und wurde eben als Sprache für den UNIX Kernel entworfen) und daran das man in C++ eine größere Anforderung an die Laufzeitumgebung hat als in C (rtti, exceptions etc.).



  • rüdiger schrieb:

    Das man eher C für Treiberprogrammierung benutzt liegt eher an der historischen Entwicklung (C war halt eher da und wurde eben als Sprache für den UNIX Kernel entworfen) und daran das man in C++ eine größere Anforderung an die Laufzeitumgebung hat als in C (rtti, exceptions etc.).

    Hinzu kommt das man eher einen guten C-Programmierer findet der sich auch mit dem Low-Level Kram auskennt. Bzw. um die gleiche Performance in "reinem" C++ zu erreichen braucht man jemand der sich mit C++ sehr gut auskennt und der sich mit dem Maschinennahen Programmieren ebenfalls sehr gut auskennt. Diese Kombination ist aber schon seltener weil OOP Leute seltener auch Machinennah arbeiten.



  • Der große Unterschied zwischen C und C++ ist, wie auch hier schon in mehreren Threads erleutert wurde und auch dort wurde von vielen Experten, die selbst schon C und/oder C++, mit Hilfe von zahlreichen und authentischen Thesen, diese sich im allgemeinen, wie durch Kollegen bereits erwähnt wurde, aber nicht ohne Beachtung der Tatsache, dass C und auch C++, vorallem bei großen Programmen, wie sie häufig in standartisierten und zur theoretischen Bearbeitung von RADs verwendet werden, welche zur Zeit die höchsten Anforderungen an alle bisher bekannten Sprachen stellen, aber dennoch mit allen möglichen System konkurieren müssen und deshalb hier nicht nochmals im einzelnen aufgezählt werden können.

    Somit wäre alles, was in diesem Thread noch zu C und C++ gesagt wird, bereits gesagt.



  • FachmannFürC/C++ schrieb:

    Der große Unterschied zwischen C und C++ ist, wie auch hier schon in mehreren Threads erleutert wurde und auch dort wurde von vielen Experten, die selbst schon C und/oder C++, mit Hilfe von zahlreichen und authentischen Thesen, diese sich im allgemeinen, wie durch Kollegen bereits erwähnt wurde, aber nicht ohne Beachtung der Tatsache, dass C und auch C++, vorallem bei großen Programmen, wie sie häufig in standartisierten und zur theoretischen Bearbeitung von RADs verwendet werden, welche zur Zeit die höchsten Anforderungen an alle bisher bekannten Sprachen stellen, aber dennoch mit allen möglichen System konkurieren müssen und deshalb hier nicht nochmals im einzelnen aufgezählt werden können.

    Deutsch-Klausur: Zeit: 90 Minuten.
    Aufgabe: Zerlegen sie diesen Satz in seine Bestandteile, ordnen Sie ihn verständlich wieder und interpretieren Sie ihn. Beurteilen Sie, ob sich in dieser Aussage eine Ironie verbirgt.



  • wxSkip schrieb:

    Beurteilen Sie, ob sich in dieser Aussage eine Ironie verbirgt.

    Bestimmt nicht, dafür ist zwischen den Worten kein Platz 😃

    @Fachmann: Hast du schonmal überlegt, in die Politik zu gehen? Nichts aussagen mit vielen Worten kannst du schon hervorragend 😃





  • In C++ gibt es so gut wie keinen unnötigen Overhead. Ich verweise da jetzt auch gern auf TR18015.pdf (Technical Report on C++ Performance).



  • Dass Treiber häufig noch in C programmiert werden liegt nicht an der Performance von irgendwas, sondern z.B. daran, dass einige C++ Konstrukte auf z.B. Windows Probleme verursachen können.

    In C++ gibt es z.B. etliche Stellen wo Funktionen implizit definiert werden (Default-Konstruktor, Assignment-Operator etc.). Wenn man nicht aufpasst, landen die im falschen Segment - was zu Abstürzen führen kann.

    Ähnlich sieht es mit Datenstrukturen für RTTI aus.

    Exceptions machen auch Probleme.

    Lässt sich alles umgehen bzw. durch Nicht-Benutzung der entsprechenden Features vermeiden, aber vielen ist das zu "unsicher".

    ----

    Natürlich sind das nicht die einzigen Gründe. Die meisten Treiber sind ausreichend einfach, so dass man mit C halbwegs gut auskommt. Und wozu nen C++ Programmierer suchen der sich ausreichend gut mit hardwarenaher Programmierung auskennt, wenn man einen geeigneten C Programmierer viel schneller findet?



  • Bashar schrieb:

    Kleine Loriot-Hommage? 🙂
    http://www.youtube.com/watch?v=nLsXXlmVL7A

    Nach Lektüre obigen Beitrages habe ich sofort und genau daran gedacht 🙂



  • krümelkacker schrieb:

    In C++ gibt es so gut wie keinen unnötigen Overhead. Ich verweise da jetzt auch gern auf TR18015.pdf (Technical Report on C++ Performance).

    Unsinn.
    C++ Leute nach C++ zu befragen ist genauso subjektiv wie Frau Urururenkelin Bismarck zu Plagiaten ihres Ehegatten.



  • Wutz schrieb:

    krümelkacker schrieb:

    In C++ gibt es so gut wie keinen unnötigen Overhead. Ich verweise da jetzt auch gern auf TR18015.pdf (Technical Report on C++ Performance).

    Unsinn.
    C++ Leute nach C++ zu befragen ist genauso subjektiv wie Frau Urururenkelin Bismarck zu Plagiaten ihres Ehegatten.

    Und Nicht-C++-Leute zu befragen, ist genauso subjektiv.

    Aber was ist schon unnötiger Overhead? Der Compiler wird wohl kaum unnötigen Overhead erzeugen, die internen Mechanismen der Standardbibliothek sind sowieso nicht genau festgelegt und der Rest hängt vom Programmierer ab.



  • Holy crap! Ich hab schon gedacht, der Flame hier kommt gar nicht mehr in Gang 👍


Log in to reply