D vs. C++
-
Wie sieht eigentlich Exceptionhandling in D aus? Gibts da immer noch sowas wie "throw 1"? Oder gibts was ganz anderes als Exceptionhandling?
-
-
Und, wo steht da jetzt ob "throw 1" noch geht? Sieht so aus, also ob man immer irgendwas etwas Exception artiges wirft, aber steht nirgendas ob "throw 1" noch geht.
-
xcvbnm schrieb:
Und, wo steht da jetzt ob "throw 1" noch geht? Sieht so aus, also ob man immer irgendwas etwas Exception artiges wirft, aber steht nirgendas ob "throw 1" noch geht.
Wie irrelevant. Ich antwortete auf die Hauptfrage, ob es ein ganz anderes Exceptionhandlich gäbe. Dich interessiert throw 1 doch gar nicht.
Aber ok, dann halt
http://lmgtfy.com/?q=d+language+throw
Dann klicke auf den ersten Link.
Du landest auf
http://www.digitalmars.com/d/2.0/statement.html
Dann drücke Strg+f und gib "throw" (ohne die Aführungszeichen) ein.
Du landest bei einem Link auf
http://www.digitalmars.com/d/2.0/statement.html#ThrowStatement
Lies das.
"Expression is evaluated and must be a Throwable reference. The Throwable reference is thrown as an exception."
Verfahre ähnlich, um mehr über Throwable zu erfahren.
Du wirst feststellen, daß throw 1 nicht erlaubt ist.
Ich vermute, daß der Compiler es aber trotzdem frißt.Aber welches Problem hast Du mit throw 1 überhaupt? Warum das "noch" in der Frage. throw 1 ist doch gut.
Entscheide Dich, ob Du C++ oder Java machen willst. Falls Du Dich für Java entscheidest, nimm stattdessen C#. Falls Du Dich für C++ entscheidest, hör auf, das ist nichts für Dich. Nimm nicht D. Siehst ja bei Throwable, wie halbgar das ist.
Bin raus.
-
volkard schrieb:
Entscheide Dich, ob Du C++ oder Java machen willst. Falls Du Dich für Java entscheidest, nimm stattdessen C#. Falls Du Dich für C++ entscheidest, hör auf, das ist nichts für Dich. Nimm nicht D. Siehst ja bei Throwable, wie halbgar das ist.
Volkard schreibt zwar oft sehr seltsame und verschrobene Dinge, aber dieser Satz ist genial.
-
xcvbnm schrieb:
Was ist eigentlich an D besser als an C++?
Keine Ahnung. Das habe ich mich auch gefragt. Aber so richtig schlau bin ich aus D nicht geworden. Die Infos, die ich dazu im Netz fand, hatten mich nicht soweit überzeugt, dass ich es gern ausprobiert hätte oder mir ein entsprechendes Buch über D besorgt hätte. Es gibt sicherlich positive Dinge an D gegenüber C++. Aber es gibt auch vieles, wo ich denke "WTF?!". Vielleicht bringt Dir Alexandrescus Vortrag Three Cool Things About D - The Case for the D Programing Language etwas. Mich hat das aber auch nicht überzeugt.
-
xcvbnm schrieb:
Wie sieht eigentlich Exceptionhandling in D aus? Gibts da immer noch sowas wie "throw 1"? Oder gibts was ganz anderes als Exceptionhandling?
Ist das dann ein Qualitätsmerkmal, wenn in D "throw 1" nicht geht? Ich denke, wenn Du Dir D anschaust, wirst Du vieles finden, was damit nicht geht. Oder nimm Java. Da geht ganz vieles nicht. Das muss eine super Programmiersprache sein.
Die Philosophie von C++ ist, dass vieles geht. Es lässt Dir die Freiheit, es so zu tun, wie es für die jeweilige Situation am besten ist. Und wenn es mal ausnahmsweise ein "throw 1" ist, dann darfst Du das in C++ machen.
Ich liebe C++ genau deswegen, da es mir viele Möglichkeiten bietet, aber mir in besonderen Situationen keine Steine in den Weg legt.
Wenn Du deine Frage genau beantwortet haben willst, musst Du halt D lernen. Da führt kein Weg daran vorbei. Du kannst das nicht an einzelnen Konstrukten wie "throw 1" fest machen.
-
Ich fasse mal meine beobachteten Vor- und Nachteile von D zusammen:
Vorteile:
- Es ist ganz nett.Nachteile:
- Es ist ganz nett, aber das wars aber auch schon.MfG, der D-ganz-nett-finder
-
Soll D jetzt ein Ersatz für C++ oder Java sein?
-
twort schreiben schrieb:
Soll D jetzt ein Ersatz für C++ oder Java sein?
D ist der Ersatz für C, C/C++, C++, Java, Python, Ruby und Smalltalk.
http://www.d-programming-language.org/overview.html
-
tntnet schrieb:
Die Philosophie von C++ ist, dass vieles geht. Es lässt Dir die Freiheit, es so zu tun, wie es für die jeweilige Situation am besten ist. Und wenn es mal ausnahmsweise ein "throw 1" ist, dann darfst Du das in C++ machen.
Und C++ ist auch kompatibel zu ganz altem Zeugs, z.B. gibt es in C++ goto das man verwendwen kann wenn man will.
Und neben goto gibt es noch viele weitere Altlasten in C++ mit dem man sehr gut Kotzcode bauen kann, denn C++ griffelt einem da nicht dazwischen, C++ ist echte Freiheit, wie die Müllenstorgung in China, bei dem man seinen Chemiedreck einfach in den Fluß kippen kann. Echte Freiheit eben, ohne Regeln die stören könnten.D ist da eher wie Deutschland, bei dem alles sauber kontrolliert, spezifiziert und normiert ist und das bringt dann natürlich ganz schön viel Bürokratie beim Proggen mit sich. Doof ist das auch, weil dann dein Nachbar sich besser in den Code einarbeiten kann und somit dein Arbeitsplatz wegrationalisiert werden kann.
Denn Code den nur du verstehst, der schützt dich davor, gefeuert zu werden. Denn du bist dann für das Projekt zu wichtig, wenn du der einzigste bist, der den Code versteht.Von daher würde ich immer C++ nehmen, da habe ich echte Freiheit und kann machen was ich will.
-
twort schreiben schrieb:
Soll D jetzt ein Ersatz für C++ oder Java sein?
Nur D und C++ sind Sprachen der Systemprogrammierung. Java ist für letzteres nicht geeignet.
Und weder D noch C++ sind binärkompatibel auf verschiedenen Maschinen, es gibt keinen definierten Bytecode, insofern kann weder D noch C++ Java in diesem Bereich ersetzen.
-
Apfelbirne schrieb:
twort schreiben schrieb:
Soll D jetzt ein Ersatz für C++ oder Java sein?
Nur D und C++ sind Sprachen der Systemprogrammierung. Java ist für letzteres nicht geeignet.
Und weder D noch C++ sind binärkompatibel auf verschiedenen Maschinen, es gibt keinen definierten Bytecode, insofern kann weder D noch C++ Java in diesem Bereich ersetzen.
Alles Unsinn. Nur C ist eine Sprache der Systemprogrammierung. Bei allen anderen Sprachen redet man nur theoretisch davon. Es bleibt aber beim reden.
-
Olaf Alaf schrieb:
Apfelbirne schrieb:
twort schreiben schrieb:
Soll D jetzt ein Ersatz für C++ oder Java sein?
Nur D und C++ sind Sprachen der Systemprogrammierung. Java ist für letzteres nicht geeignet.
Und weder D noch C++ sind binärkompatibel auf verschiedenen Maschinen, es gibt keinen definierten Bytecode, insofern kann weder D noch C++ Java in diesem Bereich ersetzen.
Alles Unsinn. Nur C ist eine Sprache der Systemprogrammierung. Bei allen anderen Sprachen redet man nur theoretisch davon. Es bleibt aber beim reden.
Das ist kein Unsinn.
Informiere dich mal, für was eine Programmiersprache, die für die Systemprogrammierung geeignet sein soll, ausgezeichnet sein muß.
Und D erfüllt hier ALLE Kritierien zur Systemprogrammierung.Wenn du also behauptest, daß D für die Systemprogrammierung ungeeignet wäre, dann hast du schlichtweg keine Ahnung.
@ all
Ach ja und warum D gut ist, hier mal ein paar Beispiele:
http://3d.benjamin-thaut.de/?p=18#more-18
-
Apfelbirne schrieb:
Olaf Alaf schrieb:
Apfelbirne schrieb:
twort schreiben schrieb:
Soll D jetzt ein Ersatz für C++ oder Java sein?
Nur D und C++ sind Sprachen der Systemprogrammierung. Java ist für letzteres nicht geeignet.
Und weder D noch C++ sind binärkompatibel auf verschiedenen Maschinen, es gibt keinen definierten Bytecode, insofern kann weder D noch C++ Java in diesem Bereich ersetzen.
Alles Unsinn. Nur C ist eine Sprache der Systemprogrammierung. Bei allen anderen Sprachen redet man nur theoretisch davon. Es bleibt aber beim reden.
Das ist kein Unsinn.
Informiere dich mal, für was eine Programmiersprache, die für die Systemprogrammierung geeignet sein soll, ausgezeichnet sein muß.
Und D erfüllt hier ALLE Kritierien zur Systemprogrammierung.Genau das meine ich doch. Du redest hier von irgendwelche Kriterien, die theoretisch erfüllt werden müssen. Ich rede von der Praxis. Was interessiert mich das blabla, wenn es beim blabla bleibt? In der Praxis frickelt man eben in C. Und alles andere ist heutzutage höchstens ein Experiment, aber NOCH nichts ernstzunehmendes.
In dem Sinne noch: viel Spaß mit D.
D wäre eigentlich die perfekte Sprache! ... wenn es kein C, C++, Java, C# python, ruby, ... gäbe..
-
Olaf Alaf schrieb:
Genau das meine ich doch. Du redest hier von irgendwelche Kriterien, die theoretisch erfüllt werden müssen. Ich rede von der Praxis. Was interessiert mich das blabla, wenn es beim blabla bleibt?
Ob es für dein Softwareprojekt beim blabla bleibt, entscheidest ganz du allein als Entwickler.
Wenn ich D oder C++ als Systemprogrammiersprache nutzen möchte, dann mache ich das, denn ich KANN!
In der Praxis frickelt man eben in C.
DU frickelst in C, weil du dich nicht traust.
-
Olaf Alaf schrieb:
In der Praxis frickelt man eben in C. Und alles andere ist heutzutage höchstens ein Experiment, aber NOCH nichts ernstzunehmendes.
Hm, stimmt. Ich nehme mein Betriebssystem, meine IDE+Compiler, meinen Browser und das ganze Gedöns auch nicht wirklich ernst.
-
pumuckl schrieb:
Olaf Alaf schrieb:
In der Praxis frickelt man eben in C. Und alles andere ist heutzutage höchstens ein Experiment, aber NOCH nichts ernstzunehmendes.
Hm, stimmt. Ich nehme mein Betriebssystem, meine IDE+Compiler, meinen Browser und das ganze Gedöns auch nicht wirklich ernst.
Hättest du den Thread gelesen, wüsstest du, dass sich Olaf damit ausdrücklich auf Systemprogrammierung bezieht.
@Apfelbirne: Du verstehst nicht, es geht nicht darum, was "man" kann, sondern was "man" tut. Mit geeigneten Bibliotheken, Frameworks und Wrappern kann man seinen Mikrocontroller auch in Javascript programmieren, kein Problem. Nur wird in der Praxis de facto zu >99% C benutzt, da kannst du auf der Tauglichkeit von D oder Heldenmut herumreiten wie du willst.
-
C++ lässt sich mit einem geeignetem Subset genauso gut für Low-Level Programmierung nutzen. RTTI und Exceptions einfach nicht benutzen und am Anfang manuell Konstruktoren aufrufen. Mehr muss man nicht machen und man profitiert eigentlich nur noch von C++'s Extras.
Zu
Hab mir mal die Gegenüberstellung von C++ und D angeschaut und die "Verbesserungen" von D klingen größtenteils vollkommen blödsinnig. Größtenteils Sachen die C++ aus guten Gründen einfach nicht als Sprachfeatures sondern als Teil von Bibliotheken implementiert.
-
Ethon schrieb:
und am Anfang manuell Konstruktoren aufrufen.
Also bei meinem Mini-OS muss ich keine Konstruktoren manuell aufrufen. Wovon sprichst du?