Wieso gibt es keine gute Programmiersprache?



  • Linus Torvalds hat - quasi in einer one-man-show - sämtliche UNIX-Teams der global Player (IBM,HP,Sun...) brotlos gemacht und in der Praxis bewiesen, dass Kernelprogrammierung in C Hände gehört und nirgendwo anders hin.
    Nebenbei hat er auf Open-Source gesetzt in einer Zeit, in der noch kein IT-Manager das Wort kannte.
    Linus Torvalds hat in der Praxis bewiesen, dass ein Softwaremonolith nichts Schlechtes und auch in anschließenden Produktiv- und Wartungsphasen beherrschbar ist, und das auch neuerdings mit Git und nicht nur mit Linux.
    Die Praxis hat immer recht.
    Und die relevante Praxis (milliardenfache Installationen weltweit) nochmal mehr als ein Professoren-Elfenbeinturm:
    http://www.pro-linux.de/news/1/9696/tanenbaum-vs-torvalds-reloaded.html

    Warum hat denn Stroustrup (der später übrigens auch Professor geworden ist, im Gegensatz zu o.g. K.Thompson+Pike, die immerhin bei Google angeheuert haben) sein eigenes C++ nicht selbst zur Kernelprogrammierung eingesetzt wenn es dafür doch so phänomenal und unschlagbar geeignet ist?
    Die Voraussetzungen waren doch ideal:
    - er hat über Jahre in derselben Firma wie K&R gearbeitet
    - er hatte Zugriff auf den UNIX-Kernel von K&R usw.
    - er hatte den direkten Draht zu den Originalschöpfern
    Das kann ich dir sagen:
    Weil er keine Ahnung Praxis hatte/hat, er hat es ja noch nicht mal geschafft, eine Referenzimplementierung eines Compilers für sein C++ abzuliefern geschweige denn, mit diesem Compiler was Praxisrelevantes (milliardenfache Installationen weltweit) anzubieten.
    Die im Jahrestakt neu entstehenden C++-"Standards" sind nur der Beweis dafür, dass wirklich Praxisrelevantes von Stroustrup "vergessen" wurde; soviel zum Thema, was passiert, wenn sich ein Theoretiker eine neue Programmiersprache ausdenkt (das war, wie schon mehrfach von mir hier (in C-Forum) erwähnt, bei Ritchie anders).

    Fazit:
    Leute, die jetzt behaupten, mit dem jetzigen C++-Standard und irgendwelchen Boost- oder sonstwelchen Erweiterungen sei ein Kernel allgemein übersichtlicher,schneller,besser wartbar etc. zu implementieren sind einfach nur naiv und ignorieren die Leistungsfähigkeit von C in der Hand von Könnern.
    Wenn dem so wäre - bitte dann sollen sie es doch anhand zumindest eines praxisrelevanten Beispiels (milliardenfache Installationen weltweit) mal nachweisen, dass und wie man einen C++ Kernel schreibt.
    Ich bezweifle, dies in den nächsten Jahrzehnten von jemandem bewiesen zu bekommen.

    Wenn dir die Torvalds-Ausdruckweise nicht gefällt - nimm es hin - die Menschen sind nun mal (zum Glück!) verschieden.



  • Wutz schrieb:

    Linus Torvalds hat - quasi in einer one-man-show - sämtliche UNIX-Teams der global Player (IBM,HP,Sun...) brotlos gemacht und in der Praxis bewiesen, ...

    Ich weiss wer Linus Torvalds ist und was er geleistet hat.
    Das macht aber diesen speziellen Beitrag von ihm nicht automatisch zu einer qualifizierten Kritik - dafür hat er zu wenig Fleisch und ist zu schlecht begründet.
    Die einzigen konkreten Kritikpunkte die dort ansatzweise angerissen werden sind Exceptions und schlechte Implementierungen der Standardbibliothek -
    beides Dinge auf die man problemlos verzichten kann wenn es ein Projekt erfordert: Der LLVM-Code z.B. verwendet meines Wissens auch keine Exceptions
    und diverse Projekte wie z.B. einige Spiele-Engines verwenden gut begründet an performancekritischen Stellen eigene, spezialisierte Datenstrukturen, statt
    die aus der Standardbibliothek, deren Implementierungsqualität man nicht selbst kontrolliert.

    Beide Kritikpunkte lassen sich problemlos vermeiden, der Rest beschränkt sich auf "ist einfach scheisse". Da muss einfach mehr kommen - und ich bin wahrlich
    nicht jemand der sich gut begründeter Kritik verweigern würde oder sich nicht auch davon überzeugen ließe.

    Der Beitrag des Königs hat in diesem Fall leider keine Kleider.

    Finnegan



  • Bewerte den Inhalt nicht nach seinem Ausdruck.

    "Da muss mehr kommen" - Herr Torvalds muss überhaupt nichts - Herr Torvalds hat allen bewiesen, dass er sehr wohl weiß wovon er spricht.
    Wenn dir seine Ausführungen nicht detailreich genug sind - beachte, dass seine öffentlichen Äußerungen (ggü. anderen mediengeilen IT-Theoretikern +Managern) nur sehr spärlich gesät sind und er überhaupt keinen detailreichen Rechtfertigungszwang verspürt und hat - eben weil er genau weiß, wovon er spricht.

    Und hier sprechen wir über die Eignung von C++ als Kernel-Programmiersprache, und da ist Linus Torvalds eben die Instanz, die also keineswegs - wie hier angeklungen - ein alter und seniler Trottel ist, weil er eben in seiner eigenen "frischen Jungdynamikerzeit" (die hier ja auch schon gegen ihn ins Feld geführt wurde), sämtlichen Altvorderen das Wasser abgegraben hat, eben weil er gesagt (und getan) hat:

    - ich kann es besser als ihr alle zusammen
    - ich kann es alleine besser als ihr alle zusammen
    - ich kann es mit C besser als ihr alle zusammen
    - ich kann es besser als Professoren mit ihren Weissagungen

    Torvalds muss niemandem mehr etwas beweisen, auch dir nicht.



  • Wutz schrieb:

    Bewerte den Inhalt nicht nach seinem Ausdruck.

    "Da muss mehr kommen" - Herr Torvalds muss überhaupt nichts - Herr Torvalds hat allen bewiesen, dass er sehr wohl weiß wovon er spricht.

    Warum heiratest du denn Herrn Torvalds nicht endlich? Meine Güte...
    Du hast in diesem Forum schon mehrfach bewiesen, dass du keine Ahnung von C++ hast. Damit bist du automatisch disqualifiziert, C++ kritisieren zu können. Geh' wieder C spielen und erspare uns diesen vollkommen sinnlosen C-vs-C++ Flamewar. Ich sehe dich hier eigentlich auch nur in solchen Threads aktiv mitmachen, wo die Ehre von C verteidigt werden muss. Glaub' mir, weder dein ach so heiliger Herr Torvalds, noch die Sprache C haben deinen Beistand nötig. 🙄



  • Ich habe im Gegensatz zu dir hier vielfach qualifizierten, standardkonformen und somit superportablen C-Code gezeigt, von dir habe ich noch nicht eine qualifizierte Codezeile gesehen.
    Hör auf mit deinem Pubertärgeplärre wenn sich erwachsene C-Programmierer unterhalten.
    Halt einfach die Klappe und trolle dich dahin wo du herkamst.



  • Wutz schrieb:

    Ich habe im Gegensatz zu dir hier vielfach qualifizierten, standardkonformen und somit superportablen C-Code gezeigt, von dir habe ich noch nicht eine qualifizierte Codezeile gesehen.

    Superportabel? Wow! Es ist unglaublich schwierig, mit C portabel zu programmieren, wenn man bedenkt, wie schlecht die Sprache darauf ausgelegt wurde und wie wenige C-Compiler es für verschiedene Plattformen gibt! 🙄 Merkst du eigentlich, was du schreibst? Außerdem habe ich gesagt, dass du kein ausreichendes Wissen um C++ hast, um es kritisieren zu können, wie du beispielsweise ja hier (aber nicht nur dort) bereits bewiesen hast. Deine C-Kenntnisse sind dafür vollkommen unerheblich.

    Wutz schrieb:

    Hör auf mit deinem Pubertärgeplärre wenn sich erwachsene C-Programmierer unterhalten.

    Pubertär ist einzig deine trotzige Verteidigungshaltung ggü. C. Solches Verhalten beobachtet man in der Regel bei jungen Programmierern, die nicht viel mehr als eine Sprache können und für das Ei des Kolumbus halten, das sie verteidigen müssen.

    Wutz schrieb:

    Halt einfach die Klappe und trolle dich dahin wo du herkamst.

    Wenn es dicht stört, kannst du jederzeit die Debatte verlassen. Es kam von dir sowieso nichts Konstruktives mehr.



  • Eine gute Programmiersprache wäre doch, wo ich im Klartext beschreibe was mein Programm tun soll und der Compiler spuckt das fertige Programm aus 😃



  • HarteWare schrieb:

    Eine gute Programmiersprache wäre doch, wo ich im Klartext beschreibe was mein Programm tun soll und der Compiler spuckt das fertige Programm aus 😃

    Aber genau das tun doch alle gängigen Programmiersprachen? Oder meinst du mit "im Klartext", dass die Sprache keine eigene Grammatik hat, sondern sich der deutschen oder der englischen Grammatik bedient?



  • könnte mal bitte jemand ein Code Review machen:

    if(thread.title.match("(gute|schlechte|beste) Programmiersprache"))
    {
       flamewar_probability = 1.0f - geometric_distribution(thread.numberMessages);
    }
    


  • Wutz schrieb:

    Bewerte den Inhalt nicht nach seinem Ausdruck.

    "Da muss mehr kommen" - Herr Torvalds muss überhaupt nichts...

    Abgesehen davon dass ich nicht einmal auf seine fragwürdige Ausdrucksweise eingegangen bin, sagst du mir tatsächlich zuerst, ich soll den Beitrag nach
    seinem Inhalt bewerten, während du direkt im nächsten Satz implizit sagst, ich solle ihn eben nicht nach dem Inhalt, sondern nur nach Torvalds Person bewerten?

    Mir bleibt da echt die Spucke weg - eigentlich müsste da nichts weiter zu schreiben 🙄
    Ich weiss deinen Versuch zu würdigen, aber ich bin mittlerweile echt zu alt für so'n Scheiss. Such dir jemand anderes zum spielen.

    Schönen Tach noch, und viel Spass in diesem Thread!
    Finnegan


  • Mod

    Finnegan schrieb:

    Such dir jemand anderes zum spielen.

    Tatsächlich ist gerade Linux als Plattform zum Spielen nicht so der Hit. Man fragt sich, wieso?

    Bill Gates ist u.a. mit Basic groß geworden und mit programmiertechnischem "Leben und Leben lassen" (?)

    Basic war früher langsam, und so hatte man gerne auch Pascal, C und Assembler eingesetzt. Die hatten aber auch Compiler und Linker und Basic öfter nur den Interpreter. Aber Quick Basic (4.5) von Microsoft bot einen Compiler und so Assembleroptimierung und so gibt es heute eben auch QB64.
    Aktuelle Prozessoren/Compiler sind wohl eher C Optimiert.

    Was spricht jetzt (unterm Strich) für C?
    Der Sprachumfang ist klein. So ist C heute einfacher als Assembler, weil heute die Assemblerwelt viel komplexer geworden ist (1000 - 2000 Befehle, Prozessormodes, Betriebssysteminteraktionen, schlechte, nur teilweise und gar nicht Dokumentiertheiten usw.) und weil schon früher der Dialektwahn um sich gegriffen hatte. Der hatte sich auch bei Basic oder Lisp und anderen funktionalen Sprachen breitgemacht.
    Der 2. Punkt ist, C ist standardisiert. Viele Jahre dialektfrei. C++, Objective C, Java, Python, Lua und alle anderen sind C-Dialekt. Python ist C mit Interpreter und Anleihen bei (modernen) funktionalen Konzepten und bei Basic.

    C ist pragmatisch, praktisch aufgebaut, modular angelegt und auch funktional und bewährt schnell.

    Haskell ist dagegen hightech-wissenschaftlich (gut), fundiert theoretisch aufgebaut (interessant) und traditionell eher langsam (man wundert sich).
    Haskell ist (leider) linuxoid (c eher nicht, c ist eher die Basis für Unixe, Bashscripting, Perl).
    Wie bei Linuxen gibt es dann eben keine Spielereien. Wozu auch? Wozu überhaupt Haskell und nicht gleich den Backend-C - Compiler mit C benutzen?
    (Die Hardware ist u.a. durch Spielereien so stark geworden. Durch die starken Grafikkarten profitieren wissenschaftliche Berechnungen - indirekt von Spielerei)

    Eine "Prelude" (Haskell), die eher an das Bett des Procrustes erinnert ( http://quittenbaum-consult.de/das-bett-des-procrustes-erkennen-und-verandern-sie-ungesunde-rahmenbedingungen/ ) . 🙄
    Es überrascht, dass der ghci bei der Eingabe von Sonderzeichen nicht abstürzt.

    In der Basic-Welt gibt es eben viel zu Spielen, funktionierende Sonderzeichen, extrem performante Grafikkartentreiber, ordentliche Druckergebnisse und viele Programme (eine Unzahl), die völlig ohne Abhängigkeitenärger laufen.

    Linux selbst macht Anleihen in der Dos-/Basic-/Assemblerwelt (MC) oder auch in der Welt der Lisp-Maschinen (Emacs).
    Basic-Interpreter sind nirgends in der Linuxwelt vorinstalliert. Nur Ruby und Python. Andere Sprachen wie Haskell/Ghci natürlich (auch) nicht.

    Auf der Linux-Assembly - Bootdiskette( http://asm.sourceforge.net/asmutils.html ) nur Assemblertools zum Vorzeigen und konsolesurfen, nichts zum selber entwickeln (außer von außen bzw. wie mit cat allein entwickeln?).

    Das wirkt, wie ein Dogmatismus mit C. Dieser Dogmatismus führt teilweise zu Java, Sonderzeichenhorror, mager bis gar nicht laufende Hardware (Drucker, Grafikkarten und sonst) - auch absurde Vorurteile über Assembler - und zu einer Spielunfreundlichen OS-Plattform. Wer weiß, wohin das sonst noch führt.

    Turbopascal ging einen anderen Weg.



  • nachtfeuer schrieb:

    C++, Objective C, Java, Python, Lua und alle anderen sind C-Dialekt. Python ist C mit Interpreter und Anleihen bei (modernen) funktionalen Konzepten und bei Basic.

    Geh, Blödsinn.
    Bevor Python ein C Dialekt ist ist es noch ein LISP Dialekt.



  • dachschaden schrieb:

    Artchi schrieb:

    Aber um deine Frage zu beantworten: BeOS ist komplett in C++ programmiert.

    Woher nimmst du diese Information?

    Wikipedia schrieb:

    Closed Source
    ...
    The API was written in C++ [...]

    API != Kernel. Oder gehört der Kernel jetzt nicht mehr "komplett" zu BeOS?

    Guckst du Sourcecode, siehst du Kernel etc. in C++. Haiku-OS ist ein BeOS, 100% kompatibel und nachprogrammiert.
    Schaust du Kernel, Virtual Memory etc. Siehst du C++ mit Klassen, Vererbung usw.
    http://cgit.haiku-os.org/haiku/tree/src/system/kernel



  • @Artchi

    Ich selbst hab man vor lange Zeit wiedersprochen, dass der BeOS Kernel in C++ geschrieben ist, ich weiß auch dass ich dafür ne Quelle hatte, aber egal, kenne sie nicht mehr xD



  • @Wutz! Nichts gegen die Leistung von Linus Torvads per se. Aber du tust ja gerade mal so, als ob er Erfinder und erster Implementierer von Kernels und Betriebssystemen ist. LOL

    Ich weiß nicht wie alt oder jung du bist, aber du solltest wissen, das LT einfach nur versucht hat ein Unix nachzuprogrammieren. Nichts gegen diese Leistung an sich, aber man sollte auch nicht so tun, als ob er jetzt etwas revolutionäres erfunden hat. Er hat sehr gute Fleißarbeit geleistet und dadurch Know How erworben. 👍

    Aber vor ihm haben schon viele andere Menschen Betriebssysteme designt und implementiert. Das wird jetzt dein Weltbild zerstören... tut mir leid, ist aber die Wahrheit. 😃

    Jedenfalls weiß ich nicht, warum er als Prophet angesehen wird? Und ich ihm abkaufen soll, das C++ total ätzend und C geil sein soll. 🙄

    Haiku-OS ist jedenfalls der Beweis, das man ein OS in C++ implementieren kann. Probier es aus, es funktioniert erstaunlich gut und flott. (abgesehen von vielleicht fehlenden Hardware-Treibern, das hat aber mit C++ per se nichts zu tun).



  • Zeus schrieb:

    @Artchi

    Ich selbst hab man vor lange Zeit wiedersprochen, dass der BeOS Kernel in C++ geschrieben ist, ich weiß auch dass ich dafür ne Quelle hatte, aber egal, kenne sie nicht mehr xD

    Kann ja sein, das der BeOS-Kernel nicht in C++ implementiert wurde. Aber Haiku ist dann halt ein anderer BeOS-Kandidat... und der ist FLOSS. 🙂



  • nachtfeuer schrieb:
    C++, Objective C, Java, Python, Lua und alle anderen sind C-Dialekt. Python ist C mit Interpreter und Anleihen bei (modernen) funktionalen Konzepten und bei Basic.

    Geh, Blödsinn.
    Bevor Python ein C Dialekt ist ist es noch ein LISP Dialekt.

    Huch, mir lief es gerade eiskalt den Rücken herunter... 😃

    (setq defun 0)
    
    (defun HalloWelt( a / )
      (if (= a nil)
        1
        0
      )
      2
    )
    

    Ich hasse LISP! :p



  • hustbaer schrieb:

    Bevor Python ein C Dialekt ist ist es noch ein LISP Dialekt.

    um "Python" richtig auszusprechen, muß man lisp-eln. Ok.

    Ansonsten hat Python mit LISP nicht sehr viel gemein. Die eine ist eine dynamische Skriptsprache mit entfernt an C erinnernder Syntax und draufgeklatschtem Objektmodell, die andere eine listen-basierte Sprache mit Präfix-Notation und minimaler Syntax.



  • Ich hab eine zufällige cpp Datei im Haiku Kernel aufgemacht, scroll etwas runter und seh sowas:

    void *
    get_boot_item(const char *name, size_t *_size)
    {
    if (name == NULL || name[0] == '\0')
    return NULL;

    Das schaut für mich doch sehr nach C aus 😃

    Ansonsten ja, schaut auch so ein bisschen nach C++ aus.



  • @Bitte ein Bit & zufallswert
    http://www.norvig.com/python-lisp.html


Anmelden zum Antworten