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

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

51

28.02.2014, 14:23

Zitat von »BlueCobold«

Ja.

Aber nicht immer.

Zitat von »BlueCobold«

Weil es als public jedem mitgeteilt wird.

Niemand bekommt es mitgeteilt. Nach außen ist nur der Alias sichtbar, bekannt und dokumentiert.

Zitat von »BlueCobold«

Die Bedeutung ist die, dass damit Schundluder getrieben wird.

Welchen Schindluder kann man anstellen, wenn man weiß, dass der Iterator speziell von einem Vektor ist?
Wenn man es darauf anlegt, kann man immer etwas falsch machen. Ich sehe auch kein großes Potential dazu.

Zitat von »BlueCobold«

danach muss man die Frage stellen, ob sich technisch noch was drehen lässt.

Absolut! Der Punkt jetzt ist nur: In C# lässt sich da nicht mehr viel drehen, außer man schreibt alle Algorithmen aus Linq neu und/oder man reicht erst recht intere Details nach außen.

Zitat von »BlueCobold«

Was aber nicht nur daran liegt, dass sie generell vermieden wird, sondern auch daran, dass die zu lösenden Probleme dort gar keine Polymorphie erfordern.

Richtig.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

52

28.02.2014, 14:24

Ich glaube nicht, dass die Diskussion noch etwas bringt. Bomml hat seine Antwort und ich klinke mich daher jetzt aus. Wer den Wald voller Bäume nicht sieht, dem hilft auch keine Brille.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

53

28.02.2014, 14:34

Zitat von »Spiele Programmierer«

Ich sehe einen großen Unterschied zwischen statischer und dynamischer Polymorphie.
Beim Entwickeln von von einigen Klassen, gerade auf Sprach und nicht Spielentwicklerebene, ist das mit unter eine der ersten Fragen die man sich stellen sollte.


Warum sollte man sich diese Frage stellen? Ändert das etwas am Verhalten des Programmcodes? Kann dadurch der Admin einen Bug bekommen, dass sein Passwort nicht richtig aktualisiert wird, wenn es sich ändert? Hindert mich eine Implementierung - ohne diesen Fakt zu beachten - darin, einen Implementierungsplan nach Architektur umzusetzen? Hindert es mich daran, diese Frage nicht zu stellen, dass mein Kunde, der mir 20.000€ für eine Entwicklerleistung bringt, rechtzeitig zu liefern? Werden meine Unit-Tests fehlschlagen, die für die zertifizierung einer Norm-gerechten Software notwendig sind? Alles so ziemlich wichtige Dinge, wenn man professionell Software entwickelt. Kannst du mir einen sinnvollen Anwendungsfall außer Performance nennen, wo das eine nennenswerte Rolle spielt?

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

54

28.02.2014, 15:14

@BlueCobold
Sehe ich exakt genauso

@TrommlBomml
Es ist eine fundamentale Designentscheidung.
Der große Unterschied liegt einfach darin, dass die das eine statisch aufgelöst wird und das andere dynamisch.
Bei der einen Herangehensweise sind alle Betiehungen zur Compilezeit festgelegt bei der anderen erst zur Laufzeit.
In vielen Fällen sind die Konzepte austauschbar.
Das es einen praktischen Unterschied macht, sieht man auch daran, dass die unterschiedliche Herangehensweise zu Diskussionen wie dieser hier führt.

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

55

28.02.2014, 15:25

Meine Fragen hast du irgendwie ignoriert oder? Was interessiert denn den Anwender oder beim Debuggen, ob was statisch oder dynamisch aufgelöst wird? Hauptsache es wird korrekt aufgelöst, und das macht beides der Compiler, in dem er entsprechend Code bereit stellt. Entweder er stellt das halt direkt durch das compilieren fest, oder er generiert Code, der das zur Laufzeit ermittelt. Who cares? Wichtig ist mir doch als Entwickler in erste Linie nur, ob meine Methode auch zum korrektem Zeitpunkt in korrekter Reihenfolge aufgerufen wird. Im Detail kann bei Laufzeitkrischen Anwendungen vielleicht mal interessant werden. Ansonsten ist das ziemlich egal.
Man zieht doch die Lösung heran, die am schnellsten zur Lösung führt und die im nachhinein am besten zu Warten ist.
Ich Frage mich auch ehrlich gesagt, was mir ein Schüler über Software-Design beibringen möchte. Arbeite vielleicht erstmal ein paar Jahre in der Industrie und dann kannst du mir gerne erzählen, wie oft ihr den Code nach genau dieser Frage untersucht und designt :).

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

56

28.02.2014, 15:55

Es ist auch best practice die Frage die gelöst werden soll zu beantworten. Und die war ziemlich generisch so sollte auch die Designentscheidung ausfallen. Ergo ich würde hier das Konzept wählen was am Genereellsten ist, zum Gefühl der Sprache passt usw.

Wäre es Performance gewesen könnte ich die Diskussion um virtuelle Aufrufe verstehen. Dann jedoch sollte man sich aber auch fragen ob es nicht auch besser ist ein passendes System zu benutzen, nicht umsonst gibt es noch andere Sprachen wie Erlang, Ada, Fortran, X10 oder Idiome. zur Lösung mehr oder weniger spezieller Aufgaben.

Es ist in meinen Augen wenig rational etwas Passendes zu optimieren und auch nicht sehr wirtschaftlich.
:love: := Go;

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

57

28.02.2014, 16:08

Nun, ich denke, deine Fragen kannst du dir selbst beantworten.
Natürlich führt es zu keiner Fehlfunktion.

Eure(Deine) ursprüngliche Aussage war, dass bei C++ Iteratoren wesentliche Implementationsdetails nach außen gelangen und C#s "IEnumerable<T>" einige Vorteile besitzen soll. Ein überzeugendes Argument dafür kam da meiner Ansicht nach bisher immer noch nicht. Dots Feststellung war, dass sich die C++ und C#-Variante im Kern hauptsächlich in der Grundsatzfrage statisch vs dynamisch unterscheidet und C++s Variante universaler ausgelegt ist. Ich verwende sehr gern statischen Polymorphismus weil ich gerne den Overhead niedrig halten will und einen Vorteil darin sehe, wenn der Codepfad statisch feststeht und damit offensichtlicher ist. Eigentlich möchte ich aussagen, dass C++s Iteratoren anders als in deiner Aussage nicht schlechter als C# Iteratoren sind. Im Gegenteil: Sie bieten das Gleiche und mehr. Der einzige wirkliche Unterschied ist hauptsächlich eine Sache der rein persönlichen Präferenzen und des Anwendungsfalles.

Ich bin sicher nicht ein großer Experte, wie man als aufmerksamer Forenleser schon mitbekommen haben sollte.
Leider habe ich schon genug Profis mit weniger Erfahrung gesehen. (Nicht unbedingt direkt auf dich bezogen. ;) )

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (28.02.2014, 16:24)


Werbeanzeige