Warum verwendet ueberhaupt noch irgendjemand C?



  • Wüsste nicht, wozu man das braucht, aber hier mal eine Implementation in Haskell:

    withFiles :: [FilePath] -> IOMode -> ([Handle] -> IO r) -> IO r
    withFiles []     m f = f []
    withFiles (x:xs) m f = withFile x m $ \h -> withFiles xs m $ \hs -> f (h:hs)
    
    main = withFiles ["1.txt","2.txt"] ReadMode $ \hs ->
             forM_ hs $ \h -> do
               d <- hGetContents h
               putStrLn d
    


  • Bist du da sicher? Die stehen nämlich nicht einfach in stdio.h (zumindest sollten sie nicht) und sind nicht von normalem Anwendungscode aus ansprechbar. Egal ob sie priv_ am Anfang haben oder nicht.

    Also wenn ich im Visual Studio auf FILE gehe und ein Goto Definition mache (F12), komme ich an direkt in die Struct Defintion in stdio.h.

    Unter Codelite komme ich nach einer etwas unwesentlich längeren Suche auch auf das struct in stdio.h. Bin da zuerst in cstdio namespace Deklaration gelandet.

    Und wenn ich File-> eintippe, listet mir Intellisense automatisch die ganzen Member auf.

    lol. Wenn ich meine Member priv_XYZ nenne, dann ist jedem Programmierer offensichtlich, dass das private Member sind. Wer dennoch drauf zugreift, der macht das bewusst.

    Und das bezweifele ich. Erstens steht nicht immer eine saubere Doku da. Und zweitens sind Präfixe selten eindeutig und deren Bedeutung gehen schon einmal vorloren. Wer achtet denn schon immer auf eine intelligente Variablenbezeichnug?

    Und dann kommt ein C Programmierer durch und durch, hat keine Ahnung von private Membern, und greift einfach darauf zu, weil er die Bedeutung von private nicht kennt.

    Ist das bewusst?



  • pragmatiker schrieb:

    Wenn du ein Softwareprojekt in C anfängst, bekommst du Pragmatiker und das Projekt geht vorwärts.
    Wenn du ein Softwareprojekt in C++ anfängst, bekommst du übergeschnappte Template-Fanatiker und die Programmierer verfangen sich in Design-Überlegungen und bauen unnötige Bibliotheken. Nichts geht mehr vorwärts. Nenn mir mal ein grösseres Software-Projekt, das alle Regeln von STL befolgt.

    C++ ist gut, wenn man pragmatisch bleibt und nicht übermütig in der Nutzung der Sprachfeatures wird. Aber die Richtung von STL ist gefährlich, so wird man bestenfalls Library-Developer.

    C++ kann schon ein Fass ohne Boden sein. Seine Anwendung erfordert ein Höchstmaß an Disziplin und Erfahrung. Sonst sprengt man sich schnell ein Bein weg (Stroustrup).


Anmelden zum Antworten