Leidige Frage - Für Anwendungs- UND Systemprogrammierung eher C oder C++?



  • Hallo liebes Forum!

    Ich kann mir vorstellen, dass einigen aufgrund solcher Grundsatz-Postings die Zornesröte ins Gesicht steigt, aber ich versichere euch, es liegt mir nichts ferner, als jmnd. zu ärgern.

    Vielmehr hab ich trotz Google- und Forensuche keine zufriedenstellende Antwort gefunden, und wenn doch eine Beantwortung in Ansätzen vorhanden war, dann eine unseriöse.

    Ich hab' beschlossen, aus Freude C oder C++ zu lernen. Jedoch stellt sich mir die Frage, für welche Sprache für System- UND Anwendungsprogrammierung eher geeignet ist?

    Soweit ich weiß, ist C eher für Systemprogrammierung in Verwendung, und C++ für größere Anwendungen, da es aufgrund des OOP einfacher zu warten und dergleichen ist..

    Ich persönlich hätte eigentlich vor, später mal (in meinem Maßstab..) Anwendungen zu schreiben, würde mich aber auch gern' mit der Programmierung von Linux auseinandersetzen - soweit mir das halt möglich ist, einfach um's besser zu verstehen...

    Aber die Kernel der meisten Betriebssysteme sind ja in C geschrieben - nicht in C++.
    Wieso ist das heute noch der Fall? Würde mir C++ für die Systemprogrammierung weiterhelfen? Und andererseits, ist C für Anwendungsprogrammierung brauchbar? Und wie ist das nun, ist ein C++-Programmierer in der Lage, komplexen C-Code zu verstehen?

    Mir sind beide Bereiche ungefähr gleich wichtig, die Frage ist also, welche der beiden Sprachen lässt sich eher mit beiden Feldern vereinbaren?

    Wie gesagt, tut mir leid, wenn's eine leidgeprüfte Frage ist, aber in den wenigsten FAQ's etc, wird auf die Verwendung in der "System-" UND "Anwendungsprogrammierung" eingegangen.

    Sollte es hier im Forum dennoch bereits beantwortet worden sein, so bitte schließt den Beitrag und gebt mir doch einen Link - ich hab nicht's gefunden.

    Vielen Dank,

    silberfisch.



  • Oje.

    Ich höre schon die Finger knacksen, the next flame-thread.

    *ding* Next round!



  • Auf das stelle ich mich ein. Aber dann bitte ich einfach darum, mir einen Link o.ä. zu geben. Hätte ich einen gefunden, würde ich nicht fragen :).

    Aber es wird wirklich nicht darauf eingegangen, welche Sprache sich eher für BEIDES verwenden lässt. Es geht mir eig. nur um diese Frage.

    Und dann kann man das Ding ja wieder zumachen..

    Tut mir ja leid..



  • Sollte es hier im Forum dennoch bereits beantwortet worden sein, so bitte schließt den Beitrag und gebt mir doch einen Link - ich hab nicht's gefunden.

    Das wird sogar endlos im Kreis diskutiert. Aber eine abschliessende Antwort, mit der alle zufrieden waren, gab's afaik bis jetzt nicht. Einfach mal ein wenig suchen, gute Stichworte sind "C", "C++", "linux kernel", "windows kernel" udgl.



  • schon wieder diese glaubensfrage



  • silberfisch schrieb:

    Ich hab' beschlossen, aus Freude C oder C++ zu lernen.

    Das ist Unfug. Du wirst C UND C++ lernen.
    Es fragt sich nur, in welcher Reihenfolge. Und über die beste Reihenfolge gibt es keine Faustregel. Beide Reihenfolgen haben ihre Vorzüge. Es hängt vom jeweiligen Schüler ab, wierum es für ihn am besten wäre.



  • silberfisch schrieb:

    Aber die Kernel der meisten Betriebssysteme sind ja in C geschrieben - nicht in C++. Wieso ist das heute noch der Fall?

    was heisst heute noch? C und C++ sind beides relativ alte sprachen. anhand des alters kann man nicht entscheiden, was gut oder mies ist. zu C++ im kernel-mode (windosen kernel) schau mal hier: http://www.microsoft.com/whdc/driver/kernel/KMcode.mspx

    silberfisch schrieb:

    Würde mir C++ für die Systemprogrammierung weiterhelfen?

    ich denke nicht, aber darüber herrschen geteilte meinungen. ich meine, dass man mit C auf systemebene besser dran ist. C++ ist unglaublich mächtig und verführt viele programmierer dazu, seltsame umwege zu gehen, den abstraktionsgrad künstlich hochzutreiben, nach sinnlosen verallgemeinerungen zu suchen, usw. was schnell nach hinten losgehen kann. system-software sollte, meiner meinung nach, kompakt, performant und 'straight' sein und dazu ist C als 'portabler makro-assembler' sehr gut geeignet. auch zwingt C einem, durch sein geringes abstraktionsniveau, eine maschinenfreundlichere denkweise auf als C++.

    silberfisch schrieb:

    Und andererseits, ist C für Anwendungsprogrammierung brauchbar? Und wie ist das nun, ist ein C++-Programmierer in der Lage, komplexen C-Code zu verstehen?

    wahrscheinlich ja. umgekehrt wird es wohl nicht mehr so sein. C++ programme können sehr unleserlich sein (schau dir z.b. mal den code der STL an), so dass selbst gestandene C++ coder da kaum durchblicken. C-code kann natürlich auch beliebig komplex und undurchschaubar sein, aber das macht niemand (ausser mit absicht).
    🙂



  • Gerade bei C++ ist es (imho) so das die Sprache von einem Entwickler sehr viel Wissen abverlangt damit dieser auch nur halbwegs brauchbare Programme damit schreiben kann.

    Im Vergleich dazu kann man bei Sprachen wie java und C# mit viel weniger Wissensbasis bereits gute Programme erzeugen. Das soll jetzt nicht heissen diese Sprachen seien weniger mächtig, sondern eher besser Strukturiert.

    In C++ kann man auch so ziemlich alles was geht falsch machen ohne das die Sprache bzw der COmpiler auch nur nen Mucks macht. Dagegen erlauben Sprachen wie Java udn C# viele der groben Fehler gar nicht erst.

    NAch meiner Meinung ist C++ einfach die falsche Sprache für einen Einsteiger, weil er hier so ziemlich alles falsch lernen kann was geht.

    Zur Eingangsfrage... Ich finde weder C noch C++ sind in der heutigen Zeit für Anwendungsentwicklung die richtige Wahl. Dann schon eher C# (für die Microsoft Welt) oder Java für den Rest 😉



  • loks schrieb:

    Zur Eingangsfrage... Ich finde weder C noch C++ sind in der heutigen Zeit für Anwendungsentwicklung die richtige Wahl. Dann schon eher C# (für die Microsoft Welt) oder Java für den Rest

    *ack*, wobei Java unter windows auch nicht das schlechteste ist, wenn einem maximale portabilität wichtig ist.
    🙂



  • ;fricky schrieb:

    loks schrieb:

    Zur Eingangsfrage... Ich finde weder C noch C++ sind in der heutigen Zeit für Anwendungsentwicklung die richtige Wahl. Dann schon eher C# (für die Microsoft Welt) oder Java für den Rest

    *ack*, wobei Java unter windows auch nicht das schlechteste ist, wenn einem maximale portabilität wichtig ist.
    🙂

    ...und geschwindigkeit egal ist.



  • silberfisch schrieb:

    Soweit ich weiß, ist C eher für Systemprogrammierung in Verwendung, und C++ für größere Anwendungen, da es aufgrund des OOP einfacher zu warten und dergleichen ist..

    Das Problem ist nur, dass OOP in C++ keinen Spass macht.

    silberfisch schrieb:

    Wieso ist das heute noch der Fall? Würde mir C++ für die Systemprogrammierung weiterhelfen? Und andererseits, ist C für Anwendungsprogrammierung brauchbar?

    Ich verstehe nicht wieso man unbedingt eine Sprache fuer alles nehmen muss. IMHO eignen sich weder C noch C++ fuer Anwendungen.



  • DEvent schrieb:

    Das Problem ist nur, dass OOP in C++ keinen Spass macht.

    Etwas, das man nicht beherrscht, macht selten Spass.

    DEvent schrieb:

    IMHO eignen sich weder C noch C++ fuer Anwendungen.

    Jaja. IMHO bist du ein Troll.



  • DEvent schrieb:

    Das Problem ist nur, dass OOP in C++ keinen Spass macht.

    OOP macht generell keinen Spaß. Also, wo ist das Problem?



  • silberfisch schrieb:

    Soweit ich weiß, ist C eher für Systemprogrammierung in Verwendung, und C++ für größere Anwendungen, da es aufgrund des OOP einfacher zu warten und dergleichen ist..

    Ja, das stimmt.
    Wenn du mal Informatik studierst, dann wirst du im Fach Systemprogrammierung in C programmieren.
    Auch heute noch, bei den Bachelor Studiengängen.

    Aber die Kernel der meisten Betriebssysteme sind ja in C geschrieben - nicht in C++.

    Haiku, der Open Source Ersatz von BeOS ist AFAIK in C++ geschrieben.
    http://de.wikipedia.org/wiki/Haiku_(Betriebssystem)

    **Wieso ist das heute noch der Fall?
    **

    **
    AFAIK weil C Funktionen feste Einsprungnamen hat (oder wie man das nun genau nennt, Profis wissen was ich meine) und somit sich besser auch von anderen Programmierprachen aus nutzen läßt.
    C++ ist hier von Compiler zu Compiler unterschiedlich und dann gibt's noch so Sachen wie Funktionsüberladung usw. das macht das ganze von anderen Sprachen aus nicht einfach.

    Würde mir C++ für die Systemprogrammierung weiterhelfen? Und andererseits, ist C für Anwendungsprogrammierung brauchbar?

    1. Ja, C++ ist im Prinzip ja eh nur eine Erweiterung von C.

    2. Ja, C kann man auch für Anwendungen verwenden, wird halt umständlicher bei großen Projekten.
    Aber schau dir mal Gnome und so an, dieses Projekt ist groß und in C geschrieben.

    [QUOTE]
    Und wie ist das nun, ist ein C++-Programmierer in der Lage, komplexen C-Code zu verstehen?**
    Ja

    Mir sind beide Bereiche ungefähr gleich wichtig, die Frage ist also, welche der beiden Sprachen lässt sich eher mit beiden Feldern vereinbaren?

    C ist hier IMO universeller aber auch umständlicher.
    Lern doch einfach beides.



  • silberfisch schrieb:

    Aber es wird wirklich nicht darauf eingegangen, welche Sprache sich eher für BEIDES verwenden lässt. Es geht mir eig. nur um diese Frage.

    BTW, du könntest auch D nehmen, D eignet sich für beides, da es zum einen für die Systemprogrammierung ausgelegt ist aber zum anderen auch Objekt Orientierte Programmierung out of the Box bietet.
    Mußt halt dann leider damit rechnen, daß D in der Industrie bis jetzt so gut wie gar nicht benutzt wird, aber für deine eigenen Projekte wäre es kein Fehlgriff.



  • Ach ja und wenn du am Linux Kernel herumwerkeln willst, dann wirst du um C nicht herumkommen.
    Linus Torvalds erwartet nämlich C Code.



  • *chipshol* *bieraufmach* *zurücklehn* 😃 😃 😃

    Natürlich C. Ich liebe Pointer, lege mir typedefs unter's Kopfkissen und
    finde OOP einfach überflüssig und langweilig. Javascript ist schon schlimm
    genug. Natürlich kann man in C größere Projekte realisieren (zB Linux oder
    einen C++- oder Java-Compiler 🕶 ). Aber dann kann man auch beim
    Original bleiben 👍



  • otze schrieb:

    DEvent schrieb:

    Das Problem ist nur, dass OOP in C++ keinen Spass macht.

    OOP macht generell keinen Spaß. Also, wo ist das Problem?

    OOP macht sehr viel Spaß. Was hast du den für Leiden mit OOP?



  • DEvent schrieb:

    Was hast du den für Leiden mit OOP?

    er hat bisher bestimmt nur OOP unter C++ gemacht. *fg*
    🙂



  • Scheppertreiber schrieb:

    ... und finde OOP einfach überflüssig und langweilig.

    ^^überflüssig ist es schon mal nicht. warum du's nicht magst, sollteste vielleicht mal erzählen, also berichte über deine schlechten erfahrungen.
    🙂


Anmelden zum Antworten