Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

1

04.05.2012, 10:29

D für Spieleentwickler

D ist ja eine Programmiersprache die hier immer öfters angesprochen wird.

Ich habe mir mal eine Erläuterung zur Sprache grob angeschaut (hier: http://www.informit.com/articles/article.aspx?p=1381876).
Die Überlegungen dahinter gefallen mir gut, und ich denke mir dass es sicher Wert ist sich die Sprache mal anzusehen.

Habt ihr schon Erfahrungen mit der Spieleentwicklung unter D? Wie sieht es von der Performance aus? Was kennt ihr für gute Libraries?
Gibt es grosse Nachteile beim Verwenden der Sprache?

Beim suchen nach Engines bin ich auf folgende Liste mit verschiedenen Projekten gestossen:
http://www.dsource.org/projects/

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

04.05.2012, 10:57

Ich programmiere seit fast 2 Jahren mit D. Performance ist in Ordnung, kommt aber natürlich nicht an die von C++ ran.
Aber die Sprache, die Syntax und die Sprachmittel gefallen mir wirklich sehr gut.
Die Sache mit Libraries für Spieleprogrammierer ist so ein Ding. ;) Auf der von dir geposteten Seite findest du ein Projekt "Derelict" welches Schnittstellen zu C Libraries (die Anbindung von D zu C ist wirklich nicht beklagenswert, die für C++ ist ausbaufähig) wie etwa der SDL, OpenGL und viele andere anbietet (unter anderem auch für die SFML, allerdings nur C Objektorientiert :/).
Daher habe ich vor etwas mehr als einem Jahr beschlossen, mein eigenes kleines Framework zu programmieren. Momentan bin ich dabei diesem den letzten Schliff zu geben und zu testen. Es ist ähnlich aufgebaut wie die SFML, baut auf der SDL und OpenGL auf und liefert mir bisher ganz vernünftige Performance Werte. Allerdings entwickle ich daran alleine, weswegen das ganze nur schleppend voran geht und sicher noch einige Fehler drinstecken.
Ansonsten ist die Anhängerschaft, was Spieleprogrammierung mit D angeht, leider noch zu klein, als dass es andere Projekte wie Derelict gäbe.
Aber ich kann dir nur empfehlen mal einen Ausflug in die D Welt zu wagen. ;)

edit:
Noch ein paar nützliche Links, wenn du dich mit D beschäftigen möchtest:
http://www.dsource.org/projects/visuald
http://d.whosme.de/

Hab dazu noch einige PDF's in meiner Dropbox rumflattern, also wenn Bedarf ist ruhig fragen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Architekt« (04.05.2012, 11:02)


3

05.05.2012, 15:07

@Architekt Kann man D auch als Anfänger Lernen? und besitzt es auch Zeiger wie C++ die man selber wieder freigeben muss?

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

4

05.05.2012, 15:33

Zitat

Kann man D auch als Anfänger Lernen?

Ja
Wenn du noch überhaupt keinen Kontakt zur Programmierung hattest, würde ich aber eher davon abraten.
Es gibt auch schon einige Bücher dazu.
Das wohl einzige neure deutsche Werk Programmieren in D: Einführung in die neue Programmiersprache hab ich sogar im Regal stehen.
Ist ein gutes Buch, jedoch ohne Vorkenntnisse sicher sehr schwer zu verstehen.

Zitat

besitzt es auch Zeiger wie C++ die man selber wieder freigeben muss?

Auch Ja
D ist gerade da sehr vielseitig und multiparadigmatisch.
Es besitzt sowohl automatische Speicherverwaltung mit einen GC wie C# oder Java als auch Zeigerarithmetik wie in C\C++ von hausaus ohne Verbiegungen.

5

05.05.2012, 15:37

Zitat

Auch Ja
D ist gerade da sehr vielseitig und multiparadigmatisch.
Es besitzt sowohl automatische Speicherverwaltung mit einen GC wie C# oder Java als auch Zeigerarithmetik wie in C\C++ von hausaus ohne Verbiegungen.


Muss man zwingend die Zeigerarithmetik wie in C++ Nutzen oder kann man auch die Automatische Speicherverwaltung benutzen?

Darkrel

Treue Seele

Beiträge: 143

Wohnort: Zürich

Beruf: Student ETH Zürich

  • Private Nachricht senden

6

05.05.2012, 15:43

Mich regt an D auf, dass es im Forum dazu nur Diskussionen zu const / immutable gibt. Die Sprache an sich wäre so etwa das schönste was mir bisher untergekommen ist.
:cursing:

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

7

05.05.2012, 15:45

Zitat

Auch Ja
D ist gerade da sehr vielseitig und multiparadigmatisch.
Es besitzt sowohl automatische Speicherverwaltung mit einen GC wie C# oder Java als auch Zeigerarithmetik wie in C\C++ von hausaus ohne Verbiegungen.


Muss man zwingend die Zeigerarithmetik wie in C++ Nutzen oder kann man auch die Automatische Speicherverwaltung benutzen?

Du musst sie nicht nutzen, es gibt kaum Anwendungen, wo du sie zwingend brauchst. Aber du _kannst_ sie nutzen. Per Default wird aber sämtlicher von dir angeforderter Speicher, also Objekte oder Arrays die du erstellst, von alleine wieder freigegeben, Stichwort Garbage Collector.
Du kannst aber auch eigenen Speicher anfordern den du dann selbst verwaltest, dies ist aber eig. nie erforderlich. Vor allen in den Anfängen brauchst du dich um Speicher nicht selbst sorgen.
Wenn du PDF's oder Tutorials brauchst, melde dich per PN, jemanden D näher zu bringen ist mir immer eine Freude. :)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

8

05.05.2012, 15:53

Du kannst beides benutzen.
Zeigerarithmetik ist nicht mehr nötig.
Auch Arrays(fester länge und variabel) und Referenz-Funktionsparameter sind problemlos ohne Zeiger möglich.

Ziel von D war es, die Vielseitigkeit, Geschwindigkeit und Systemnähe von C(++) mit der Einfachheit und leichten Erlernbarkeit von C#\Java zu vereinen.
D kompiliert wie C(++) zu Maschinencode und benötigt keine umfangreiche Runtime oder VM auf der Zielplatform.

Einige wenige Features von C++ sind leider trotzdem auf der Strecke geblieben. So zb. die Mehrfachvererbung. (Über Interfaces gehts eingeschränkt trotzdem wie in C#\Java)
Eine sehr interessante neue Möglichkeit ist dafür zb. das Erstellen von Funktionen in Funktionen.

EDIT: Überholt ^^

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

9

05.05.2012, 15:56

Mich regt an D auf, dass es im Forum dazu nur Diskussionen zu const / immutable gibt. Die Sprache an sich wäre so etwa das schönste was mir bisher untergekommen ist.

Wie genau meinst du das? Ein paar andere Themen sind da ja schon aktuell.Das schönste an der Sprache finde ich eig., dass dynamische und Assoziative Arrays Teil der Sprache und nicht Teil der Standard Bibliothek sind, wie es in C++ der Fall ist. Auch nicht zu vergessen sind die Templates. Die Sprache hat schon was. :)

edit:

Zitat


Einige wenige Features von C++ sind leider trotzdem auf der Strecke geblieben. So zb. die Mehrfachvererbung. (Über Interfaces gehts eingeschränkt trotzdem wie in C#\Java)


Auch wenn es schon Momente gab, in denen ich das vermisst habe, insgesamt ist das weglassen der Mehrfachvererbung ein Feature da damit schon ziemlicher Mist angestellt werden kann und Fehler schwer zu finden sind. Auch musst man sich Fragen: wie oft gibt es schon Momente in denen man Mehrfachvererbung braucht und ob es dann nicht andere/bessere Wege gäbe das zu lösen. Somit würde ich sagen war das weglassen von Mehrfachvererbung eine bessere Wahl als es hinzuzufügen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Darkrel

Treue Seele

Beiträge: 143

Wohnort: Zürich

Beruf: Student ETH Zürich

  • Private Nachricht senden

10

05.05.2012, 16:29

Die Mehrfachvererbung fehlt mir nicht. Lässt sich auch sehr schön mit Komposition lösen. Zumal D diesen Ansatz auch unterstützt.

Zu const / immutable. Wer sich ein wenig durch die D - Foren durcharbeitet wird schnell sehen, dass sich viele an const stören. Einige Leute scheinen einfach nicht mit const UND immutable klar zu kommen. Immer wieder werden vermeintliche Bugs deswegen entdeckt. Wegen const / immutable wird von vielen D2 gemieden. Als ich vor knapp 1,5 Jahren nach Tango für D2 suchte, wurde ich an den source code verwiesen mit einem freundlichen "Fix the const issues yourself or use D1". Keine Ahnung ob es Tango mittlerweile für D2 gibt.

Störend ist einfach, dass im offiziellen Forum offensichtlich eine Verwirrung um const besteht. Solange diese Diskussion nicht zum erliegen kommt und die Unklarheiten rund um const ein für alle mal von Walter Bright aus der Welt geschafft werden, verschwinden viele D libraries einfach von der Bildfläche, weil man permanent damit rechnen muss, dass der eigene code nicht mehr funktioniert nach einem compiler update.

Why const is annoying
Problem mit const
const / shared / immutable anomalies
Does D have too many features?

Das schlimme ist nicht, dass es unglaublich viele Threads zum thema gäbe. Schlimm ist mehr, dass diese Threads mit schöner regelmässigkeit wieder auftauchen und sehr langlebig sind.

Wie gesagt: Ich empfinde D als die schönste Programmiersprache die ich kenne. Sie bietet mir alles was mir in anderen modernen Sprachen fehlt. Es ist eine schwer zu meisternde aber einfach zu erlernende Sprache. Genau so sollte es sein. Wenn aber regelmässig grössere libraries eingestampft werden wegen Problemen, auf die ich in den Dimensionen meiner Projekte niemals stossen werde, dann ist das schade. Da hätte Walter Bright direkt eingreifen müssen.
:cursing:

Werbeanzeige

Ähnliche Themen