Warum programmieren einige noch in C?



  • C wird doch als soviel schlechter als C++ angesehen, warum programmiert dann noch jemand in C wenn es doch so schlecht im Vergleich zu C++ ist?



  • @Computerwelt warte nur auf Wutz ...



  • @Computerwelt sagte in Warum programmieren einige noch in C?:

    C wird doch als soviel schlechter als C++ angesehen

    Wer sagt das?
    Es kommt immer ganz auf den Anwendungszweck an.



  • Ich habe so dein Eindruck dass in der Fachpresse eher C++ vor C favorisiert wird, weil es Sachen wie OOP abdeckt und RAII usw. Auf der anderen Seite finde ich C++ sehr viel komplexer zu lernen, wenn man das überhaupt je in einem Leben schafft. Ich habe so den Eindruck dass von C++ Programmieren vielleicht 2% es richtig machen und der Rest eigentlich schreckliches C++ schreibt.

    Ich will hier einfach mal die wirklichen Profis zu dem Thema befragen, also im Speziellen wann sollte man C++ nehmen und wann lieber doch C? Ist C wirklich nur was für Mikrocontroller oder ist es auch für größere Projekte geeignet?



  • @Computerwelt Natürlich ist C für große Projekte geeignet.

    Die Frage ist nur, ob man sie mit C++ besser durchführen kann - und dann auch sollte.

    Nimm das Werkzeug, das am Besten für die Aufgabe geeignet ist. Wenn es mehrere gibt, wähle jenes, das du besser beherscht.



  • Warum gibt es immer noch Leute, denen solche Threads nicht zum Hals raushängen???



  • Weil es immer wieder Leute gibt, die sich erst neu mit dem Thema beschäftigen.



  • Don't feed ...



  • Wie unhöflich



  • @Computerwelt

    Ist C wirklich nur was für Mikrocontroller oder ist es auch für größere Projekte geeignet?

    Würdest du den Linux-Kernel (inklusive aller Treiber) als "grösseres Projekt" bezeichnen?



  • Ich behaupte mal das diszipliniertes C weniger messy (unordentlich) wird als einigermaßen diszipliniertes C++.
    Würde mir aber kein spaß machen.



  • @Computerwelt sagte in Warum programmieren einige noch in C?:

    Ich habe so den Eindruck dass von C++ Programmieren vielleicht 2% es richtig machen und der Rest eigentlich schreckliches C++ schreibt.

    Nicht nur du hast diesen Eindruck;
    wobei der Rest meist dann auch noch schreckliches C ist und nicht C++, weil sich Herr Stroustrup damals nicht durchringen konnte, alle Möglichkeiten beim Design einer neuen Sprache auszunutzen und stattdessen ein Mischmasch angeboten hat unter der fadenscheinigen Begründung, "das Beste aus 2 Welten" zusammenzuführen.
    OOP, RAII & Co funktionieren selbstverständlich auch mit C, und zwar sehr gut, zur Not mit Compilererweiterungen für Leute, die es dabei möglichst einfach haben wollen.
    Praxisrelevantes C kommt meist in Form von Libs vor, auf die sich dann "höhere" Programmiersprachen verlassen müssen, wenn es an Eingemachtes geht (Performanz,Hardware/Systemzugriff,Speicherknappheit,...);
    wenn ein System APIs anbietet, dann wirst du hier meist solche in C finden.



  • Ja klar, an den Linux-Kernal habe ich gar nicht gedacht und natürlich die vielen Libs. Das sind ja alles große Projekte wo es auf Performance und Sicherheit ankommt.



  • @Wutz

    OOP, RAII & Co funktionieren selbstverständlich auch mit C

    Wie genau funktioniert RAII mit C?



  • @Wutz sagte in Warum programmieren einige noch in C?:

    @Computerwelt sagte in Warum programmieren einige noch in C?:
    OOP, RAII & Co funktionieren selbstverständlich auch mit C, und zwar sehr gut

    Das würde ich gerne mal in Aktion sehen, inbesondere RAII. OOP kann man irgendwie hinhacken, siehe GTK und endlose Diskussionen hier, und ob das "sehr gut" ist, ist am Ende ja offenbar Geschmackssache. Aber RAII?

    Und "Co" bedeutet in dem Zusammenhang was? Den ganzen Rest von C++ oder wie? Referenzen? Templates? Exceptions? Operatorüberladung? Bist du sicher, dass du mit diesen Compilererweiterungen nicht die meinst, die den C++-Modus einschalten?



  • @Bashar
    Bei gcc+clang gibt es dafür zB cleanup, Referenzen braucht man nicht, da jeder C-Profi mit Original-Zeigern sowieso besser umgehen kann als es jeder C++ler jemals kann und OOP kriegt man bekanntlich mit C-Bordmitteln elegant hin, und zwar ohne irgendwas "hinzuhacken";
    selbst Exceptions sind über longjmp&Co professionell einsetzbar, siehe zB Win32-Pthreads;

    • man muss halt C nur verstanden haben und nicht nur Bücher darüber gelesen haben, was dort angeblich nicht geht.


  • @Wutz Weichei! Turing lehnte damals auch Assembler ab, da man ja wohl noch die Speicherstellen seiner Variablen im Kopf berechnen und somit direkt den Maschinencode schreiben könne. Da kannst du uns mal mit Pussy C gestohlen bleiben.

    Was für ein Quark. RAII gibts in C nicht. Punkt! OOP geht bis zu einem gewissen Grad und ja bei Exceptions gehts mit den jumps, ist aber in Sprachen mit Exceptions cleverer gelöst.



  • @Tyrdal
    Depp.
    Was ist denn das für ein Argument, dass es bei Sprachen, die es als ureigenes Konzept ansehen, Exceptions zu beherrschen, "cleverer" geht?
    Depp.



  • @Wutz Das ist der Unterschied zwischen "geht irgendwie" und "wird von Sprache unterstützt".

    Kannst du auch ohne persönliche Beleidung diskutieren? Du scheinst echt ein sozialer Krüppel zu sein. (Nein, das war jetzt keine Beleidung meinerseits sondern eine ernst gemeinte Vermutung))

    RAII in C hast du immer noch nicht wirklich erklärt. Das Wort cleanup reicht da nicht.



  • @Wutz sagte in Warum programmieren einige noch in C?:

    @Bashar
    Bei gcc+clang gibt es dafür zB cleanup

    Ich meinte in C. Dass C plus Compilererweiterung für RAII sowas kann ist trivial. Du hast behauptet es geht in C, also zeig.

    Referenzen braucht man nicht, da jeder C-Profi mit Original-Zeigern sowieso besser umgehen kann als es jeder C++ler jemals kann

    Jo, alles klar. Ich weiß doch, dass du von C++ keine Ahnung hast. Wieso musst du das direkt wieder unter Beweis stellen, wenn ich dir mal Vorschussvertrauen schenke und dich allen Ernstes sachlich etwas frage? Ich hoffe das sind einfach nur Vorurteile zu C++, die du seit Jahrzehnten wie einen Schatz mit dir herumträgst, und von Dingen außerhalb von C++ hast du zumindest ein bisschen Ahnung. Wetten würde ich darauf aber nicht abschließen.

    und OOP kriegt man bekanntlich mit C-Bordmitteln elegant hin, und zwar ohne irgendwas "hinzuhacken";

    Bekanntlich? Mir nicht. Sonst hätte ich nicht gefragt.


Log in to reply