Gebt doch endlich mal richtige Gründe gegen die Sprache D an!



  • Kein Mensch will D.
    Und die, wo noch mit C rumgurken, warten lieber auf E. :p



  • Also versuchen wir es mal optimistisch und wohlwollend, wie sonst bei einer Innovation, die bereits seit fast 10 Jahren entwickelt wird und die die wenigsten Entwickler aus der Praxis kennen.

    D könnte C++ ablösen in der Spieleentwicklung?
    D könnte C ablösen in der µP-Programmierung?
    D könnte Java/C#/C++ ablösen in der GUI-Entwicklung?

    Bitte gib uns konkrete Links zu Ansätzen in diesen drei Bereichen, damit wir uns ein Bild machen können.

    Ansonsten suche ich immer noch eine vergleichende Übersichtstabelle zumindest zwischen C/C++/D/Java. Gibt es so etwas von den D-Entwicklern?



  • Eine 3d Engine wird auch schon in D programmiert und das Ergebnis kann sich sehen lassen.

    Die Screenshots sehen zumindest schonmal gut aus.

    Hmm... Bei nem Foto von nem Auto bekommst Du auch nicht heraus, wie es fährt.



  • asc schrieb:

    Nenn mir doch mal wirklich gute Gründe für D, die dessen Nachteile aufwiegen.

    ➡ Lazy Evaluation
    ➡ Mixins
    ➡ GC
    ➡ ...

    Und wenn du schon Kinderkrankheiten ansprichst, vergiss bitte nicht diese auch bei deiner Beurteilung des kommenden C++-Standards, der irgendwann, in einigen Jahren, implementiert sein wird, zu berücksichtigen...



  • Erhard Henkes schrieb:

    Ansonsten suche ich immer noch eine vergleichende Übersichtstabelle zumindest zwischen C/C++/D/Java. Gibt es so etwas von den D-Entwicklern?

    Selbstverständlich:
    http://www.digitalmars.com/d/2.0/comparison.html



  • muemmel schrieb:

    Hi,

    aus Sicherheitsgründen wäre eher Ada zu empfehlen.

    Gruß Mümmel

    Ada suckt im Vergleich zu D.

    Beweis hier:
    http://home.att.net/~jimmaureenrogers/AdaAdditionToDComparisonTable.htm



  • Konzeptionell ist D vermutlich in Ordnung, auch wenn manche andere Vorstellungen von der idealen Sprache haben. Für mich sind die Handhabbarkeit und die primären Anwendungsfelder wichtig, und da liegen entscheidende Schwachpunkte.

    Wie stellt man sich das eigentlich im Entwicklungsteam vor?
    Soll D die Sprachen C und C++ substituieren? Diese beiden Sprachen werden doch ebenfalls weiter entwickelt, können gleichzeitig aber auch auf einen gigantischen Fundus an Software zurück greifen, vor allem im GUI-, Netzwerk- und Mikroprozessorbereich.



  • Erhard Henkes schrieb:

    Wie stellt man sich das eigentlich im Entwicklungsteam vor?
    Soll D die Sprachen C und C++ substituieren? Diese beiden Sprachen werden doch ebenfalls weiter entwickelt, können gleichzeitig aber auch auf einen gigantischen Fundus an Software zurück greifen, vor allem im GUI-, Netzwerk- und Mikroprozessorbereich.

    Du kannst alle C Bibliotheken auch mit D nutzen.
    D ist dahingehend abwärtskompatibel.

    Natürlich hast du dann keine Kontrolle über Bufferoverflows und so Scherze, wenn die n der C Bibliothek stattfinden.



  • OK, mal ein konkreter und sehr einfacher Test:

    Das Programm zur Collatz-Folge:

    // Berechnung der "3n+1"-Folge (Collatz-Folge)
    #include <iostream>
    #include <limits>
    #include <string>
    #include "BigIntegerLibrary.h"
    
    using namespace std;
    
    void wait()
    {
      std::cin.clear();
      std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
      std::cin.get();
    }
    
    int main()
    {
      /*********************************************************** Eingabebereich ****************************/
      BigUnsigned element_limit(1000000) ;      // Maximum H(n)
      BigUnsigned element_print_limit(4103) ;    // Ausgabe nur, wenn H(n) > element_print_limit
    
      string s("10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");               // Beginn der Berechnung bei start
      BigUnsigned start = easyStringToBI(s);
    
      s = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000";                    // Ende der Berechnung bei end
      BigUnsigned end = easyStringToBI(s); 
      /*********************************************************** Eingabebereich ****************************/
    
      for( BigUnsigned j = start; j < end; j++ )
      {
           BigUnsigned zahl = j ;
           BigUnsigned    i = 1 ;
           while( ( zahl != BigUnsigned(1) ) && ( i <= element_limit ) )
           {
                //cout << zahl << '\t';
                BigUnsigned rest = zahl % BigUnsigned(2);
                if( rest != BigUnsigned(1) )
                    zahl /= BigUnsigned(2) ;
                else
                    zahl = BigUnsigned(3) * zahl + BigUnsigned(1) ;
                i++;
           }
    
           if( zahl == BigUnsigned(1) )
           {
                if( i > element_print_limit )
                {
                    cout << "Startzahl: " << j;
                    cout << "\tAnzahl: "  << i << endl;
                }
           }
           else
           {
               cout << "Startzahl: " << j; 
               cout << "kein Resultat (Anzahl-Limit erhoehen)" << endl;
           }
    
           if( i > element_limit ) cerr << "Anzahl zu hoch" << endl;
      }
    
      wait();
    }
    

    In C/C++ benötige ich dazu einen Compiler wie Code::Blocks oder MS Visual C++ und die Bibliothek (Header-/Implementationsdateien) "BigInteger" (kostenlos aus dem Internet, ausreichend Alternativen bezüglich Handhabbarkeit und Geschwindigkeit).

    Wie sieht das nun konkret bei D aus?

    Compiler gibt es bei Digital Mars? http://www.digitalmars.com/d/download.html
    Wie sieht es mit einer kompekten IDE aus? (von Integration in Code::Blocks habe ich gehört, aber heute bekommt man MS VC++ 2008 Express kostenlos!).
    Woher bekomme ich eine "BigInteger" Bibliothek?



  • Erhard Henkes schrieb:

    Woher bekomme ich eine "BigInteger" Bibliothek?

    Die Frage verstehe ich nicht.

    Warum benutzt du die BigInteger Lib nicht einfach mit D?



  • Ein (Verständnis-)Problem das ich bei D habe: Welches Problem löst D denn? Ich meine reale Probleme und nicht Syntaxsdiabetes.



  • Da kannst du vermutlich lange auf eine Antwort warten. Das wissen die D Verfechter nicht mal selbst. Solche Diskussion sind leider ideologisch motiviert und nicht wirklich sachdienlich.

    @D Fan
    Du hast ausserdem ein grundlegendes Problem. Es geht nicht darum, Gründe gegen D anzugeben. Obwohl es da schon reichlich gibt. Es geht darum, trifftige Gründe für D zu finden. Und bis auf Syntaxzucker gibt es da keine.



  • groovemaster schrieb:

    Da kannst du vermutlich lange auf eine Antwort warten. Das wissen die D Verfechter nicht mal selbst. Solche Diskussion sind leider ideologisch motiviert und nicht wirklich sachdienlich.

    Nein, das Problem liegt eher an folgendem:
    Die Antwort werden C/C++ Coder, die die Fallstricke von C/C++ nicht kennen wollen, eh nicht verstehen.

    @ Tim

    Du kannst mit D nichts kaputt programmieren.



  • greez schrieb:

    Die Antwort werden C/C++ Coder, die die Fallstricke von C/C++ nicht kennen wollen, eh nicht verstehen.

    Dass wir uns hier auf einem Niveau bewegen, wo dies irrelevant sein sollte, ist dir doch hoffentlich bewusst?



  • greez schrieb:

    @ Tim

    Du kannst mit D nichts kaputt programmieren.

    Also sind D Kompilate per Definition Bugfrei? You made my day. Echt jetzt 🤡



  • groovemaster schrieb:

    greez schrieb:

    Die Antwort werden C/C++ Coder, die die Fallstricke von C/C++ nicht kennen wollen, eh nicht verstehen.

    Dass wir uns hier auf einem Niveau bewegen, wo dies irrelevant sein sollte, ist dir doch hoffentlich bewusst?

    Auch ein erfahrener C++ Coder macht manchmal Fehler und muß danach vielleicht noch stundenlang den Fehler suchen.

    Hier ist eine Programmiersprache, die solche Schnitzer deutlich erschwert ein deutliches Hilfsmittel.



  • Warum benutzt du die BigInteger Lib nicht einfach mit D?

    Wie kann ich konkret C++-Klassen (verpackt in header und cpp) mit D mischen? Zeigen!



  • So einfach ist das nicht.

    Voraussetzung dafür ist, dass die Methoden der Klasse virtuell sein müssen. Meistens das K.O. Kriterium. Zweitens muss noch eine Funktion vorhanden sein, die das Objekt erzeugt. Allerdings sieht es nur D2.0 vor, welches noch Alpha ist.

    http://www.digitalmars.com/d/2.0/cpp_interface.html



  • Ja, wie geht's denn nun konkret? Obiges Beispiel. 😃
    Dann könnte ich konkret zwischen C++ und D vergleichen.



  • Quelle?


Anmelden zum Antworten