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



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



  • Irgendwie dreht sich die Diskussion im Kreis. Welche Art von Programmen sollte man z.B. bevorzugt in D programmieren und aus welchem Grund?



  • Erhard Henkes schrieb:

    Irgendwie dreht sich die Diskussion im Kreis. Welche Art von Programmen sollte man z.B. bevorzugt in D programmieren und aus welchem Grund?

    Ganz klar "Systemprogrammierung". Diesen Platzhalter hört man im Zusammenhang mit D immer wieder. Aber bei der Verfügbarkeit an Compilern ist wenigstens eindeutig welches System gemeint ist 🤡



  • Shade Of Mine schrieb:

    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)...

    Das ist doch vergleichsweise harmlos. Du musst schon zugeben, wenn mir jemand mein Java-Programm zum Absturz bringt, bei etwas was normal ein buffer overflow gewesen wäre, dann ist das ein wesentlich besseres Ergebnis. Dann sehe ich sogar noch den stack trace und kann den Fehler relativ einfach beheben. Bei einem Server, der mir gehackt wurde und Amok läuft, wie soll ich da im Nachhinein herausfinden, wo das Problem war?

    Das ist einfach ein Punkt, wo solche "sicheren" Sprachen überlegen sind - nur noch der Chief Lead of irgendwas muss Ahnung von der Sache haben damit keine konzeptionellen Sicherheitslücken enstehen. Wenn ich eine Sprache wie C oder C++ verwende, reicht es aus das ein Programmierer von meinen hundert keine Ahnung hat und ich habe eine Sicherheitslücke drin - und garantiere mir mal, dass jeder in deinem Team nie solche Fehler machen würde...

    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.

    Wieso löst es das Problem nicht? Buffer overflows, uninitialisierte Variablen und ähnliche Kleinigkeiten sind hiermit ein gelöstes Problem. Viele Sachen finde ich schlechter gelöst, man muss natürlich seine Prioritäten kennen. Sicherheitsmäßig halte ich solche Sprachen jedenfalls für überlegen.



  • Wer Java und SWT liebt, der kann jetzt mit D und DWT GUI Anwendungen entwickeln.

    DWT ist nämlich ein Gui Widget für D und vom Programmieren her stark an SWT angelehnt.
    Das ist doch also mal etwas positives für D.

    http://www.dsource.org/projects/dwt

    Screenshots:
    http://www.dsource.org/projects/dwt/wiki/Screenshots



  • Wenn ich mir das so ansehe, habe ich das Gefühl, dass D ein typisches "me-too" Produkt ist. Damit kann man im professionellen Umfeld nicht punkten. Für den privaten Anwender zählt die Kompaktheit der Toolchain, die Flexibilität von der Konsole bis zum Spieledesign und ausreichend Unterstützung bei Problemfällen.

    Was ich bisher gesehen habe, ist für mich wenig attraktiv. Macht aber nichts, weil C/C++, Java oder C# bereits ausreichend Möglichkeiten und Unterstützung bieten.


Anmelden zum Antworten