Was spricht für/gegen 'C' als Programmier-Sprache ...

  • Ich würde generell als Anfänger nicht irgendwelche Treiber schreiben wollen ;-)


    Globaler Namespace: framp stimmt, danke - das hatte ich irgendwie verdrängt. Ist halt auch schon sehr lang her bei mir.

    .NET-, Unity3D-, Web-Dev.
    Mikrocomputer-Hobbyist.

  • Globaler Namespace: framp stimmt, danke - das hatte ich irgendwie verdrängt. Ist halt auch schon sehr lang her bei mir.

    Pro wurden jetzt schon alle genannt, die ich auch als pro auffassen würde, nehmen wir das doch mal als Contra. Ich habe mich in den Tagen sein Neujahr viel auf GitHub in den Sourcen des Linux Kernels rumgetrieben. Dann hat man dort eine Funktion, in deren Aufruf eine Konstante vorkommt, die aber in der selben Datei nicht definiert ist. Und jetzt? Kann man sich jede Menge #includes anschauen, bis man endlich mal das passende #define gefunden hat, und wir reden immerhin vom Kernel...

    Zum Glück haben die Damen und Herren dort eine recht konsistente Namensgebung.


    Das ganze ist finde ich ganz gut vergleichbar mit dem pythonianischen from foo import * - in vielen Fällen absoluter Schrott...

  • Hm, der globale Namensraum stimmt - fast - zumindest. Ich würde jetzt nicht meine eigene Hand dafür in's Feuer legen wollen, ob die "static"-Kapselung auf Modulebene zur Sprachdefinition C's gehört oder nicht, jedoch wird sie quasi von allen Compilern/Linkern berücksichtigt (auch das Handling von Mehrfachdefinitionen derselben Funktion in unterschiedlichen Modulen lib/obj ist irgendwie durch den Linker geregelt ). Aber grundsätzlich ist das nur ein Armutszeugnis im Vergleich zu Modula und Oberon, bei denen das bereits vor einem 1/4 Jahrhundert Bestandteil der Sprachdefinition war.


    Nix gegen C - es kommt immer auf den Einsatzzweck an, welche Sprache wohl die geeignetere ist. Ja, beschränke ich mich auf Projektgrößen eines "ATTiny Heizungsthermostaten", dann kann ich auch meine 32 AVR/ARM Register gut "zuordnen" und überblicke die Programmstruktur in Assembler. Arbeite ich in global verteilten Teams, dann sollte man sich eher um das Problem selbst, als auf die Verteilung "wer darf welches Register benutzen" kümmern. Andere Probleme erfordern halt andere Herangehensweisen und damit auch andere Lösungen...


    Was ist eigentlich das Ziel dieses (enorm frequentierten) Threads?

  • bool OT;

    OT = true;


    if (OT)

    {

    Alle professionellen Programmierer die ich je getroffen habe, in allen von mir bereisten Ländern der Erde, koennen C. Oft besser als Englisch;

    Das ist sicherlich statistisch nicht relevant;

    Aber ich bin absolut davon überzeugt dass jemand, der mit Programmieren sein Geld verdienen will früher oder später um C nicht herum kommt;

    Für den ambitionierten Amateur (Bastler?) gilt das genauso;

    Das hat mit der Frage was für oder gegen C spricht grundsätzlich nichts zu tun;

    Es ist einfach so;

    Meine Meinung;

    }