Vorteile von C



  • hi,
    ich habe für die schule eine Server-Applikation in C geschrieben und bin an der Dokumentation dran. Ich will erläutern warum ich C benutze und was die Vorteile von C sind. Folgendes hab ich mir überlegt:

    * Die meisten und bekanntesten Server-Applikationen (z.B.
    Apache-Webserver, MySQL, OpenTracker oder Bind) sind in C implementiert.
    
    * Da die meisten Betriebssysteme in C programmiert sind (z.B. FreeBSD,
    Ubuntu oder Mircrosoft Windows), bietet C eine systemnahe API.
    
    * Durch die Primitivität und den schlanken Kern von C lassen sich
     Server-Applikationen mit hoher Performance und geringem Overheader programmieren.
    
    * C lässt sich leicht in Sprachen wie z.B. C++ oder Phyton einbetten.
    

    Was haltet ihr davon und wo sind womöglich unwahrheiten? ^^

    Danke!



  • vorteil schrieb:

    Ich will erläutern warum ich C benutze und was die Vorteile von C sind.

    Vorteile gegenüber welchen Alternativen?

    * Die meisten und bekanntesten Server-Applikationen (z.B.
    Apache-Webserver, MySQL, OpenTracker oder Bind) sind in C implementiert.

    Das deutet vielleicht darauf hin, dass an C irgendwas stimmen muss. Aber ist wohl kaum ein Vorteil an sich.

    * Da die meisten Betriebssysteme in C programmiert sind (z.B. FreeBSD,
    Ubuntu oder Mircrosoft Windows), bietet C eine systemnahe API.
    * Durch die Primitivität und den schlanken Kern von C lassen sich
    Server-Applikationen mit hoher Performance und geringem Overheader programmieren.

    Das gilt beides auch für C++. Schließlich ist C größtenteils eine Teilmenge von C++.

    * C lässt sich leicht in Sprachen wie z.B. C++ oder Phyton einbetten.

    ]
    Warum sollte man das wollen, wenn C so toll ist? BTW es heißt Python.



  • Bashar schrieb:

    * C lässt sich leicht in Sprachen wie z.B. C++ oder Phyton einbetten.

    ]
    Warum sollte man das wollen, wenn C so toll ist?

    z.b. für rechenintensive und geschwindigkeitskritische sachen. in 'echten hochsprachen' wie python ist einiges einfacher zu lösen, aber leider auch manchmal zu langsam. im cpp.de-nagazin wollte doch mal einer einen artikel schreiben, wie man python mit c-routinen aufpäppeln kann.
    🙂



  • Bashar schrieb:

    * C lässt sich leicht in Sprachen wie z.B. C++ oder Phyton einbetten.
    Warum sollte man das wollen, wenn C so toll ist? BTW es heißt Python.

    Weil es für bestimmte dinge einfach besser ist Python zu benutzen und sich der aufwand von C einfach nicht lohnt.

    Das gilt beides auch für C++. Schließlich ist C größtenteils eine Teilmenge von C++.

    Naja C++ erzeugt doch durch seine Objektorientierten Ansatz einen größeren Overheader als C oder?



  • vorteil schrieb:

    Naja C++ erzeugt doch durch seine Objektorientierten Ansatz einen größeren Overheader als C oder?

    nicht 'per se', aber man muss höllisch aufpassen, damit man sich nicht unnötigen overhead und bremsen einbaut.
    🙂



  • vorteil schrieb:

    Weil es für bestimmte dinge einfach besser ist Python zu benutzen und sich der aufwand von C einfach nicht lohnt.

    Dann hat C also auch Nachteile.

    Naja C++ erzeugt doch durch seine Objektorientierten Ansatz einen größeren Overheader als C oder?

    Nur, wenn man ihn benutzt. BTW es heißt Overhead.



  • Bashar schrieb:

    Dann hat C also auch Nachteile.

    ...was niemand bestreitet, aber es geht dem OP ja um die vorteile.
    🙂



  • lowlevel-freak schrieb:

    Bashar schrieb:

    Dann hat C also auch Nachteile.

    ...was niemand bestreitet, aber es geht dem OP ja um die vorteile.
    🙂

    richtig - ich hab doch niemals bestritten, dass C keine nachteile hat?

    sorry, ja ich weiss dass es Overhead heißt - ich schreib nur momentan so oft header 😃



  • c-freak schrieb:

    im cpp.de-nagazin wollte doch mal einer einen artikel schreiben, wie man python mit c-routinen aufpäppeln kann.
    🙂

    Das würde mich interessieren, da ich zur Zeit das meiste in Python mache. Somit wärs schon nett, wenn manche Sachen etwas schneller wären.

    Zu den Vorteilen von C:
    Mit C kann man alles machen, wenn mans wirklich drauf hat. Aber bis dahin dauerts ...



  • * Die meisten und bekanntesten Server-Applikationen (z.B.
    Apache-Webserver, MySQL, OpenTracker oder Bind) sind in C implementiert.
    - stimmt, aber warum ist das ein vorteil? willst du deren code wiederverwenden? ansonsten ist das eine begleiterscheinung, aber kein vorteil.
    
    * Da die meisten Betriebssysteme in C programmiert sind (z.B. FreeBSD,
    Ubuntu oder Mircrosoft Windows), bietet C eine systemnahe API.
    - es gibt auch systemnahe APIs in c++, ich sehe hier keinen vorteil in reinem ansi-c.
    
    * Durch die Primitivität und den schlanken Kern von C lassen sich
     Server-Applikationen mit hoher Performance und geringem Overheader programmieren.
    - server design schlägt die möglichkeiten einer "low level" sprache bei weitem. sei nicht überrascht, wenn jemand in java einen server schreibt, der wesentlich performanter als dein c-server arbeitet ;)
    
    * C lässt sich leicht in Sprachen wie z.B. C++ oder Phyton einbetten.
    - willst du c++ oder python verwenden? wenn nicht, bietet die verwendung von ansi-c keinen vorteil.
    


  • nachteil schrieb:

    - es gibt auch systemnahe APIs in c++, ich sehe hier keinen vorteil in reinem ansi-c.

    die sind aber ekelhaft in der verwendung. siehe z.b. COM, directx und ähnliches zeug. es geht doch nichts über einfache, primitive C-schnittstellen.
    🙂



  • vorteil schrieb:

    * Da die meisten Betriebssysteme in C programmiert sind (z.B. FreeBSD,
    Ubuntu oder Mircrosoft Windows), bietet C eine systemnahe API.

    das hier würde ich in der Begründung ganz weglassen, weil

    1. das nicht ganz so stimmt. Ich kenne auch andere Betriebssysteme (im embedded systems Bereich) die sehr wohl in C++ geschrieben sind und sehr performant sind. Außerdem wenn du schon Beispiele nennst, dann nimm BSD bzw. GNU/Linux statt FreeBSD und Ubuntu, die nur Distributionen sind. Es gibt in der Welt andere Distris als Ubuntu und andere BSDs als FreeBSD.

    2. das nicht ganz so stimmt. Es stimmt, dass die Kern der Betriebssysteme (wie Linux) zu 90% (mehr oder weniger) in C geschrieben sind, aber es gibt sehr viele Applikationen und Tools, die zum Betriebssystem gehören, die in C++ und sogar anderen Sprachen geschrieben sind (perl, python, bash). Das gilt ebenso für Windows.

    Btw, ich dachte immer, dass Windows in C++ geschrieben wäre, immerhin ist die WinAPI C++, oder?



  • supertux schrieb:

    Btw, ich dachte immer, dass Windows in C++ geschrieben wäre, immerhin ist die WinAPI C++, oder?

    nö! absolut gar nicht 🙂



  • supertux schrieb:

    Ich kenne auch andere Betriebssysteme (im embedded systems Bereich) die sehr wohl in C++ geschrieben sind und sehr performant sind.

    welche wären das denn?
    🙂



  • hi,
    also das soll nicht zum bashen von anderen sprachen dienen oder sonstwas. auch hab ich den titel vielleicht bischen ungünstig gewählt. also in der doku lautet die überschrift "warum doe programmiersprache C?". mir ist klar, dass einiges auch ansichtssache ist: was ist "hohe" performance ? oder was ist ein großer overhead?
    ich möchte nur gern große fehler vermeiden die mir dann abzüge brigen 😉



  • sothis_ schrieb:

    supertux schrieb:

    Btw, ich dachte immer, dass Windows in C++ geschrieben wäre, immerhin ist die WinAPI C++, oder?

    nö! absolut gar nicht 🙂

    ***:/change/stuff/windows/win2k$ find . -name \.cpp | wc -l
    2255
    ***:/change/stuff/windows/win2k$ find . -name \.c | wc -l
    4667
    ***:/change/stuff/windows/win2k$ find . -name \.asm | wc -l
    148
    ****:/change/stuff/windows/win2k$

    Also zumindest ein Drittel von Windows 2000 ist in C++ implementiert.
    Ich habe allerdings keine Ahnung ob diese Quelle glaubwürdig ist.



  • vorteil schrieb:

    also das soll nicht zum bashen von anderen sprachen dienen oder sonstwas.

    tut's ja auch nicht. die meisten anderen sprachen haben irgendeine daseinsberechtigung, auch die esoterischen. um die vorteile mal zusammenzufassen: C ist für programme das beste, die schlank und schnell sein müssen und die viele einflussmöglichkeiten auf hardware oder betriebssystem brauchen. wo C nicht mehr weiterhilft, da hilft nur noch assembler und wo assembler nicht mehr reicht, da hilft nur noch der lötkolben oder ein anderes chipdesign. dafür ist mit den 'dicken' programmiersprachen das schreiben von 'allerweltsprogrammen' einfacher, weil sie z.b. riesige libraries, designtools für grafische oberflächen etc. gleich mitbringen. man kann z.b. in C# ein betriebssystem schreiben, dass aber keiner benutzen würde, weil's zu lahm ist und man kann auch in C ein komplexes warenwirtschaftssystem coden, wenn man 10 jahre zeit hat.
    🙂



  • Storm.Xapek.de schrieb:

    ***:/change/stuff/windows/win2k$ find . -name \.cpp | wc -l
    2255

    sieht realistisch aus, ms hat teilweise ihr eigenes visual studio benutzt, aber die .cxx-files sollte man auch noch mitzählen.
    im win2k/ntos -directory wird man sicher viel weniger .cpp files finden (höchstens irgendwelche testcodes).
    und nochwas, wenn man mal in die diese .cpp-files reinschaut, findet man meistens blanken C code.



  • OS-freak schrieb:

    supertux schrieb:

    Ich kenne auch andere Betriebssysteme (im embedded systems Bereich) die sehr wohl in C++ geschrieben sind und sehr performant sind.

    welche wären das denn?
    🙂

    na, einige der L4 Familie wie L4Ka::Pistachio aus Karlsruhe.



  • win2k-freak schrieb:

    Storm.Xapek.de schrieb:

    ***:/change/stuff/windows/win2k$ find . -name \.cpp | wc -l
    2255

    sieht realistisch aus, ms hat teilweise ihr eigenes visual studio benutzt, aber die .cxx-files sollte man auch noch mitzählen.
    im win2k/ntos -directory wird man sicher viel weniger .cpp files finden (höchstens irgendwelche testcodes).
    und nochwas, wenn man mal in die diese .cpp-files reinschaut, findet man meistens blanken C code.

    ***:/change/stuff/windows/win2k$ find . -name \.cxx | wc -l
    1456

    Stimmt en Haufen .cxx Files liegen auch noch rum

    Also eine, zugegeben oberflächeliche, Suche nach ein Paar Schlüsselwörtern
    (template,template<class T>,namespace,...) gab einige Treffer.
    Ich denke also schon das in Windows auch reger Gebrauch von C++ gemacht wird.



  • Storm.Xapek.de schrieb:

    sothis_ schrieb:

    supertux schrieb:

    Btw, ich dachte immer, dass Windows in C++ geschrieben wäre, immerhin ist die WinAPI C++, oder?

    nö! absolut gar nicht 🙂

    ***:/change/stuff/windows/win2k$ find . -name \.cpp | wc -l
    2255
    ***:/change/stuff/windows/win2k$ find . -name \.c | wc -l
    4667
    ***:/change/stuff/windows/win2k$ find . -name \.asm | wc -l
    148
    ****:/change/stuff/windows/win2k$

    Also zumindest ein Drittel von Windows 2000 ist in C++ implementiert.
    Ich habe allerdings keine Ahnung ob diese Quelle glaubwürdig ist.

    meine antwort hat sich auf die winapi bezogen 🙂
    aus irgendeinem, mir immer noch unerfindlichem grunde, war ich auch mal im besitz dieses quellcodeauszuges 😃 die masse des c++ codes waren userspace-programme wie explorer, paint, wordpad und so'n krams 🙂


Anmelden zum Antworten