Nicht nur der Linux Kernel: ANSI-C bevorzugt vor C++



  • Hier:
    http://www.speech.cs.cmu.edu/flite/doc/flite_5.html#SEC10

    Festival is written in C++ which was a good decision at the time and perfectly suitable for a large program. However what was discovered over the years of development is that C++ is not a portable language. Different C++ compilers are quite different and it takes significant amount of work to ensure compatibility of the code base over multiple compilers. What makes this worse is that new versions of each compiler are incompatible and changes are required. At first this looked like we were producing bad quality code but after 10 years it is clear that it is also that the compilers are still maturing. Thus it is clear that Festival and the Edinburgh Speech Tools will continue to require constant support as new versions of compilers are released.

    A second problem with C++ is the size and efficiency of the code produced. Proponents of C++ may rightly argue that Festival and the Edinburgh Speech Tools aren't properly designed, but irrespective if that is true or not, it is true that the size of the code is much larger and slower than it need be for what it does. Throughout the design there is a constant trade-off between elegancy and efficiency which unfortunately at times in Festival requires untidy solutions of copying data out of objects processing it and copying back because direct access (particularly in some signal processing routines) is just too inefficient.

    Another major criticism of Festival is the use of Scheme as the interpreter language. Even though it is a simple to implement language that is adequate for Festival's needs and can be easily included in the distribution, people still hate it. Often these people do learn to use it and appreciate how run time configurability is very desirable and that new voices may be added without recompilation. Scheme does have garbage collection which makes leaky programs much harder to write and as some of the intended audience for developing in Festival will not be hard core programmers a safe programming language seems very desirable.

    After taking into consideration all of the above it was decided to develop Flite as a new system written in ANSI C. C is much more portable than C++ as well as offering much lower level control of the size of the objects and data structure it uses.

    Ist C++ wirklich so widerspenstig?



  • nicht c++ ist widerspenstig, was portabilität angeht sind es die compiler 🙂



  • sothis_ schrieb:

    nicht c++ ist widerspenstig, was portabilität angeht sind es die compiler 🙂

    Wie sagst Du dazu? Würdest Du lieber C oder C++ für so ein Projekt wählen?
    Der GCC wird bald in C++ neu geschrieben. Aber immer noch gibt es Leute, die lieber C nehmen. Haben die keine Ahnung von C++ oder woran liegt das?

    PS: Geiler Smiley :schland:
    Schland!



  • sothis_ schrieb:

    nicht c++ ist widerspenstig, was portabilität angeht sind es die compiler 🙂

    was portabilität angeht sind es die betriebssysteme! eins würde reichen, mehrere erzeugen sprachmonster! ⚠



  • Haben die keine Ahnung von C++ oder woran liegt das?

    Ich denke, die Ahnung haben sie.
    Wie es aussieht, mussten sie die Software auf verschiedenen Plattformen auf embedded Systemen zum Laufen kriegen. Und wie heisst es, Gott hat einmal die Steine gefragt: "Wollt ihr Embedded System Programmierer werden" und die Steine haben geantwortet: "Wir sind nicht hart genug" 😉
    Du bist anscheinend ein PC-Programmierer und auch nur ein Windows-User dazu, und kennst nur eine CPU (die eine von Intel) und auch nur ein Werkzeug (das eine von Microsoft)...
    Was haben die da unter http://www.speech.cs.cmu.edu/flite/ geschrieben:

    Completely in C (no C++ or Scheme) for portability, size and speed

    Sehr gut.



  • "Portability" ist was C++ angeht IMO auch nur ein Problem wenn man wirklich mit Plattformen klar kommen muss für die es keine "ordentlichen" Tools gibt, oder wo Speicher sehr knapp ist. Oder wenn man mit uralten Compilern arbeiten *muss*, aus welchem Grund auch immer.



  • Warum??? schrieb:

    Aber immer noch gibt es Leute, die lieber C nehmen. Haben die keine Ahnung von C++ oder woran liegt das?

    C ist sowas wie 'ne portable assemblersprache. für jede plattform gibt es c-compiler, deshalb sind ansi-c codes auch fast auf jedes system portierbar.
    ausserdem gibt es kaum leute die c++ voll beherrschen. C ist viel einfacher und man wird nicht dazu verleitet, unnütze komplexität in seine programme einzubauen.
    die "C-denke" ist, im gegensatz zu C++, sehr maschinennah, was dazu beiträgt schnellen und schlanken code zu programmieren. ausserdem sind c++ programme teilweise sehr unleserlich. ein audruck a<<b ist in C eindeutig. in c++ kann es alles erdenkliche bedeuten.
    🙂





  • fricky schrieb:

    by the way: http://nothings.org/computer/cpp.html
    🙂

    lol. Ist zwar ziemliches Geweine an Kleinig- oder Nichtigkeiten, aber im Prinzip stimme ich dem sogar zu. 😃

    C++ finde ich auch viel zu kompliziert. Wenn man C und C# zur Verfügung hat, kann man glücklich sein. :schland:



  • zusag0r schrieb:

    C++ finde ich auch viel zu kompliziert. Wenn man C und C# zur Verfügung hat, kann man glücklich sein.

    oder c und z.b. python c++ braucht man nicht wirklich. ist halt nur ein lustiges spielzeug für freaks.
    🙂



  • fricky schrieb:

    ausserdem gibt es kaum leute die c++ voll beherrschen.

    Am schlimmsten ist mit den Leuten, die sich für Experten halten, ohne jemals ein Buch in die Hand genommen zu haben.

    C ist viel einfacher und man wird nicht dazu verleitet, unnütze komplexität in seine programme einzubauen.

    Lustig, wenn man bedenkt, dass das Motto: "vertraue dem Programmierer" eigentlich am ehesten C zugeschrieben wird. Was denn nun?

    die "C-denke" ist, im gegensatz zu C++, sehr maschinennah, was dazu beiträgt schnellen und schlanken code zu programmieren.

    FUD. C ist nicht näher dran an der Hardware als C++ es ist.

    ausserdem sind c++ programme teilweise sehr unleserlich.

    Stimmt. gilt auch für C-Programme.

    C++ ist eine komplexe Sprache. Natürlich ist sie schwerer in Gänze zu erlernen als C. Umgekehrt ist die C-Untermenge von C++ weitaus einfacher zu erlernen als C selbst.



  • willy schrieb:

    sothis_ schrieb:

    nicht c++ ist widerspenstig, was portabilität angeht sind es die compiler 🙂

    was portabilität angeht sind es die betriebssysteme! eins würde reichen, mehrere erzeugen sprachmonster! ⚠

    Daher gibt's ja ISO 9945



  • Ihr sprecht mir aus der Seele ...



  • Weil UNIX ja das beste ist, was man machen kann...
    alles ist eine Datei ist so 70er-Jahre mäßig



  • quarkmischer schrieb:

    Weil UNIX ja das beste ist, was man machen kann...
    alles ist eine Datei ist so 70er-Jahre mäßig

    Ich schaue gerade Fuschpall und versuche das zu verstehen ... ähem ...

    ?



  • willy schrieb:

    sothis_ schrieb:

    nicht c++ ist widerspenstig, was portabilität angeht sind es die compiler 🙂

    was portabilität angeht sind es die betriebssysteme! eins würde reichen, mehrere erzeugen sprachmonster! ⚠

    Wenn jedes System ca, gleiche Marktdominanz haette, dann wuerde sich die Frage "Fuer welches System ist Program X geschrieben?" gar nicht stellen. Man wuerde einfach in den Mediamarkt reinspazieren, blind irgend eine Software oder Hardware kaufen und waere sich zu 100% sicher das es unter deinem *BSD oder Solaris genauso laufen wuerde wie in Linux oder Windows.



  • camper schrieb:

    die "C-denke" ist, im gegensatz zu C++, sehr maschinennah, was dazu beiträgt schnellen und schlanken code zu programmieren.

    FUD. C ist nicht näher dran an der Hardware als C++ es ist.

    ja schon, aber C und C++ coder gehen an aufgaben anders heran. lass mal eine menge C und C++ programmierer mit gleichem wissensstand das gleiche programm schreiben, z.b. einen kleinen hexeditor oder sowas. ich wette, die produkte der C-programmierer werden im schnitt sparsamer mit resourcen umgehen, kleiner und schneller sein.

    camper schrieb:

    ausserdem sind c++ programme teilweise sehr unleserlich.

    Stimmt. gilt auch für C-Programme.

    ach nö. in C muss man sich schon richtig mühe geben, unleserlichen code zu schreiben. mit C++ syntax passiert das fast wie von selbst: http://www.fefe.de/c++/c++-talk.pdf

    camper schrieb:

    Umgekehrt ist die C-Untermenge von C++ weitaus einfacher zu erlernen als C selbst.

    wie das?
    🙂



  • unleserlicher code ist mit c++ ja nichtmal das schlimmste. viel schlimmer ist, dass selbst gut lesbarer code eine völlig andere bedeutung haben kann, als man auf den ersten blick vermutet. wenn man ein stück code nicht versteht, guckt man genauer nach. aber wenn ein stück code auf den ersten blick völlig simpel und eindeutig erscheint, forscht man sehr wahrscheinlich nicht weiter nach und fällt sehr schnell auf die nase.

    operatorüberladung und templates sind böse :p



  • fricky schrieb:

    camper schrieb:

    die "C-denke" ist, im gegensatz zu C++, sehr maschinennah, was dazu beiträgt schnellen und schlanken code zu programmieren.

    FUD. C ist nicht näher dran an der Hardware als C++ es ist.

    ja schon, aber C und C++ coder gehen an aufgaben anders heran.

    Was gar nicht das Thema ist.
    Natürlich klar, dass dir nur ums Trollen geht, wie sich auch in den restlichen Pesudoargumenten zeigt.

    fricky schrieb:

    lass mal eine menge C und C++ programmierer mit gleichem wissensstand das gleiche programm schreiben, z.b. einen kleinen hexeditor oder sowas. ich wette, die produkte der C-programmierer werden im schnitt sparsamer mit resourcen umgehen, kleiner und schneller sein.

    Du kannst gerne soviel wetten wie du willst, was dein Wetten aber mit der C oder C++ zu tun haben soll, entzieht sich meinem Verständnis. Zudem interessiert mich schon, was du als "gleichen Wissenstand" in verschiedenen Sprachen ansehen würdest (nein, nicht wirklich). Offensichtlich ist der Wissensstand bei dir ja nicht gleichmäßig in beiden Sprachen ausgeprägt.



  • camper schrieb:

    Offensichtlich ist der Wissensstand bei dir ja nicht gleichmäßig in beiden Sprachen ausgeprägt.

    das stimmt schon. aber was mit mir ist, hat doch keine bedeutung für diesen thread hier. sag lieber mal, wieso du glaubts, dass die C-untermenge innerhalb von c++ leichter zu lernen sein soll, als C selber.
    🙂


Anmelden zum Antworten