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



  • Delphi, Pascal, VB, FORTRAN, ABAP, alle möglichen Script Sprachen



  • Kann mal jemand noch etwas zu Phobos/Tango sagen? Wenn man DMD installiert verfügt man doch nur über Phobos, was auch immer das sein soll.



  • finix schrieb:

    oder warum D für die Aufgaben für die derzeit C oder C++ herangezogen werden nicht (besser) geeignet ist?

    Ich habe keinen D-Compiler für mein Target. Sowas in der Art wurde aber schon mehrfach erwähnt. Auch in diesem Thread. Abgesehen von solchen Kleinigkeiten ist D natürlich genial.



  • Erhard Henkes schrieb:

    Kann mal jemand noch etwas zu Phobos/Tango sagen? Wenn man DMD installiert verfügt man doch nur über Phobos, was auch immer das sein soll.

    Phobos ist die mitgelieferte Standard lib. /dmd/src/phobos Kannst den Sourcecode ansehen. Seid dem Realease von der Einser entwickelt eine Gruppe von Leuten an Tango rum. Da diese einige Sachen ersetzt, wie Beispielsweise den Standard GC, ist die Libs miteinandere nicht kompatible. Tango ist inspiriert durch Boost. Obwohl diese nicht die Stdlib von C++ ersetzt *hust*.
    Da du allerdings die D2 benutzt, müsst du eh auf Tango verzichten, weil Tango nur für D1 entwickelt wird.

    Übrigens ist http://www.dsource.org/projects/ eine gute Anlaufstelle für D.

    http://www.digitalmars.com/d/1.0/phobos/phobos.html
    http://www.digitalmars.com/d/2.0/phobos/phobos.html



  • Der Unterschied zwischen der Einführung von D und der Einführung von C++ ist folgender: damalas gab es mit C-Syntax, richtig, nur C und C war nicht objektorientiert, allerdings wollte man auch dort gerne im Bereich wo es auf Performance ankommt OOP einsetzen (naja nicht alle aber manche), also ist C++ entstanden.
    Heute gibts in dem Bereich bereits eine OO Sprache mit C-Syntax, C++ und D bietet auch nichts neues in der Hinsicht. Es kommt mit ein paar minimalen sprachlichen Änderungen, aber keinen grundsätzlichen Änderungen des Programmierparadigmas daher.
    Bevor ich mir D anschaue, würde ich mir Objective C anschauen.

    D wird es schwer haben, denn es ist einfach nur eine weitere Sprache. Java hat sich beispielsweise durchgesetzt, weil Java C-Syntax bietet, objektorientiert ist und es so eine Sprache nicht bereits gegeben hat (mit Virtual Machine, GC, Möglichkeiten schnell zu entwickeln ohne auf eine Skriptsprache zu wechseln, Applets im Browser, usw. usf.).
    Wenn D nicht wirklich etwas innovatives bieten kann, dann wird es sich auch nicht durchsetzen.

    Ruby hat sich auch nur so schnell so stark durchsetzen können durch RubyOnRails, ohne ROR hätte es keinen (so) großen Anreiz gegeben auf Ruby zu wechslen.



  • Da diese einige Sachen ersetzt, wie Beispielsweise den Standard GC, ist die Libs miteinandere nicht kompatible. Tango ist inspiriert durch Boost. Obwohl diese nicht die Stdlib von C++ ersetzt *hust*. Da du allerdings die D2 benutzt, müsst du eh auf Tango verzichten, weil Tango nur für D1 entwickelt wird.

    Also entweder D2 mit Phobos oder D1 mit Tango und Phobos, richtig?
    Was ist denn das für eine sinnlose Spaltung? 🙄

    D wird es schwer haben, denn es ist einfach nur eine weitere Sprache. Java hat sich beispielsweise durchgesetzt, weil Java C-Syntax bietet, objektorientiert ist und es so eine Sprache nicht bereits gegeben hat (mit Virtual Machine, GC, Möglichkeiten schnell zu entwickeln ohne auf eine Skriptsprache zu wechseln, Applets im Browser, usw. usf.). Wenn D nicht wirklich etwas innovatives bieten kann, dann wird es sich auch nicht durchsetzen.

    Richtig, ohne Alleinstellungsmerkmal wird das nicht klappen. Bei C++ ist das Problem der Sprung von der Konsole zur GUI, also mindestens eine ImprovedConsole oder ein eigenes raffiniertes GUI - und zwar von Anfang an, damit jeder das gleiche verwendet - wären interessante Features.



  • Vor einem Jahr wurde beschlossen, dass Sie in eine Koexisten gehen wollen. ^^

    @D-Profi
    Du redet von Änderung des Programmierparadigmas. Was zur Hölle willst du Objective C?



  • yxcz schrieb:

    Delphi, Pascal, VB, FORTRAN, ABAP, alle möglichen Script Sprachen

    Das sind aber alles Tote oder sterbende Sprachen mit denen niemand mehr neu anfängt zu programmieren.

    D ist da anders, das ist frisch und neu und im Wachstum.
    Pascal hat dagegen schon die besten Tage hinter sich und Fortan sowieso.



  • D-Profi schrieb:

    Bevor ich mir D anschaue, würde ich mir Objective C anschauen.

    Wo liegen die Unterschiede zwischen Objective C und D?



  • Zeus schrieb:

    Vor einem Jahr wurde beschlossen, dass Sie in eine Koexisten gehen wollen. ^^

    @D-Profi
    Du redet von Änderung des Programmierparadigmas. Was zur Hölle willst du Objective C?

    Diese Frage kann ich dir nicht beantworten, zuerst will ich, dass du mir die Frage erneut stellst, diese mal jedoch auf Deutsch, bitte!
    Dann kann ich versuchen dir die Frage zu beantworten.



  • D-Profi schrieb:

    Ruby hat sich auch nur so schnell so stark durchsetzen können durch RubyOnRails, ohne ROR hätte es keinen (so) großen Anreiz gegeben auf Ruby zu wechslen.

    Stimmt leider, Features der Sprache sind nicht das wichtigste. Wie gesagt denke ich das Ruby weitaus bessere Features hat als Java, aber mit Java habe ich IDEs, Build-Tools, eine sehr ausfuehrliche Standard-Bibliothek, uvm. Das sind die Dinge die einem am Ende wirklich wichtig sind.

    Btw, haette man die Sprachfaetures in D nicht einfach in C++/C umsetzen koennen? Also man schreibt das Programm in D und dann wird der Code erst in C umgeschrieben und dann mit einem C-Compiler kompiliert? Ganz am Anfang von C++ wurde es ja auch erst in C transformiert.

    Das haette die Vorteile gehabt dass man a) schon sehr gute Compiler haette, b) der Code waehre zu 100% kompatibel zu C, c) man haette die Build-Werkzeuge von C verwenden koennen, usw.



  • D-Profi schrieb:

    Zeus schrieb:

    Vor einem Jahr wurde beschlossen, dass Sie in eine Koexisten gehen wollen. ^^

    @D-Profi
    Du redet von Änderung des Programmierparadigmas. Was zur Hölle willst du Objective C?

    Diese Frage kann ich dir nicht beantworten, zuerst will ich, dass du mir die Frage erneut stellst, diese mal jedoch auf Deutsch, bitte!
    Dann kann ich versuchen dir die Frage zu beantworten.

    Oh man, jedem DAU fällt auf, das in der Frage nur das Wort "mit" fehlt.

    Wenn du zwischen den Zeilen lesen könntest, dann wäre dir das auch von selbst aufgefallen.

    Die Frage dürftest du mit diesem Hinweis jetzt also beantworten können,
    falls nicht, dann hätte ich eh meine bezweifel ob du so eine Frage kompetent beantworten könntest.



  • [quote="DEvent"]

    D-Profi schrieb:

    Btw, haette man die Sprachfaetures in D nicht einfach in C++/C umsetzen koennen?

    Dann hätte man C++ neu definieren und die Compiler entsprechend alle umschreiben müssen.

    D grenzt die Entstehung von Bufferoverflow by Design z.B. weitgehend ab, das hätte man dann auch mit C++ machen müssen.
    D ist keineswegs nur eine Erweiterung der STD.

    Also man schreibt das Programm in D und dann wird der Code erst in C umgeschrieben und dann mit einem C-Compiler kompiliert? Ganz am Anfang von C++ wurde es ja auch erst in C transformiert.

    Den C Code kann dann aber am Ende eh kein Mensch lesen, wenn der Computer das zusammenpfuscht.

    Außerdem gibt es ja den GNU GDC, der macht dir daraus Assemblercode im AT&T Style. Und den kannst du genauso gut wieder in C Code zurückverwandeln, nur besonders lesbar wird der nicht sein.



  • Siehe schrieb:

    D grenzt die Entstehung von Bufferoverflow by Design z.B. weitgehend ab, das hätte man dann auch mit C++ machen müssen.

    Gute Programmierer koennen das auch in C++.

    In der heutigen Welt gibt es keine Entschuldigung fuer Buffer Overflows oder SQL Injections und derartiges. Dass sie dennoch auftreten liegt an der Dummheit einiger Programmierer. Natuerlich versucht man jetzt alles Foolproof zu machen, aber im Endeffekt muss jeder Programmierer dennoch achtgeben. Denn eine OutOfBounds Exception ist genauso doof wie ein Buffer Overflow nur das Ergebnis ist nicht ganz so fatal.



  • Natürlich liegt es am Programmierer, ist vollkommen richtig. Aber es ist eine realitätsfremde Einstellung, zu meinen, die Programmierer sollen aufpassen oder kompetent sein und damit is es erledigt. Das es so nicht funktioniert kann man seit Jahren sehen.

    Trotzdem bin ich nicht der Meinung dass man eine neue Sprache braucht, um mit diesem Problem umzugehen. Eine neue Sprache braucht man, um ein paar Altlasten loszuwerden. Alles was bei C++ neu hinzukommt ist gut, aber was bleibt, nicht.



  • Optimizer schrieb:

    Das es so nicht funktioniert kann man seit Jahren sehen.

    Nur hilft da auch leider ein Java nicht. Man hat zwar dann keine Sicherheitsluecke aber die Anwendung schmiert trotzdem ab (oder ist in einem inkonsistenten Zustand)...

    Ich sehe halt einfach nur keine Loesung ausser automatische Hilfen anzubieten. Aber eben auch diese automatischen hilfen muessen sinnvoll benutzt werden. In Managed Code geht man eben soweit und sagt: wir verhindern automatisch sicherheitsluecken - das ist toll, aber es loest das Problem nicht.

    Wenn jemand weiss wie man solche Probleme verhindern kann, dann nur her damit. PHP hat zB probiert alle Usereingaben automatisch zu escapen um SQL Injections zu verhindern - aber alle Leute haben es immer deaktiviert. Und jetzt schaut man sich mal den Ruf von PHP an 😉

    Ne ne ne, ich habe leider noch kein foolproof System gesehen - deshalb finde ich foolproof argumente immer schwach - zumal ich nicht glaube dass D garantieren kann dass es keine overflows gibt.



  • Shade Of Mine schrieb:

    Gute Programmierer koennen das auch in C++.

    Kein Mensch ist fehlerfrei, du kannst 30 Jahre lang unfrallfrei Auto fahren und dann nach dieser zeit dann dennoch einen bauen und dabei auch noch der Verursacher sein, also tue mal nicht so, daß Bufferoverflows bei C++ kein Problem seihen.

    Wenn Programmierer so gut wären, dann hätte heutige Computer Software überhaupt keine Bugs, da Programmierer wie man deiner Aussage entnehmen kann, ja keine Fehler machen würden.

    In der heutigen Welt gibt es keine Entschuldigung fuer Buffer Overflows oder SQL Injections und derartiges.

    Und für Bugs in Software auch nicht!?
    Immer so ein dummes Geblubber. 🙄

    Dass sie dennoch auftreten liegt an der Dummheit einiger Programmierer.

    Stimmt, Programmierer haben ja unendlich viel Zeit, so daß sie gefälligst Fehlerfrei zu Programmieren haben.

    Natuerlich versucht man jetzt alles Foolproof zu machen, aber im Endeffekt muss jeder Programmierer dennoch achtgeben..

    Und warum willst du das fehlerfreie Programmieren dem Menschen überlassen, wenn es die Maschine + Mensch so viel besser kann?

    Ich nehme jedes Hilfmittel welche mir die Maschine geben kann, dankbar an und dazu gehört auch eine Programmiersprache die das Auftreten Bufferoverruns deutlich reduziert.



  • Optimizer schrieb:

    Natürlich liegt es am Programmierer, ist vollkommen richtig. Aber es ist eine realitätsfremde Einstellung, zu meinen, die Programmierer sollen aufpassen oder kompetent sein und damit is es erledigt. Das es so nicht funktioniert kann man seit Jahren sehen.

    Trotzdem bin ich nicht der Meinung dass man eine neue Sprache braucht, um mit diesem Problem umzugehen. Eine neue Sprache braucht man, um ein paar Altlasten loszuwerden. Alles was bei C++ neu hinzukommt ist gut, aber was bleibt, nicht.

    Dann wäre es Zeit mal C++ zu entschlacken und den alten Müll rauszuschmeißen.

    Nur will das dann niemand, weil ja dann jeder seinen Code umbauen müßte.
    Also ist es besser wenn man eine neue Sprache einführt.

    Wenn man so will ist D ein Branch von C welcher es versucht die Fehler im Branch C++ zu vermeiden.



  • Shade Of Mine schrieb:

    [
    Ne ne ne, ich habe leider noch kein foolproof System gesehen - deshalb finde ich foolproof argumente immer schwach - zumal ich nicht glaube dass D garantieren kann dass es keine overflows gibt.

    Wie schon gesagt, es reduziert sie deutlich im Vergleich zu C++.
    Und das ist auch etwas, wenn die Rate von potentiellen Bugs um 70 % abnimmt. (Die Zahl ist aus der Luft gegriffen)



  • D vs. C++ schrieb:

    Wie schon gesagt, es reduziert sie deutlich im Vergleich zu C++.
    Und das ist auch etwas, wenn die Rate von potentiellen Bugs um 70 % abnimmt. (Die Zahl ist aus der Luft gegriffen)

    nur dass die bugs nicht weniger werden sondern sich nur einfach nicht so vernichtend auswirken. weniger werden tun sie kein bisschen...


Anmelden zum Antworten