Login
Newsletter
Werbung

Thema: »D« hält Einzug in GCC

17 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
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 ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung