Gibt es für C auch sowas wie Design Pattern?



  • Hi,

    mich beschäftigt gerade eine Frage. Es wird ja heute immer noch sehr viel in C programmiert. Ich kenne nur C++ etwas und habe da jede Menge zu lernen wie OOP + die bekannten Design Pattern, Exceptionsicherheit, Threadsicherheit, RAII, Smart Pointer, const correctnis, STL, Boost usw.

    Gibt es für C auch sowas wie Design Pattern oder etwas ähnliches, an dem man sich halten kann um halbwegs sichere, gut erweiterbare und wartbare Software zu entwickeln?

    EDIT: Da die Frage nach BestPratice in C hier für dumm abgetan wird , warum auch immer, müsste ihr nicht drauf antworten. Hatte mich halt nur mal ganz kurz für C interessiert, war wohl ein Fehler.



  • Butterbrot schrieb:

    EDIT: Da die Frage nach BestPratice in C hier für dumm abgetan wird , warum auch immer, müsste ihr nicht drauf antworten. Hatte mich halt nur mal ganz kurz für C interessiert, war wohl ein Fehler.

    Die Frage ist deswegen "dumm" weil Design Pattern nicht auf Sprachen basieren sondern im Allgemeinen nur Loesungswege fuer Standardprobleme aufzeigen.

    C bietet viele Features modernerer Sprachen nicht, deshalb sind viele Designpatterns natuerlich komplizierter umzusetzen.

    Aber nehmen wir zB Observer als Beispiel:
    Statt dass man Objekte mit einer Methode notify() hat, hat man halt Funktionszeiger.

    Design Pattern sind, wie gesagt: nur formale Loesungen fuer Standardprobleme.



  • Shade Of Mine schrieb:

    Butterbrot schrieb:

    EDIT: Da die Frage nach BestPratice in C hier für dumm abgetan wird , warum auch immer, müsste ihr nicht drauf antworten. Hatte mich halt nur mal ganz kurz für C interessiert, war wohl ein Fehler.

    Die Frage ist deswegen "dumm" weil Design Pattern nicht auf Sprachen basieren sondern im Allgemeinen nur Loesungswege fuer Standardprobleme aufzeigen.
    Design Pattern sind, wie gesagt: nur formale Loesungen fuer Standardprobleme.

    Deswegen steht ja auch in der Frage "sowas wie Design Pattern", wie wäre es mit lesen? Design Pattern sind laut deiner Definition "Allgemeine Loesungswege für Standardprobleme" und da ist es dumm zu fragen, ob es "Allgemeine Loesungswege für Standardprobleme" nicht auch für C gibt? Die Logik warum diese Frage dumm sein soll, verstehen ich nicht und bin daher wohl wirklich zu dumm.

    Shade Of Mine schrieb:

    C bietet viele Features modernerer Sprachen nicht, deshalb sind viele Designpatterns natuerlich komplizierter umzusetzen.

    Aha, es gibt also was, auch wenn es schwieriger ist. Aber es ist ja dumm danach zu fragen 🙄

    Shade Of Mine schrieb:

    Aber nehmen wir zB Observer als Beispiel:
    Statt dass man Objekte mit einer Methode notify() hat, hat man halt Funktionszeiger.

    Design Pattern sind, wie gesagt: nur formale Loesungen fuer Standardprobleme.

    Na geht doch und es hätte doch sehr schön sein können, dass Jemand Lösungen mit Funktionspointer, die ähnliche formale Lösungen wie Design Pattern angehen, auch mal als Script/Buch/FAQ oder sonst was veröffentlicht hat.

    Also was ist an einem Interesse nach diesen Lösungen dumm? Das klingt nicht logisch, sondern mehr nach Schikane.



  • Butterbrot schrieb:

    Das ein Moderator da halbwegs mitmacht finde ich aber schon sehr schlimm, entweder ist der auch ein bisschen dumm oder ziemlich arrogant. Dumm wäre mir lieber, da kann man wenigstens was gegen tun. 😃

    Äh, was genau stört dich an meiner Antwort?

    Designpattern sind Lösungen für Standardprobleme. Die selben Probleme die man bei der Modellierung in C++ hat, hat man in C ja auch. Die selben Design Patterns passen auch in C.

    Es gibt sehr sehr wenige Design Pattern die auf eine Sprache festgelegt sind - deshalb ist die wahrscheinlichkeit dass es Patterns nur für C gibt, eher gering.

    Die Antwort ist also: alle Design Pattern die du kennst, gelten auch für C.
    Deshalb mein Observer Beispiel.

    Best Practices sind etwas anderes. Aber die gibt es natürlich für C speziell auch. Aber da ist eine Google Suche vielleicht wirklich das Sinnvollste.

    Ich denke das Problem, abgesehen davon dass du dich von einem Troll nerven lässt, ist eher dass wir hier scheinbar unterschiedliche auffassungen zur Definition eines "Design Pattern".

    Deshalb ganz einfach:
    Was genau meinst du denn? Wie man gewisse Design Pattern in C umsetzen kann? Ich glaube nicht, dass es da eine Sammlung gibt. Aber du kannst gerne hier im Forum fragen. Viele Design Pattern sind sehr Straight Forward in C umzusetzen.

    Meistens kann man ein Objekt durch einen Funktionszeiger ersetzen.

    PS:
    Aber Design Pattern sind formale Lösungen. Sie sagen nicht WOMIT man etwas implementiert sondern WIE man das Problem angehen soll.



  • Designpatterns sind durch Objektorientierte Programmierung ja populaer geworden. Meist sind zu loesenden Probleme von der Sprache bzw. dem Programmierparadigma. Deswegen unterscheiden sich Patterns fuer Standardprobleme in C++ meist stark von Lisp, Haskell oder Prolog. Zwischen C, C++ oder Java fallen die Unterschiede geringer aus.



  • @Shade Of Mine:
    Danke für deine Ausführung und danke für das Angebot hier noch weitere Fragen zu stellen. Ich lehne da dann doch lieber ab und Google fragen kann ich auch allein.



  • Butterbrot schrieb:

    Gibt es für C auch sowas wie Design Pattern oder etwas ähnliches, an dem man sich halten kann um halbwegs sichere, gut erweiterbare und wartbare Software zu entwickeln?

    Ein Design Pattern ist ein Muster, wie ein Algorithmus ablaufen soll. Dieses Design-Pattern kannst Du auch in C realisieren.

    Je besser Du in C wirst, desto mehr wirst Du ähnlich wie C++ programmieren, weil es sich einfach als Muster aufdrängt. Als ich C++ lernte, fiel mir jedenfalls demonstrativ auf, dass andere die gleichen Probleme und die gleichen Lösungen hatten wie ich.

    Viele Dinge sind allerdings Sprachkomponenten: z.B. RAII findest Du in C nicht, hier musst Du wirklich händisch arbeiten oder mit dem Präprozessor tricksen.

    Daher rate ich Dir C eher als Übergang zum C++ Programmierer zu sehen, um eben diese erweiterten Möglichkeiten nutzen zu können.

    Bzgl. der Aussage, dass dies ein dummer Thread wäre, berücksichtige bitte auch, dass dieser Thread von "dummen" Unregistrierten erstellt wurde.



  • Xin schrieb:

    Daher rate ich Dir C eher als Übergang zum C++ Programmierer zu sehen, um eben diese erweiterten Möglichkeiten nutzen zu können.

    C ist eine eigenständige Sprache. Und C als Übergang zu C++ zu lernen oder sehen, halte ich als falsch. Wenn man C lernt, dann eben C. Aber C zu lernen um C++ zu lernen ist verkehrt.

    RAII ist übrigens kein Design Pattern 😉


  • Mod

    Meine Güte, was ein Kindergarten mal wieder. Der halbe Thread fliegt erst einmal auf die Müllkippe.

    @Threadersteller: Lass dich doch nicht so leicht von einem unregistrierten Troll verarschen!


Anmelden zum Antworten