Login
Newsletter
Werbung

Thema: »D« hält Einzug in GCC

24 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
mehr D
1
Von XYZ am Fr, 23. Juni 2017 um 11:36 #

... in 2-5 Jahren lesen wir die Headlines: "D wird von GCC fallengelassen" ...

D steht für Dead!

[
| Versenden | Drucken ]
1
Von hhhhhgfr am Fr, 23. Juni 2017 um 12:17 #

Wer braucht so etwas? Mehr als ein neuer Polyglott Rekord ist nicht dein. Neues bietet es nicht, besser ist es auch nicht.. Hauptsache mehr Entropie.

Heute kann C++ genau so bequem programmiert werden wie Java. Mit dem Unterschied, dass es schnell ist. Java und C++ haben wenigstens Millionen an externen libraries, so dass ein guter Programmierer fast nur noch Recycling betreibt. Hier wird man immer wieder das Rad neu erfinden müssen...

[
| Versenden | Drucken ]
  • 0
    Von Verflucht am Fr, 23. Juni 2017 um 17:50 #

    Google mal das Wort "bindings" du Trot.. ähm Troll

    [
    | Versenden | Drucken ]
    0
    Von IGNUcius am Fr, 23. Juni 2017 um 23:06 #

    ....so bequem ... wie Java. LOL!

    FTFY:
    ...mit dem Unterschied, dass es einfacher ist, Bugs zu produzieren und unsicheren und unwartbaren Code zu schreiben.

    [
    | Versenden | Drucken ]
    • 0
      Von gustl am Sa, 24. Juni 2017 um 14:05 #

      Kommt sehr auf die Libraries an die man verwendet, und natürlich auf die Disziplin beim Stil.

      Linux z.B. wird in C geschrieben und ist wahrscheinlich einer der der am besten wartbaren Codes die es gibt. Dabei wird sogar GOTO verwendet, das ach so furchtbare Spaghettimonster.

      Ich habe selbst schon schönen Code in C++ geschrieben, aber natürlich auch echt grottiges in C++, Python und TurboPascal.

      [
      | Versenden | Drucken ]
      • 0
        Von tvn am Sa, 24. Juni 2017 um 20:39 #

        Ich höre und lese immer von C++ Entwicklern, dass modernes C++ super cool, bequem und sicher ist. Ich hatte drei Ansätze C++ zu lernen und das was ich geschrieben habe wurde mir jedesmal vom erfahrenen C++ Programmierern auseinander genommen.

        * Du sollst keine C Bibliotheken direkt in C++ laden
        * Das aus C++ sollte man nicht benutzen
        * Jenes hat man noch in C++03 so gemacht sollte man aber echt nicht machen weil es einem schnell um die Ohren fliegt.
        * Speichermanagement ist soo einfach unter modernem C++

        Ich habe nach den Tutorials gelernt die mir zur Verfügung gestellt wurden und alles was ich gelernt hatte war: Ich habe nur Bullshit gelernt. Was ich nie bekommen habe war: Das ist ne super Quelle um C++ zu lernen und da lernst du auch keine antiquierten Methoden von denen heute abgeraten wird.

        Ich glaube C++ Programmierern wenn sie sagen, dass man cool schreiben kann wenn man sich der modernen Varianten nimmt. Persönlich habe ich aber nur Demotivation statt Motivation und Kritik statt bessere Quellen erhalten. Das macht die Sprache meines Erachtens zum einen sehr komplex und damit (und zusätzlich) gefährlich. Und genau hier sehe ich eine gute Lücke allgemein für neue Sprachen: Fehler von (scheinbar) altem C++ beheben und ohne alten Ballast neu beginnen. Der Rest unterliegt den Gesetzten der Evolution und da können wir imho nur abwarten.

        [
        | Versenden | Drucken ]
        • 0
          Von asdasdsadas am So, 25. Juni 2017 um 00:35 #

          Im Moment ist es wirklich so, dass hauptsächlich Autisten und irgendwelche Asperger Typen C++ richtig gut beherrschen. Sie sind extrem unfreundlich. Vor allem das oben zitierte c-plusplus.net

          Wer solche Hentai Neckbeard Typen live erlebt hat, weiß dass da nichts mehr hilft.

          Das hat leider mehrere Nachteile. Diese Meute bläst sich in ihren Kellern derartig auf, dass sie sich zum einen jeglicher Innovation verschließen. Das wiederum ist der Grund weshalb Java kam. Selbst heute gibt es keine grundlegenden Funktionen wie string.toLower() oder string.toUpper(). string.to_string() hat ebenfalls eine Ewigkeit gedauert.

          In Sachen Web, der wichtigsten Technologie überhaupt, hat C++ dank solcher Typen total versagt. Java einholen wird sehr sehr sehr sehr schwer. Zu viele Grundfunktionen fehlen. Vorschläge sie in den Standard aufzunehmen, werden regelmäßig verneint. Von GUI möchte ich ebenfalls schweigen.

          Das ist auch ein Grund weshalb diese Trottel in modernen Projekten wie Android nichts zu melden haben. Sonst müssten Nutzer in Android wie in anderen 100000 Distris immer noch in der Konsole frickeln. Deshalb werden Programme wie MATLAB, Office, Visual Studio und co auch für mehrere 10T € massenweise verkauft, obwohl es freie Alternativen gibt.

          C++ hat viele Probleme, aber meist nicht die, die hier in den Foren von unbedarften Nutzern, die nie professionell C++ programmiert haben, genannt werden. Auch nicht die, die mit solchen Pipi-Programmiersprachen wie Go, D, Swift, Objective C oder Rust verbessert werden sollten.

          [
          | Versenden | Drucken ]
          0
          Von asdasdsadas am So, 25. Juni 2017 um 00:55 #

          Hier ein paar Tipps:

          Lies die neueren Scott Meyers Bücher.

          Versuche eine Aufgabe mit den simpelsten Konstrukten zu lösen, die sich sehr einfach lesen lassen. Einfache Lesbarkeit und Interpretierbarkeit ist die beste Hilfe gegen Bugs.

          Verwende keinen Befehl den du nicht vollständig verstehst, auch wenn es cool aussieht. Es gibt sicher eine simplere Lösung. Dem Compiler ist es meist egal, er erzeugt dann ohnehin nahezu denselben Code. Ob std::vector oder double *. Du wist aber weniger Probleme mit deinem Programm haben. Auch ist es besser etwas langsamer zu sein als einen Absturz zu riskieren.

          Nutze einen einheitlichen Stil mit vielen Leerzeichen um eine zu hohe Informationsdichte zu vermeiden. Wir progrmamieren nicht mehr auf Lochkarten, wir müssen auch nicht ein 80 spalten Limit einhalten. Hört auf euren Code zusammenzuquetschen.

          Vermeide Voraus-Optimierungen.

          Vermeide Klassen, Vererbung, Templates und andere Konstrukte solange sie keinen konkreten Nutzen haben. Ja, das gilt auch für C++

          Vermeide Pointer als Agrumente einer Funktion oder Rückgabewert

          Vermeide Speicherverwaltung, Nutze die Standard(Smart) Pointer.

          Vermeide char * nutze std::string(wstring)

          vermeide arrays * nutze vector, std::array

          vermeide for( int i = 0 ; i < x ; i++ ) nutze for( const auto i & : container ).

          Lass die geschweiften Klammern bei for Schleifen nicht weg, auch wenn danach auch nur ein Befehl kommt.

          vermeide typedefs nutze using

          vermeide präprozessor (außer #pragma once)

          vermeide goto

          Vermeide xprintf

          Vermeide memset

          Vermeide Stack Overflow

          Vermeide es C mit C++ zu mischen. Beide haben verschiedene Ansätze um Aufgaben zu lösen. Viele Autoren verstehen es nicht.

          Wer dir etwas anderes erzählt, den meide auch als Gehilfen. Irgendwann wirst du es dann bereuen.

          [
          | Versenden | Drucken ]
          • 0
            Von UChef am So, 25. Juni 2017 um 10:24 #

            Vermeide Pointer als Agrumente einer Funktion oder Rückgabewert
            Du meinst Raw-Pointer‽ Für Smart-Pointer trifft das nämlich nicht zu... abgesehen davon sind Raw-Pointer als Parameter oder Rückgabewerte durchaus ok; man darf nur niemals ein API so schreiben, dass die Ownership damit übertragen wird! (Bei Runtime-Polymorphismus kommst Du nicht um Zeiger herum - da bleibt nur ein Rohzeiger)

            Ansonsten stimme ich weitestgehend zu!

            Wobei ich 80 Zeichen als Spaltenlimit immer noch anstrebe; bei 100 ist dann definitiv Schluss. Mehr passt nicht mehr auf meinen Monitor :)

            nutze std::string(wstring)
            Hm... nee, das löst keine Probleme, sondern verlagert sie nur: http://utf8everywhere.org/#windows

            Wer dir etwas anderes erzählt, den meide auch als Gehilfen. Irgendwann wirst du es dann bereuen.
            :D Sehr schön formuliert!

            [
            | Versenden | Drucken ]
          0
          Von UChef am So, 25. Juni 2017 um 10:46 #

          C++ ist ein komplexes Biest - vielleicht das komplexeste der heutzutage populären Sprachen (Scala liegt da imho noch auf Platz 2...) aber auf jeden Fall das biestigste :-D

          Wenn man nicht wirklich darauf angewiesen ist, würde ich Neulingen eher zu Rust raten, wenn es denn System nah und mit zero cost abstractions sein muss.

          Ansonsten bringt C++ imho keinen Mehrwert in irgend einem der von ihm unterstützten Paradigmen; weder das OOP ist bei C++ besonders doll, noch das funktionale, noch die Template-Magie - eher schwarze Magie :x (Turing vollständige Templates? WTF!)

          Insofern lernt man mehr fürs Leben, wenn man sich eine ausgezeichnete Sprache auf einem der wichtisgten Paradigmen aneignet. C++ glänzt nirgends so wirklich - außer bei der oben genannten Komplexität und Biestigkeit :x

          [
          | Versenden | Drucken ]
          • 0
            Von Ddsfs am So, 25. Juni 2017 um 14:19 #

            Turing vollständige Templates? WTF!
            Das wäre schon okay so, stünden Kosten und Nutzen nicht in so einem miesen Verhältnis und würde es nicht bessere Lösungen zur Metaprogrammierung geben.

            [
            | Versenden | Drucken ]
            • 0
              Von UChef am So, 25. Juni 2017 um 14:30 #

              Das wäre schon okay so,
              Öhem... eine Sprache, bei der nicht sicher ist, ob mein Compiler jemals terminiert empfinde ich schon als mindestens gewagt :huh:

              [
              | Versenden | Drucken ]
              • 0
                Von CPPBernd am So, 25. Juni 2017 um 18:44 #

                Öhem... eine Sprache, bei der nicht sicher ist, ob mein Compiler jemals terminiert empfinde ich schon als mindestens gewagt :huh:

                Kann man sehen/überwachen/auf X Rekursionstiefen beschränken -> Kein Problem. Zumal hinreichend mächtige Metaprogrammierung die man in manchen Fällen benötigt das nunmal so an sich hat.

                [
                | Versenden | Drucken ]
            0
            Von hhhjjjj am Mo, 26. Juni 2017 um 16:16 #

            Rust? Neulinge sollten keine unausgereifte Sprache nutzen, deren Bugs man nicht kennt. Jetzt kommt nicht mit blabla, dass Rust keine Fehler hat. Jede Sprache hat Fehler und Probleme. Bei manchen ist es halt mangels breiter Nutzung noch nicht bekannt.

            Außerdem sollten Neulinge auch keine breite Sprache nutzen, der an Library Basis mangelt. Dann müssen sie jeden kleinen Kram selbst entwickeln, den es in guten Sprachen schon lange gibt.

            Der letzte Punkt ist keine Sprache zu nutzen die nicht mindestens von mehreren riesigen Unternehmen gepflegt wird. Objective C stand und fiel mit Apple, Swift auch. Go fällt mit Google. Man reitet ein totes Pferd.

            Anfänger sollten eher Java oder C# lernen. C++ dann nur aus neueren Quellen und guten Autoren und nicht StackOverflow. Vielleicht Python aber dann wird es schon dünn.

            [
            | Versenden | Drucken ]
            • 0
              Von UChef am Di, 27. Juni 2017 um 15:30 #

              Wenn man nicht wirklich darauf angewiesen ist, würde ich Neulingen eher zu Rust raten, wenn es denn System nah und mit zero cost abstractions sein muss.
              Es ging um die hervorgehobene Einschränkung - da helfen C# und Java nicht weiter!

              Rust? Neulinge sollten keine unausgereifte Sprache nutzen, deren Bugs man nicht kennt.
              Rust ist über die 1.0 hinaus, gilt also als stabil! Und Bugs sind nichts absolutes, sondern immer im Fluss; das gilt für alte Sprachen wie C++ genauso wie für jüngere. Natürlich ist Rust noch relativ jung, aber die Konzepte sind sehr gut und es mangelt auch nicht an Bibliotheken. (Zumal man C basierte Sachen leicht einbinden kann)

              Der letzte Punkt ist keine Sprache zu nutzen die nicht mindestens von mehreren riesigen Unternehmen gepflegt wird. Objective C stand und fiel mit Apple, Swift auch. Go fällt mit Google. Man reitet ein totes Pferd.
              Besser die Sprache wird eben nicht durch Unternehmen gepflegt. Dank Sun-Übernahme von Oracle durchlebte Java 5 Jahre lang ein Moratorium, bevor es endlich mit Version 8 wieder näher an aktuelle Themen heran geführt wurde.

              Anfänger sollten gar keine so niedrig abstrahierende Sprache nutzen; es ging um Neuling bezogen auf die System nahe Programmierung!

              [
              | Versenden | Drucken ]
              • 0
                Von asdfszhjddd am Mi, 28. Juni 2017 um 11:37 #

                Nach 7 Jahren gibt es nur ein breit benutzes Projekt, dass Rust nur so nebenher nutzt. Das ist Firefox. Dem gegenüber stehen Milliarden (eine Zahl mit 9 Nullen) Zeilen, die in C/C++/Java geschrieben wurden. Das nenne ich ausgereift. Eine Versionsnummer hat nichts zu melden.

                Ich sehe du bist schwer in Rust verliebt und Liebe macht blind. Außerdem programmierst du nicht professionell, sonst würdest du weder Versionsnummern als Gütesiegel, noch irgendwelche Nischensprachen empfehlen. Leider ist es aber so, dass Jeder was zu melden hat. Dumm ist, wer sich von blinden führen lässt. Am Ende fällt er selbst ins Loch.

                Für alle anderen die es nicht sind, sollten ihre Ressourcen so einsetzen, dass sie auch langfristig investiert sind. Rust ist eine Totgeburt. Es wird genau so weitergehen wie gehabt. Java und JavaScript wird im Web dominieren. Alles andere ist durch C, C++ und C# vollständig abgedeckt. Vielleicht kommt wegen Apple noch Swift dazu. Der Rest bleibt wie MATLAB eine Nischensprache.

                [
                | Versenden | Drucken ]
                • 0
                  Von UChef am Mi, 28. Juni 2017 um 15:28 #

                  Was haben die Zeilen an Quellcode damit zu tun? Die sagen nichts, aber auch gar nichts über die Qualität einer Sprache oder deren Ausgereiftheit aus!

                  Ich widerspreche ja gar nicht darin, dass die von Dir genannten Sprachen C, C++ und Java sicherlich Rust in den allermeisten auf Zahlen reduzierbaren Merkmalen einen klaren Vorteil haben (die sind eben einfach *wesentlich* älter und damit länger verfügbar), aber deswegen ist Rust noch lange nicht unausgereift.

                  Natürlich programmiere ich professionell - dennoch muss ich doch nicht nur Mainstream empfehlen?

                  Und jemandem von C++ abzuraten, wenn es aus irgend welchen Gründen nicht notwendig ist, empfinde ich als Dienst an der Menschheit - damit habe ich hoffentlich Dein Niveau von oben herab steigend bezogen auf sozialen Umgang erreicht :x

                  [
                  | Versenden | Drucken ]
                0
                Von asdfszhjddd am Mi, 28. Juni 2017 um 11:39 #

                Nach 7 Jahren gibt es nur ein breit benutzes Projekt, dass Rust nur so nebenher nutzt. Das ist Firefox. Dem gegenüber stehen Milliarden (eine Zahl mit 9 Nullen) Zeilen, die in C/C++/Java geschrieben wurden. Das nenne ich ausgereift. Eine Versionsnummer hat nichts zu melden.

                Ich sehe du bist schwer in Rust verliebt und Liebe macht blind. Außerdem programmierst du nicht professionell, sonst würdest du weder Versionsnummern als Gütesiegel, noch irgendwelche Nischensprachen empfehlen. Leider ist es aber so, dass Jeder was zu melden hat. Dumm ist, wer sich von blinden führen lässt. Am Ende fällt er selbst ins Loch.

                Für alle anderen die es nicht sind, sollten ihre Ressourcen so einsetzen, dass sie auch langfristig investiert sind. Rust ist eine Totgeburt. Es wird genau so weitergehen wie gehabt. Java und JavaScript wird im Web dominieren. Alles andere ist durch C, C++ und C# vollständig abgedeckt. Vielleicht kommt wegen Apple noch Swift dazu. Der Rest bleibt wie MATLAB eine Nischensprache.

                [
                | Versenden | Drucken ]
      0
      Von asdasdsadas am So, 25. Juni 2017 um 00:16 #

      Kommt darauf an, aus welchen Büchern du lernst.

      Gute Bücher empfehlen typedefs, goto, delete, pointer, präprozessor, memset, xprintf und sonstigen memory kram nicht zu verwenden.

      Wenn du Schampel wie "C++ von A bis Z" liest, was leider sehr beliebt und immer wieder gut bewertet wird, dann dann gehörst du zu den Opfern schlechter Autoren.

      Das oben genannte Zeug und Vieles andere wird nur wegen der Kompatibilität erhalten. Meiner Meinung nach ist es ein Fehler. Auch im Produktivcode großer Firmen wie Apple findet sich solcher Schund auch heute noch. GOTO, off by one und Null Pointer sind gute Beispiele warum die neuen C++ Konstrukte eingeführt wurden. Heartbleed war nämlich so ein GOTO fa(il)l.

      Leider gibt es in Firmen oder n00b Foren wie Stack Overflow immer wieder 1337 h4x0r die diesen Schund noch produktiv verwenden und anderen als Beispiel dienen. Dann wird aus einer einfachen direkten Lösung ein mehrfach verschachteltes Template gebastelt, dass einen Webservice aufruft und irgendwo mehrfach ein bind2nd call hat.

      Lest mal stattdessen C++ Primer und Scott Meyers Bücher. Thinking C++ und Der C++ Programmierer sind auch gute Alternativen.

      Ein gutes Forum ist:
      https://www.c-plusplus.net/forum/f15

      Die Leute (mods) sind zwar extrem unfreundlich und teilweise autistisch. Die Codequalität ist dagegen super.

      [
      | Versenden | Drucken ]
    0
    Von CPPBernd am So, 25. Juni 2017 um 14:00 #

    Tatsächlich kann man in D C und auch die meisten C++ Bibliotheken ohne weiteres weiterverwenden, weil die D Leute sich tatsächlich die Mühe gemacht haben, alle relevanten C++ ABI-Versionen zu unterstützten. Das funktioniert also noch besser als es in C++ selbst der Fall wäre, wo man eine kompatible Compilerversion bräuchte.

    Überhaupt sind D und Java C++ meilenweit voraus, was das Einbinden von Bibliotheken und Kompilieren angeht.

    Nicht, dass D als Sprache so viel besser wäre, dass sich alleine deshalb der Umstieg lohnen würde. Dass man z.B. von Templates zu etwas besseren Templates und nicht gleich zu vollständiger Compiletime Interpretation mit Möglichkeiten den Syntaxbaum imperativ zu manipulieren übergegangen ist ist etwas schwach.

    [
    | Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung