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



  • Ich lach mich tot schrieb:

    Wie soll man eine Sprache beurteilen die man noch nie in der Praxis einsetzen konnte weil noch nicht einmal der Compiler etwas taugt?

    Das erkennt man doch schon an der Sprache selbst!

    In D ist z.B. garantiert das eine Konstante auch eine Konstante ist und auch bleibt.
    Bei C und C++ ist das nicht der Fall, da kann man mit Macros rumpfuschen und schon ist die schöne Konstante geschichte bzw. hat man den Buffer OVerflow.
    So etwas ist Dreck den D nicht hat!

    Und das Zitat kannst du dir schenken, in den C/C++-Compilern steckt Optimierungswissen aus vielen vielen Jahren und da soll der Compiler von D, der nur rudimentär implementiert wurde mithalten können? Das ich nicht lache..

    Die Optimierung des Compilers ist vernachlässigbar zur Entwicklungszeit.
    Und D hilft hier enorm, siehe obiges Beispiel bei der man dann nicht extra Fehler suchen muß, weil D weiß was Konstanten sind.

    Und in 3 Jahren, wenn deine Anwendung vollständig und fertig ist, compilierst du dann deinen gleichen Code einfach nochmal neu und hast eine performante
    Anwendung weil der Compiler der der Zwischenzeit deutlich optimiert wurde.

    Dieses ganze Geseiere gegen fehlende oder nicht Optimierte Compiler ist doch blödsinn, da es eh nur vorübergehend ist.

    Die Sprache interressiert derzeit keinen, da sie keine Relevanz hat. Sie ist eine Spielwiese nicht mehr und nicht weniger.
    Wenn es hart auf hart kommt wird keiner D einsetzen (derzeit).

    Wenn ich weiß, das die Entwicklung meiner Software eh erst in 3 oder 5 Jahren fertig ist, dann kann ich in aller Ruhe schon heute D einsetzen und später von den optimierten Compilern profitieren.

    Am Ende habe ich dabei Nerven und viel Zeit gespart, weil man mit D einfach viel weniger Fehlersuche machen muß wie bei C und C++ und weil D auch viel weniger Fallstricke bietet.
    Man kann sich also auf den Code und auf die Algorithmen konzentrieren und muß sich nicht mit Sprachproblemen abgeben.

    Und sei doch mal ehrlich, der richtige Alogithmus ist mehr Wert als der Falsche mit einem performanten Compiler.



  • Also konstanten -> String-Literale und so Zeug.



  • Aha und was war jetzt nochmal der Vorteil von D? Ich höre hier gerade die gleichen Argumente wie bei Java oder C# und sehe somit keinen Grund mit D rumzukrampfen wenn ich bei Java und C# bereits eine Top Toolchain habe.



  • Ich kann nicht mehr... schrieb:

    Aha und was war jetzt nochmal der Vorteil von D? Ich höre hier gerade die gleichen Argumente wie bei Java oder C# und sehe somit keinen Grund mit D rumzukrampfen wenn ich bei Java und C# bereits eine Top Toolchain habe.

    Du scheinst sehr dumm zu sein.

    In Java oder C# programmiert jedenfalls kein kommerzieller Spieleentwickler
    eine 3d Engine, mit D könntest du das machen, denn als Systemnahe Programmiersprache erlaubt sie dir die Performance die du dafür brauchst.

    Und lahme Compiler sind ja kein Argument, wenn die in Naher Zukunft Geschichte sind.



  • Mal ein Konstanten Problem bei C++ bzw. C in der Praxis:

    Wenn man ein konstantes Struct hat, das Zeiger enthält, dann
    "vererbt" sich das const nicht auf diese Zeiger.
    Und das heißt: ich kann das Struct so oft const machen, wie ich will,
    es wird trotzdem mutieren - nicht das struct selbst, aber die Daten,
    auf die es verweist.



  • Hi,

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

    Gruß Mümmel



  • Hi,

    was bringt die Sicherheit, daß ein const wirklich konstant ist?

    Der Compiler soll gegen versehentliche Fehler schützen. Nicht dagegen daß einer bewust falsch spielt. Wenn einer zum Beispiel das Const bewust wegcastet, dann wird er scho wissen warum. Aber C++ und C waren noch nie die Sprachen für den Dödel, sondern immer die Sprachen für den wissenden Entwickler.
    Vor lauter Fangnetzen kann man sich auch in denen verfangen.

    Gruß Mümmel



  • D Fan schrieb:

    Ich kann nicht mehr... schrieb:

    Aha und was war jetzt nochmal der Vorteil von D? Ich höre hier gerade die gleichen Argumente wie bei Java oder C# und sehe somit keinen Grund mit D rumzukrampfen wenn ich bei Java und C# bereits eine Top Toolchain habe.

    Du scheinst sehr dumm zu sein.

    In Java oder C# programmiert jedenfalls kein kommerzieller Spieleentwickler
    eine 3d Engine, mit D könntest du das machen, denn als Systemnahe Programmiersprache erlaubt sie dir die Performance die du dafür brauchst.

    Und lahme Compiler sind ja kein Argument, wenn die in Naher Zukunft Geschichte sind.

    Wenn einem die Argumente ausgehen fängt man halt an beleidigend zu werden...

    Welcher kommerzielle Spieleentwickler entwickelt seine Engine denn in 3D?

    Also ich kenne genügend 3D Spiele die auf Java setzen, du scheinbar nicht...



  • Ich lieg aufm Boden... schrieb:

    D Fan schrieb:

    Ich kann nicht mehr... schrieb:

    Aha und was war jetzt nochmal der Vorteil von D? Ich höre hier gerade die gleichen Argumente wie bei Java oder C# und sehe somit keinen Grund mit D rumzukrampfen wenn ich bei Java und C# bereits eine Top Toolchain habe.

    Du scheinst sehr dumm zu sein.

    In Java oder C# programmiert jedenfalls kein kommerzieller Spieleentwickler
    eine 3d Engine, mit D könntest du das machen, denn als Systemnahe Programmiersprache erlaubt sie dir die Performance die du dafür brauchst.

    Und lahme Compiler sind ja kein Argument, wenn die in Naher Zukunft Geschichte sind.

    Wenn einem die Argumente ausgehen fängt man halt an beleidigend zu werden...

    Welcher kommerzielle Spieleentwickler entwickelt seine Engine denn in 3D?

    Also ich kenne genügend 3D Spiele die auf Java setzen, du scheinbar nicht...

    kommerzielle versteht sich



  • D Fan schrieb:

    Eine 3d Engine wird auch schon in D programmiert und das Ergebnis kann sich sehen lassen.
    Die Screenshots sehen zumindest schonmal gut aus.

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

    Für mich muss eine Sprache in erster Linie erstmal ihre Aufgaben erfüllen. Dafür sind sinnvolle Tools unabdingbar. Ansonsten könnte ich genauso gut auch Assembler mit einen Texteditor schreiben. Ansonsten mag D schöne Ansätze haben (Ich habe bislang keine gefunden die mir gegenüber C++ positiv herausgestochen sind, und nicht durch den kommenden Standard abgedeckt wären - Ganz von den Kinderkrankheiten abgesehen).

    Und eine 3D-Engine ist jetzt nichts ausschlaggebendes (das gibt es für jede moderne Sprache).

    cu André



  • 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?


Anmelden zum Antworten