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

21

18.01.2012, 11:37

Hi,

@Sacaldur : Ich hege keinesfalls Anspruch auf Vollständigkeit, es waren lediglich die Dinge, die mir zuerst eingefallen waren. :)

die Trennung der Vererbung mittels extends und implements ist notwendig, da in Java keine Mehrfachvererbung verwendet wird, aber dafür Schnittstellen definiert werden können, mit deren Hilfe indirekt Mehrfachvererbung möglich ist (extends für Klassen, implements für Schnittstellen)

dies wird so auch in C# gehandhabt
ich halte dies nicht für eine schlechte Lösung, allerdings habe ich auch noch nicht mit Mehrfachvererbung gearbeitet

So wie unser GdI Prof das erklärt hat, wird damit hauptsächlich die Verhinderung von Designfehlern betrieben (Stichwort z.B. Diamond-Pattern). Das mag sinnvoll sein, wenn man sich aber ein klein wenig Gedanken zu dem Thema macht, kommt man gar nicht in die verzwickte Lage, sich solche Monstren herprogrammiert zu haben.
In sofern kommt mir diese gekünstelte Aufteilung (Die Sprache drückt mir quasi ein "glaub mir, du willst das nicht so machen" auf. Aber vll möchte ich selber entscheiden, ob ich nicht vll doch gerade ein Diamond Pattern brauche -- auch wenn das irgendwo bullshit ist ^^.) halt lediglich behelfsmäßig vor. Aber das aus den Augen eines c++ Programmierers.

Letztendlich ist Vererbung in beiden Sprachen möglich, wenn man weis wie. Die Wahl hängt dann von persönlichen Präferenzen ab, oder aber von anderen Faktoren.





ArrayLists: ...

Ja exkat. für die ArrayList und andere generische Container müssen grundlegende Funktionen bereitgestellt werden (afaik hauptsächlich sowas wie compare() und clone(), aber nagelt mich da nicht fest), was bei den nativen Datentypen halt nicht der Fall ist. Hier sehe ich die Augenwischerei mit int und Integer sehr ausgeprägt. Die zwanghafte Trennung empfinde ich als störend (wenn sie auch in c++ ebenso, wenn auch schwächer vorhanden ist. es geht z.B. nicht, eine Klasse von float erben zu lassen).

@Xardias:
Ja das sehe ich ähnlich und deine Ausführungen zu Bibliotheken unterstützen meine Therese durchaus, dass Java für anfänger leichter zu erlernen ist. Allerdings empfinde ich z.B. die SDL oder SFML Bibliotheken (die ich beide ganz gut kenne) als hinreichend leicht einzubinden. Das größte Problem als ich damit begonnen hatte, war in meiner IDE zu finden, wo die für die includes und libs zu suchen hat. Dann eine Makrodefinition und los gehts mit sf::RenderWindow App = new sf::RenderWindow(...);

An die "großen" Wie DX und OpenGL habe ich mich aber noch nicht herangewagt und kann da auch nichts zu sagen.

Generell bin ich aber der Überzeugung, dass wenn ich eine Lib benutzen möchte, ich mir gefälligst auch die Doku dazu durchzulesen habe. Ich benutze Fremdsoftware und sollte der im Zweifelsfall erstmal nicht trauen. (Anfänger im C&P-Wahn tun sich hiermit aber verständlicherweise schwer, ging mir damals auch nicht anders)

So Far...
Laguna
Portfolio runvs.io | Gamejolt | itch.io | PEWN | Twitter

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

22

18.01.2012, 11:57

Kontrolle über den Speicher kann nett für die Performance sein. Muss es aber nicht in jedem Fall sein! Ansonsten kann man mit dem GC dieses Thema (fast) vergessen. Das fast ist nur leider immer noch ein Problem ...
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

23

18.01.2012, 12:21

@Lagune:
dein Prof hat aber auch nicht unrecht - das ist der Gedanke hinter dem "Verbot" der Mehrfachvererbung

in C# ist das besser gelöst, als in Java
dort ist es möglich, generische Listen und Integer zu kombinieren (und es gibt Operatorenüberladung und es gibt Delegates ...)
man kann aber auch in C# keine Klasse von float oder int erben lassen ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

24

18.01.2012, 12:23

Meiner Meinung nach ist selbst mit Java noch (zu) viel Freiheit zum Blödsinn möglich. Es gibt nicht umsonst Checkstyle und Co. Bei C++ stelle ich mir das ziemlich horrormäßig vor. Soweit ich weiß beschneiden große Firmen ihre C++ Entwickler immer ziemlich stark um das Chaos der Möglichkeiten in den Griff zu bekommen (siehe z.B. http://google-styleguide.googlecode.com/…nk/cppguide.xml). Dass keine Primitives referenziert werden können, ist einfach eine Designentscheidung mit der man Leben muss. Da hat C++ mit Header-Dateien und Include-Order Problematik IMO viel schlimmere Entscheidungen "im Keller".

Was die Verwendung von Bibliotheken betrifft teile ich xardias Erfahrungen. Es geht ja nicht darum, dass man sich nicht die Dokumentation durchgelesen hat, sondern um Konflikte beim Kompilieren usw. Diesbezüglich ist Java IMO trotz möglicher Jar-Hell immer noch am leichtesten zu verwenden.

Saik0

Treue Seele

Beiträge: 171

Beruf: Anwendungsentwickler

  • Private Nachricht senden

25

18.01.2012, 12:32

Diesbezüglich ist Java IMO trotz möglicher Jar-Hell immer noch am leichtesten zu verwenden.

Vorallem wenn man noch Build-Systeme wie Maven und Ant hat.

Werbeanzeige