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



  • Finds ja toll, dass der GC angeblich optional ist. Nur hab ich noch nie jemanden gesehen, der D ohne GC verwendet. Ein Beispiel, wie das dann aussieht, waere also angebracht.



  • Wie kann Compilezeit-Regex missverständlich sein?

    http://dlang.org/regular-expression.html

    string phone = "+31 650 903 7158";
    auto phoneReg = ctRegex!r"^\+([1-9][0-9]*) [0-9 ]*$";
    auto m = match(phone, phoneReg);
    

    wird zur Compilezeit umgewandelt zu

    string phone = "+31 650 903 7158";
    if (phone[0]!='+')
      return false; // doesn't match
    if (!('0'<=phone[1]&&phone[1]<='9'))
      return; // doesn't match
    for (int i=2; i<phone.size() && '0'<=phone[i]&&phone[i]<='9'; ++i)
       ;
    ...
    

    und ist dementsprechend genauso schnell wie wenn man das von hand gecoded hätte.

    @GC: Soweit ich weiss gibt es einen Compiler-Switch den GC auszustellen, aber dann geht die Standardbibliothek nicht mehr. Und der GC ist ein Witz, der gibt praktisch nichts mehr frei.



  • Ist bestimmt gut debugbar.



  • D sucks - sorry but it does 🕶



  • hreadv schrieb:

    Wie kann Compilezeit-Regex missverständlich sein?

    Ich war mir nicht sicher, ob ich dich richtig verstanden hatte.
    Nun, Compiletimecodegenerierung gibts in C++ via Templates.
    Der einzige Nachteil ist, dass der Compiler da scheinbar schnell an seine Grenzen kommt (oder mein Versuch ist zu schlecht :D).
    Sternchen, oder wie auch immer du nun heißt, wär das nicht was für dich?
    Konstanten String durchlaufen, nach Steuerzeichen Ausschau halten und rekursiv verknüpfen?



  • Sternchen, oder wie auch immer du nun heißt, wär das nicht was für dich?
    Konstanten String durchlaufen, nach Steuerzeichen Ausschau halten und rekursiv verknüpfen?

    Den Namen lasse ich nun zu Arcoth ändern, da das Sternchen allgemeines Unbehagen heraufbeschworen hat. 🙂

    Der Vorschlag ist nicht schlecht! Ja, ich bin ein TMP-Fan und die Aufgabe wäre nett.
    Also, worum genau geht es? Zeig mal ein Beispiel, wie es im Endeffekt aussehen sollte.



  • Fang doch mal mit einem

    constexpr char const expr[] = "a|b";
    assert(re<expr>.match("a"));
    assert(!re<expr>.match("c"));
    

    an und schau wieviel du umgesetzt bekommst.

    (kA ob das mit den Stringliteralen so per TMP funktioniert, kann ja auch ein



    • schrieb:

    Sternchen, oder wie auch immer du nun heißt, wär das nicht was für dich?
    Konstanten String durchlaufen, nach Steuerzeichen Ausschau halten und rekursiv verknüpfen?

    Den Namen lasse ich nun zu Arcoth ändern, da das Sternchen allgemeines Unbehagen heraufbeschworen hat. 🙂

    Der Vorschlag ist nicht schlecht! Ja, ich bin ein TMP-Fan und die Aufgabe wäre nett.
    Also, worum genau geht es? Zeig mal ein Beispiel, wie es im Endeffekt aussehen sollte.

    Hab mal schnell meinen Code umgeschrieben, dass man nicht meine Bibliothek verwenden muss:
    https://ideone.com/qXmBYB
    War grad dabei | zu implementieren, Compiler bricht aber immer bei der Kompilierung ab.



  • Bitte für den TMP-Spass einem neuen Thread aufmachen. Das hat mit D nur insofern etwas zu tun, als es beweist, dass C++ dafür nicht geeignet ist.

    Für String-Matching bitte KMP oder Boyer-More verwenden und das Lookup-Table zur Compilezeit generieren.



  • Hab mal schnell meinen Code umgeschrieben, dass man nicht meine Bibliothek verwenden muss:

    Der Code ist veraltet. Ich habe auch gerade das Repo aktualisiert. Keine Bugs! Nur einige Sachen ergänzt. Mache ich heute auch noch mehrere male. 🙂

    Compiler bricht aber immer bei der Kompilierung ab.

    Welcher Compiler? GCC 4.7.2? :p

    Ich sitze schon dran. Leider kenne ich Regex nicht... 🤡



    • schrieb:

    Compiler bricht aber immer bei der Kompilierung ab.

    Welcher Compiler? GCC 4.7.2? :p

    GCC 4.8.1 :p



  • Bist auf Windows?



  • Jup.



  • Linus Dorfwalds schrieb:

    D sucks - sorry but it does 🕶

    Quelle?



  • Nathan schrieb:

    Jup.

    Ouch.

    Bei mir klappt schon folgendes.

    template< typename Str >
    struct or_matcher
    {
    	using splitted = split_at<Str, Str::find('|'), false>;
    
    	template< typename Str2 >
    	struct matches :
    		std::integral_constant<bool,
    		                       find<type_list<get<splitted, 0>, get<splitted, 1>>, Str2 >::value != npos> {};
    };
    
    int main()
    {
    	using expr = STRING("a|b");
    
    	static_assert( or_matcher<expr>::matches<STRING("a")>::value , "" );
    	static_assert( !or_matcher<expr>::matches<STRING("foo")>::value , "" );
    }
    


  • Andrew Ahnensaum schrieb:

    Linus Dorfwalds schrieb:

    D sucks - sorry but it does 🕶

    Quelle?

    http://www.youtube.com/watch?v=Aa55RKWZxxI



  • Mein Grund gegen 😨

    Ich bin mit C und C++ voll und ganz zufrieden. Warum sollte ich also D verwenden?



  • Genau. C++ rockt!! Sorry but it does do!



  • Wer mit C und C++ zufrieden ist, ist sehr leicht zufriedenzustellen und damit auch mit D zufrieden.

    Bleibt ein letztes Argument: D kompiliert in einem Bruchteil der Zeit von C++.



  • yetanothertroll schrieb:

    Wer mit C und C++ zufrieden ist, ist sehr leicht zufriedenzustellen und damit auch mit D zufrieden.

    Bleibt ein letztes Argument: D kompiliert in einem Bruchteil der Zeit von C++.

    Troll!! 😡


Anmelden zum Antworten