Warum ist C immer noch so erfolgreich?



  • seldon schrieb:

    2. C ist der kleinste gemeinsame Nenner.

    Ich denke, das ist ein sehr wichtiger Punkt. Nicht alles ist C++, es gibt auch sehr viel andere Sprachen und es ist viel einfacher, ein Binding für eine C Lib zu schreiben, als für eine C++ Lib.

    @SuccessOfC: ich würde mir C ehrlich gesagt nicht mehr antun. OOP magst du vielleicht noch nicht verstehen oder mögen, aber allein die manuelle Speicherverwaltung in C ist sehr umständlich. Und es ist ziemlich schwierig, elegant in C zu programmieren, ohne einen Haufen Spaghetticode zu produzieren. Auch wenn du von C# kommst, wird dir vieles unnötig kompliziert oder fehleranfällig vorkommen.
    Wenn du einfach nur die Sprache lernen willst, ok. Aber wirklich irgendwelche neuen Projekte würde ich damit nicht anfangen. Wenn du das nicht professionell machst und es nicht brauchst, warum bleibst du nicht bei C#?
    Man kann auch allein ziemlich umfangreiche Projekte schreiben 😉 Eins meiner Projekte hatte über 100 000 Zeilen C# und ich hab vier Jahre dran gearbeitet.



  • Tja, warum bleibe ich nicht bei C#? Nun, ich möchte mal weg von den ganzen Libs, Frameworks und IDEs. Ich möchte Dinge wirklich selbst programmieren und nicht nur Legobausteine zusammenstecken wie ein Fünfjähriger.

    Nein, professionell möchte ich keine Programme in C entwickeln. Ob das nur Spagetticode bei raus kommt oder nicht ist, ist völlig egal. Das Programm muss funktionieren, nur das zählt. Man kann sich das vielleicht vorstellen wie ein Schreiner, der mal die Schnauze voll von Fabrikarbeit hat und ein Stück wirklich selber bauen möchte.



  • SuccessOfC schrieb:

    Nun, ich möchte mal weg von den ganzen Libs, Frameworks und IDEs. Ich möchte Dinge wirklich selbst programmieren und nicht nur Legobausteine zusammenstecken wie ein Fünfjähriger.

    Ja, das ist ein durchaus legitimer Wunsch und da macht C denk ich auch mehr Sinn als C++. Später kannst du dann vielleicht auch Assembler lernen (wobei ich erst Assembler und dann C gelernt habe).



  • Die wesentlichen Gründe, warum C noch so erfolgreich ist, sind schon genannt worden. Trotzdem glaube ich, daß C langfristig von C++ abgelöst werden wird.
    Wenn man Programmiersprachen eine Lebensspanne, was die Verbreitung und Benutzung anbetrifft, zugesteht, dürfte C sich wahrscheinlich schon in der zweiten Hälfte befinden, C++ hingegen hat die Mitte noch nicht erreicht.



  • SuccessOfC schrieb:

    Ich möchte Dinge wirklich selbst programmieren und nicht nur Legobausteine zusammenstecken wie ein Fünfjähriger.

    Dann musst Du Assembler programmieren, denn selbst C ist nichts anderes als Legobausteine zusammenzustecken.



  • SuccessOfC schrieb:

    Tja, warum bleibe ich nicht bei C#? Nun, ich möchte mal weg von den ganzen Libs, Frameworks und IDEs. Ich möchte Dinge wirklich selbst programmieren und nicht nur Legobausteine zusammenstecken wie ein Fünfjähriger.

    Nein, professionell möchte ich keine Programme in C entwickeln. Ob das nur Spagetticode bei raus kommt oder nicht ist, ist völlig egal. Das Programm muss funktionieren, nur das zählt. Man kann sich das vielleicht vorstellen wie ein Schreiner, der mal die Schnauze voll von Fabrikarbeit hat und ein Stück wirklich selber bauen möchte.

    das ist auf jeden Fall eine gute Idee.
    Ein Background in C und Assembler schadet niemals, da man dadurch viele Dinge klarer sieht.
    Bei "nur Java/C#" Programmierern habe ich schon öfter gemerkt, dass sie eigentlich gar nicht wirklich wissen wie die Dinge im Hintergrund ablaufen, was ein Stack ist, was ein Heap ist, sind erstaunt dass es am Computer keine "natürlichen" Stringdatentyp gibt, usw....
    Nicht, dass man die Dinge unbedingt wissen muss, um in der SW Entwicklung sein Geld zu verdienen. Aber schaden tut es auf keinen Fall.

    Wenn ich Stellenanzeugen lese, bei denen man 5000 Frameworks können muss, aber sonst keine Fähigkeiten brauche, ist das der beste Hinweis auf eine Stelle, wo man Legosteine zusammenstecken darf.
    Bei Stellen für C oder C++ Programmierer liest man dagegen nur selten von irgendwelchen Frameworks (vllt. mal Qt oder OpenCV oder sowas...).

    Wenn du wirklich sehen willst, was in einem Programm so abläuft, starte mal einen Debugger.
    Erstelle ein einfaches Hello World Programm in C.
    Du denkst, da werden nur 2 oder 3 Befehle ausgeführt?
    Starte dein Hello World Programm in OllyDbg und lass dich überraschen 😉
    OllyDbg: http://thelegendofrandom.com/blog/archives/31

    Zur Ausgangsfrage: Mir sind Java Programme schon öfter mit einer Null Pointer Exception abgeflogen als C Programme mit einer Access Violation. Also auch mit Java kann man sich ins Bein schießen.



  • C vs C++ schrieb:

    Die wesentlichen Gründe, warum C noch so erfolgreich ist, sind schon genannt worden. Trotzdem glaube ich, daß C langfristig von C++ abgelöst werden wird.

    Falscher Blickwinkel.
    C als höchstportabler Hochassembler mit einheitlicher API wird sich noch Jahrhunderte halten. Schon rein aus Legacy-Gründen werden C-Schnittstellen erhalten bleiben (WinAPI, Posix) und es werden neue entstehen, denn C ist das Mass aller Dinge, dem andere Programmiersprachen ihre Bindings aufsetzen (Python, C++, Haskell). Niemand kann da C den Rang streitig machen.

    C++ hingegen als hochperformante Sprache mit viel Abstraktionsmöglichkeiten für Linux/Windows/Mac kann recht schnell ersetzt werden. Google migriert auf Go, andere ziehen nach -> Adé C++. Aber im Moment sehe ich noch keine grosse Bedrohung.



  • Ich denke auch, dass in Zukunft in C wesentlich mehr programmiert wird als in C++. Warum? Nun, wenn man Abstraktion und OOP braucht, dann gibt es weit aus komfortablere Sprachen(Java, C#, Python, Ruby, etc.) und die, die da noch kommen werden.

    Sollte man doch das letzte bisschen Geschwindigkeit brauchen(was sehr sehr selten der Fall ist), dann kann man immer noch die paar kritischen Stellen auslagern.

    Ein Projekt vollständig in C++ zu schreiben macht doch heute kein Software-Entwickler mehr freiwillig. Erstens nehmen sich die meisten nicht mehr Zeit über viele Jahre das sehr komplexe C++ zu lernen und zweitens will man auch dass seine Software auch noch dann wartbar ist wenn die ganzen alten Hasen, die noch C++ gut können, das Schicksal der Dinos teilen. C hingegen kann im in relativ kurzer Zeit wirklich komplett beherrschen.

    Es gibt keinen logischen Grund, warum C++ sich länger wie C halten würde. Allein mit C, Assembler und den anderen höher abstrahierten Sprachen ala Java, C#, etc. kann man die komplette Informatik perfekt abdecken.

    C++ wird wie dieses Forum ganz langsam ausbluten, da helfen auch neue Standards nix. Die Sprache wird man nicht freiwillig für neue Projekte verwenden. Wenn man C++ meiden kann, so tut man dies.



  • Da braucht man gar nicht agurmentieren, es reichen die Fakten. Geht in einen großen Zeitschriftenhandel und schaut euch an, in wievielen Zeitungen C++ ein Thema ist und vergleicht dies mit den Sprachen die thematisiert sind. Das ist immeer, neben Stellenanzeigen, ein guter Indikator. So habe ich das schon zu C64-Zeiten gemacht.



  • SuccessOfC schrieb:

    Warum ist C immer noch so erfolgreich. Ich meine die Sprache ist uralt und mit den Zeigern kann man sich schnell ins Bein schießen.

    Alter ist kein Grung. Und wo du hinschiesst, ist dein Problem und nicht das der Sprache.

    C ist das Mass aller Dinge

    Quatsch. C ist der kleinste gemeinsame Nenner, auf den man sich einigt zwecks Interoperabilitaet.


Anmelden zum Antworten