URL: https://www.overclockers.at/coding-stuff/nach_c_kommt_d_174254/page_1 - zur Vollversion wechseln!
Nach Jahren der Entwicklung hat nun Walter Bright die objektorientierte Programmiersprache D fertiggestellt. Die Version 1.0 ist sowohl von C++, C# und Java beeinflusst und soll dabei sämtliche Stärken in sich vereinen - ohne überflüssigen Ballast! Die fertige Version steht auf den Seiten von Digital Mars zum Download bereit; die ZIP-Datei hat Binaries für Windows und Linux inkludiert.
klingt sehr ansprechend
, aber die Seite ist anscheinend hoffnungslos überfordert oder einfach nur so down.
klingt gut. Vielleicht lern ich doch mal ne Programmiersprache 
Hm, ich hab jetzt nur einen Blick auf die Comparison Table geworfen und bin mir nicht sicher was ich davon halten soll.
Ich bin froh dass es einen potentiellen Ablöser für das in die Jahre gekommene C++ gibt.
Imho steigt und fällt die mögliche Marktdurchdringung auch mit der Qualität des GUI Designers. Da ist .Net um einiges voraus.
Für D gibts einen Port der SWT. Naja, ich weiss nicht. Ich mag die Java GUIs nicht so wirklich.
Performance ist natürlich ein absolutes plus, nähere Benchmarks wären gut. Daher wirds auch für die Spieleentwicklung vermutlich interessant, wo die Anzeige sowieso primär über OpenGL/DirectX stattfindet.
irgendwie bezweifle ich, dass sich das durchsetzen wird. heutzutage muss da imho schon eine große firma wie ms bei .net oder sun bei java im hintergrund sein.
Zitat von iCA-irgendwie bezweifle ich, dass sich das durchsetzen wird. heutzutage muss da imho schon eine große firma wie ms bei .net oder sun bei java im hintergrund sein.
Habe mir die Sprache jetzt ein bisschen angesehen. Fazit: Mir gefällt sie nicht und ich wüsste nicht, warum ich damit etwas schreiben wollte.
Einige Kritikpunkte:
- Der Präprozessor fällt zwar weg, dafür bleibt aber noch das gottverdammte typedef. Auch "type inference" und alias trägt nicht zur Lesbarkeit bei.
- Zu viele Schlüsselwörter, statt modernerer Techniken wie Annotationen. Beispiel: unittest Schlüsselwort statt z.B. [Test]-Annotation in C#.
- Kein OO-Ansatz: "Freie Funktionen", Standardrepräsentation von Strings ist ein char[] (C lässt grüßen).
- Außerdem frage ich mich, ob der GC hier besser funktioniert als in bisherigen Native-Umgebungen. Wurzelelemente (Register+Stacks) müssen laut der Webseite "gescannt" werden, ich nehme an, dass da wieder Zeiger erraten werden
So viel erstmal nach den ersten 15 Minuten.
Vielleicht hab ich auch einfach nur Angst, wieder was neues lernen zu müssen und seh deshalb so viele Kritikpunkte 
Was ich auch vermisse ist die Möglichkeit Reflections einzusetzen. Gehört find ich zu einer modernen OOPSprache. Man kanns zwar auch ziemlich hässlich einsetzen, aber wenn man sich bemüht ist der Umgang damit doch ziemlich elegant.
Zitat von gue- Der Präprozessor fällt zwar weg, dafür bleibt aber noch das gottverdammte typedef. Auch "type inference" und alias trägt nicht zur Lesbarkeit bei.
- Kein OO-Ansatz: "Freie Funktionen",
den präprozessor wegfallen lassen und wie in java static variablen definieren? nicht einmal wenn das 100% gleich vom compiler interpretiert werden würde, wäre das wünschenswert.
und was ist nochmal an header files so schlecht? in java sind meine klassen im komplett zugemüllt. einzig und allein die template header dll-grenzensache (wer das kennt weiss was ich mein) nervt, aber dafür kann c/c++ herzlich wenig.
Ganz einfach: Es ist nicht lesbar. Wenn irgendwo steht MeineSuperTolleJavaKlasse x = new MeineSuperTolleJavaKlasse(123); dann weiß ich genau, was da passiert. Wenn ich zuerst 5 typedefs in irgendwelchen Header-Files oder Dokus nachlesen muss, dann ist das nicht besonders praktisch, oder?Zitat von thatWas ist an typedef oder type inference schlecht?
Ähm... KEINE freien Funktionen?ZitatUnd was ist deine bevorzugte Alternative zu "freien Funktionen"?
Zitat von gueZitat von r4pt0R^-Inwieweit kann man die dpi bei der Habu umstellen?
air < A, B > > ::iterator ABPairIterator wird aus gutem Grund oft verwendet, und verständlich ists wohl, oder? Wenn ein Programmierer eine Instanz einer Rendererklasse nicht "renderer" sondern "apfelbaum" nennt, sind jetzt Objekte schlecht?ZitatNoch schlimmer wird das mit type inference: Viele Programmierer werden selbst nicht mehr wissen, welchen Typ sie da verwenden. "Ähm was liefert die Funktion noch mal zurück? Wurscht - auto x = func(); writeline(x);"
Zitat- Kein OO-Ansatz: "Freie Funktionen", Standardrepräsentation von Strings ist ein char[] (C lässt grüßen).
Zitat- Zu viele Schlüsselwörter, statt modernerer Techniken wie Annotationen. Beispiel: unittest Schlüsselwort statt z.B. [Test]-Annotation in C#.
Zitat von matZitat von gueZitat von r4pt0R^-Inwieweit kann man die dpi bei der Habu umstellen?
Zitat von gueGanz einfach: Es ist nicht lesbar. Wenn irgendwo steht MeineSuperTolleJavaKlasse x = new MeineSuperTolleJavaKlasse(123); dann weiß ich genau, was da passiert. Wenn ich zuerst 5 typedefs in irgendwelchen Header-Files oder Dokus nachlesen muss, dann ist das nicht besonders praktisch, oder?
Zitat von gueNoch schlimmer wird das mit type inference: Viele Programmierer werden selbst nicht mehr wissen, welchen Typ sie da verwenden. "Ähm was liefert die Funktion noch mal zurück? Wurscht - auto x = func(); writeline(x);"
Zitat von gueÄhm... KEINE freien Funktionen?
Schaut zumindest interessant aus. Obs wirklich besser is wird sich noch herausstellen und selbst dann wirds noch Jahre dauern bis es sich durchsetzt. Ich werd das auf jeden Fall genauer im Auge behalten.
ich habe einige zeit über deinen post nachgedacht und mir fällt nicht wirklich ein grund ein warum header files unbedingt nötig wären. die saubere trennung zwischen definition und deklaration ist dabei genausowenig ein argument wie die von dir genannten include guards (die problemlos mit einer weiteren präprozessoranweisung rationalisiert werden könnten). vl ist es einfach nur aus dem grund, weil man es seit so vielen jahren macht, dass man nicht mehr darüber nachdenkt. allerdings sind nicht alle deine argumente wirklich stichhaltig. plattformunabhängiger code wird keinesfalls durch headers erschwert. mit der richtigen abstraktion kann man problemlos ohne schwindligen präprozessoranweisungen auskommen. heutige computer erlauben das in den meisten anwendungsgebieten und gekonntes oop ist auf alle fälle performanter als zB irgendwelche dynamischen bindings oder VMs.Zitat von BuschmannHeaderfiles sind ein Hack, mehr nicht. Schon allein die Existenz von Include Guards beweist das (Fälle, die diese Guards nicht benötigen, sind eher selten und großteils nur bei C-Programmen zuhause). Headerfiles werden immer vom Präprozessor inkludiert, der Compiler hat dann eine Riesenwurscht vor sich, darum ist es guter Stil viele Forward declarations zu verwenden, um Compilezeiten zu verbessern. Systemspezifische Header wie windows.h sind AUCH drin, was v.a. bei plattformunabhängigen Code sehr problematisch sein kann. Last but not least fügt der Präprozessor auch private Klassenmembers ein - eine absolut sinnlose Aktion.
Die Templatesache ist teils auch ein C++-Problem. Ein System wie in Pascal mit Units und Interfaces wäre für C++ wohl das praktischste. Komplette Umstellung in das 1-File-System wäre wohl zu schwer (v.a. bei Templates).
Und, wenn deine Javafiles zugemüllt sind, solltest du an deinem Stil arbeiten, denn das ist die Zukunft. Künstliche Trennungen gibt es eher selten, und bei C war das kein Feature, sondern eine Konsequenz aus damaligen Compilern...
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026