Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
kaiserludi
Establishment
Beiträge: 467
Registriert: 18.04.2002, 15:31

Re: Jammer-Thread

Beitrag von kaiserludi »

:shock:
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da
:)

"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Aramis »

Das Paste oben hatte nichts mit der Bindungsstärke der Operatoren * und ++ zu tun, sondern damit, dass das Post-Increment erst nach BEIDEN Zuweisungen ausgeführt wird.
Ausser, der Compiler entscheidet sich doch dafuer, deine Festplatte zu formatieren - was er in diesem Fall darf ohne dabei den Sprachstandard zu verletzen :-)
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

CodingCat hat geschrieben:Das Paste oben hatte nichts mit der Bindungsstärke der Operatoren * und ++ zu tun, sondern damit, dass das Post-Increment erst nach BEIDEN Zuweisungen ausgeführt wird.
Ausgewertet. Die Ausführungsreihenfolge ist ja durch den Vorrang und Assoziativität sehr wohl definiert; daran darf der Compiler nichts rütteln (jedenfalls nichts, was das beobachtbare Programmverhalten beeinflussen würde).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Hm, diese Korrektur erschließt sich mir nun auch nicht, die Auswertungsreihenfolge ist schließlich genauso definiert, und der Postfix-Increment-Ausdruck evaluiert zu einer Kopie des Operanden vor dem Increment. Richtig ist, dass Ausführung hier nicht im formalen Sinne gemeint war, ausgeführt wird gewissermaßen noch vor der Auswertung, sichtbar ist die Änderung jedoch erst bei einer erneuten Auswertung des Operanden nach dem nächsten Sequenzpunkt.
Aramis hat geschrieben:Ausser, der Compiler entscheidet sich doch dafuer, deine Festplatte zu formatieren - was er in diesem Fall darf ohne dabei den Sprachstandard zu verletzen :-)
Dazu finde ich gerade nichts, hast du einen Verweis in den Standard parat?
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Aramis »

Eine Variable zweimal ohne Sequenzpunkt dazwischen zu veraendern, ist undefined behaviour.

Das trifft nicht nur auf *p++ = *p++; oder foo(*p++,*p++); zu, sondern (meines Wissens) auch auf i = i = 2;. Beachte: nachdem es sich um undefiniertes, nicht unspezifiziertes Verhalten handelt, ist der Compilerhersteller nicht verpflichtet, etwaige Angriffe auf deine Festplatte in der Dokumentation zu vermerken :-)
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

CodingCat hat geschrieben:Richtig ist, dass Ausführung hier nicht im formalen Sinne gemeint war
Sondern?
Aramis hat geschrieben:Eine Variable zweimal ohne Sequenzpunkt dazwischen zu veraendern, ist undefined behaviour.
Gilt das nicht afaik generell für Lesen und Ändern im selben Sequenzpunkt – also schon für eine einzige Änderung, wenn man zeitgleich ausliest?
Rein dem Urin nach würde ich schon darauf tippen, dass if(i = i + 1) undefiniert ist … weil das Ergebnis des geklammerten Ausdrucks ja i ist, das aber schon in der Addition ausgewertet wird … ist aber jetzt bloß geraten.

————

Column Major.

Mir war – das muss ich zu meiner Schande eingestehen – bis heute nicht klar, dass man bei Column-Major & anderer Händigkeit C × B × A schreiben muss um eine Matrix zu kriegen, die tut, was man in der heilen DirectX-Welt mit A × B × C meinte. Punkt verschieben, rotieren und skalieren ist also scale × rotate × translate.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Krishty hat geschrieben:Sondern?
Es ging mir um die Sichtbarkeitsreihenfolge der Seiteneffekte. Ich habe das jetzt mal für C++03 nachgeschlagen. Was mich gestern irritiert hat, ist, dass im C++0x Draft absolut nichts mehr von Sequenzpunkten zu finden ist.
C++03 §5.4 hat geschrieben:Except where noted, the order of evaluation of operands of individual operators and subexpressions of individual expressions, and the order in which side effects take place, is unspecified.53) Between the previous and next sequence point a scalar object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be accessed only to determine the value to be stored. The requirements of this paragraph shall be met for each allowable ordering of the subexpressions of a full expression; otherwise the behavior is undefined.
Also sogar unspezifiziert, und gar nicht undefiniert. C++0x formuliert es noch laxer:
C++0x §5.1.8 hat geschrieben:[ Note: The evaluations of the postfix expression and of the argument expressions are all unsequenced
relative to one another. All side effects of argument expression evaluations are sequenced before the function
is entered (see 1.9). —end note ]
C++0x §6.2 hat geschrieben:Expression statements have the form

Code: Alles auswählen

expression-statement:
   expressionopt;
The expression is evaluated and its value is discarded. The lvalue-to-rvalue (4.1), array-to-pointer (4.2), and function-to-pointer (4.3) standard conversions are not applied to the expression. All side effects from an expression statement are completed before the next statement is executed. An expression statement with the expression missing is called a null statement.
Krishty hat geschrieben:Gilt das nicht afaik generell für Lesen und Ändern im selben Sequenzpunkt – also schon für eine einzige Änderung, wenn man zeitgleich ausliest?
Rein dem Urin nach würde ich schon darauf tippen, dass if(i = i + 1) undefiniert ist … weil das Ergebnis des geklammerten Ausdrucks ja i ist, das aber schon in der Addition ausgewertet wird … ist aber jetzt bloß geraten.
Das Zitat aus C++03 oben spricht nur vom Auslesen der "prior value", in diesem Fall wertest du aber das Ergebnis aus, sollte also legitim sein.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Jemand hat es geschafft, die hochkomplexe Berechnung, wo der Mauszeiger die X-Z-Ebene der virtuellen Szene trifft, durch Verpacken aller Funktionen in Klassen und Schnittstellen, Mehrfachvererbung und konsequentes Pass-by-Value in nur 600.000 (sechshunderttausend) erzeugten und wieder zerstörten ::std::string-Instanzen zu realisieren.

Das Schlimmste ist, dass die Scheiße im Release-Build noch völlig flüssig lief und nur im Debug-Modus übelst abkackte. Es ist un-glaub-lich, wie leistungsfähige Compiler, Standardbibliotheken mit swap()-Tricks und Move Semantics, Low Fragmentation Heaps und allesfressende Core-iDerp-CPUs jeden Programmierdarwinismus abgeschafft haben.

Aber um für meine Fouriertransformationen die schnellen Speicherpfade zu nutzen, so dass die auch mal ruckelfrei laufen, dafür sind die Compiler immernoch zu blöd.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2398
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Jonathan »

Krishty hat geschrieben:Jemand hat es geschafft, die hochkomplexe Berechnung, wo der Mauszeiger die X-Z-Ebene der virtuellen Szene trifft, durch Verpacken aller Funktionen in Klassen und Schnittstellen, Mehrfachvererbung und konsequentes Pass-by-Value in nur 600.000 (sechshunderttausend) erzeugten und wieder zerstörten ::std::string-Instanzen zu realisieren.
Versteh ich nicht. Was hat ne Mausposition mit einem string zu tun? Und iwe kommt man auf so viele?? Erinnert mich irgendwie an http://thedailywtf.com/Articles/And-We-Got-Sheena.aspx
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Jonathan hat geschrieben:Versteh ich nicht. Was hat ne Mausposition mit einem string zu tun? Und iwe kommt man auf so viele?? Erinnert mich irgendwie an http://thedailywtf.com/Articles/And-We-Got-Sheena.aspx
Jemand hat alle mathematischen Berechnungen mit den User-Klassen durchgeführt, die dafür entworfen sind, dass der User die Objekteigenschaften in einem Dialog einstellen kann – und deshalb wurde jedes Zwischenergebnis als String vorgehalten und durch mehrere Layer in eine globale Datenbank kopiert. Ja, wäre durchaus ein Daily WTF. Meiner war es jedenfalls.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
TheBenji
Establishment
Beiträge: 129
Registriert: 07.01.2011, 17:59

Re: Jammer-Thread

Beitrag von TheBenji »

Krishty hat geschrieben: [..]
jeden Programmierdarwinismus abgeschafft haben.
[..]

...Darwin hat so oder so unrecht - schau dich doch mal um :D
Benutzeravatar
FlorianB82
Beiträge: 70
Registriert: 18.11.2010, 05:08
Wohnort: Darmstadt
Kontaktdaten:

Re: Jammer-Thread

Beitrag von FlorianB82 »

ich HASSE die windows batch.

(bevor sich jemand wundert, wieso ich die überhaupt benutze: ich habe eine ganze toolchain von konsolenprogrammen geschrieben. und um nicht immer alles manuell aufrufen zu müssen, habe ich mir batch files geschrieben. nicht ganz unkompliziert, denn es werden massenweise dateien aus verschiedenen ordnern zusammensortiert und meinen tools in den rachen geworfen. noch dazu muss das alles mit relativen dateinamen funktionieren, damit man das gesamt projekt samt daten ordner einfach auf nen anderen rechner/anderes verzeichnis übertragen kann, und alles geht.)

jedenfalls ist das ganze der verkruzelste haufen *tüüüüüüt* der mir je unter gekommen ist. wurde anscheinden von einer horde afrikanischer brüllaffen auf speed gecodet, die gleichzeitig rektal mit spitzen heissen gegeständen gequält wurden... wie sonst kommt man zur hölle auf die idee, den body einer schleife ersteinmal auszuwerten, das ergebnis als string abzuspeichern, und dann wiederholt gemäss dem loop einzusetzen? das einzige, was in so einem body wirklich pro schleifendurchlauf aktualisiert wird, ist die loop variable. der rest? der bleibt so wie er ist, selbst wenn man in aktualisiert. sehr intuitives schleifenverhalten, bravo.
aber ganz abgesehen davon, auch alles andere funktioniert anders, als man annehmen würde. rate mal mit rosenthal. ich habe jedenfalls für die einfachsten aufgaben stunden gebraucht. das nächste mal implementiere ich sowas gleich in brainfuck.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2257
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Zudomon »

Nun hab ich schon Doppelgänger... mein Avatar ist nicht mehr einzigartig. :(
Klick mich
Zuletzt geändert von Zudomon am 28.08.2011, 16:43, insgesamt 1-mal geändert.
joggel

Re: Jammer-Thread

Beitrag von joggel »

Zudomon hat geschrieben:Nun hab ich schon Doppelgänger... mein Avatar ist nicht mehr einzigartig. :(
Klick mich
Ja, dein Avatar habe ich auch schonmal irgendwo gesehen ^^.
Aber ich glaube, meinen findet man nicht so schnell im Netz... :D
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

Naja Zudomons Avatar ist ja im Grunde selbst erstellt. Schon ein bisschen seltsam ^^ ist deiner auch hausgemacht?
joggel

Re: Jammer-Thread

Beitrag von joggel »

Mh... nein, fotografiert ^^.
Aber das Modell von Zudomons Avatar habe ich aber schonmal gesehen.
Oder ist das auch selber gemacht? :shock:
Benutzeravatar
Zudomon
Establishment
Beiträge: 2257
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Zudomon »

Ja, das Bild und das Model ist selbstgemacht...
Hier in Bewegung

Und deinen Avatar gibt es...
hier...
und hier... ( Post #23 )
und hier... ( Post #7 )
hier... (etwa halb runterscrollen)
hier mit japanischer Beschreibung...
als Handy Wallpaper...
und hier...
als Profilbild in Facebook...
als Avatar im Forum etwas abgeändert...
zu arabischen Buttons verarbeitet...

Ich weiß natürlich nicht, was von dir selbst reingestellt wurde. Es gibt noch viele weitere Seiten, wo dein Avatarbild auftaucht (378). :D
Da ist dein Bild auf jeden Fall schon wesentlich bekannter, als meins *g*
joggel

Re: Jammer-Thread

Beitrag von joggel »

Woas!!
Ich bin entsetzt....
Nich unique?! :o
Naja, die haben warscheinlich alle geklaut von mir, ganz bestimmt!

Naja... schade eigentlich. dachte hab da was gaaanz originelles^^.
Aber was mich zum Nachdenken bringt.... was is das für eine Gestallt?

Aber das Modell von Dir, das habe ich schonmal irgendwo gesehen...
Frag mich jetzt bitte nicht wo. Vielleicht würfelt da auch nur mein Gehirn Kurz- und Langzeitgedächtnis mal wider durcheinander.
Also will jetzt nicht meine Hand ins Feuer dafür legen.
Soll auch keine Unterstellung sein!
Benutzeravatar
Zudomon
Establishment
Beiträge: 2257
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Zudomon »

Also eigentlich kann es ja nur als Bild oder Video sein, denn als Modell habe ich es bisher nirgendwo raus gegeben. Und selbst wenn, wäre das ganze nicht so einfach zu verwenden, da ich ja meine eigenen Dateiformate verwende.
joggel

Re: Jammer-Thread

Beitrag von joggel »

Was auch möglich wäre, das es nachmodelliert wurde.
Aber das sind jetzt alles Mutmaßungen... ^^.
Ich sage jetzt mal lieber nix mehr, da ich mir immer unsicherer werde, ob ich das auch *wirklich* gesehen habe. Sorry!
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Jemand hat alle Folgen Daria bei YouTube hochgeladen und war dabei so klug, sie zu spiegeln, damit die Videospuren nicht als urheberrechtsgeschützt erkannt würden …

… aber leider nicht klug genug, um auch den Ton eine Oktave hochzudrehen. Jetzt sind da nur noch halbe Folgen wegen querbeeten Urheberrechtsansprüchen auf die enthaltene Musik.

Falls ich es nicht mehr schaffe, irgendwo Alufolien und gebrauchte Mikrowellen aufzutreiben, war es das mit meinem Samstag Abend. Nächste Woche also definitiv wieder Alkohol; alles andere führt zu nichts.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

http://www.crunchyroll.com/gintama (der offizielle stream anbieter)
ansonsten gibt's noch viele andere nette anime die auf halbseidenen seiten auch für europäer (funimation ist geo-geblockt :evil:) zu finden sind :) ein paar empfehlungen:
Kino No Tabi : The Beautiful World <3, Black Lagoon, Cowboy Bebop, Mushishi, Natsume Yuujinchou, Golgo 13, Hunter x Hunter, One Piece
Hier meine teilweise wohl unvollständige "Gesehen"-Liste: http://myanimelist.net/animelist/Nikolaj&order=4 (Die Bewertungen sehe ich teilweise mittlerweile anders...)

Pass bei Sachen wie One Piece auf, wenn man da süchtig wird, hat man erst mal ein paar Wochen volles Programm. Das gute ist, da man ja eh mit Untertiteln schauen sollte, kann man ruhig mal auf 1,25 fache Geschwindigkeit stellen, um mehr Folgen pro Tag zu schaffen :ugeek:. :D
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ich will aber kein Animé, sondern Daria. Ich gehe schließlich auch nicht in den Supermarkt und kaufe Heinz oder Kunz oder sonstwas, sondern marschiere zielstrebig zu Hela Curry Gewürz Ketchup, und falls das nicht da sein sollte, wird eben ein paar Tage gehungert und Mitmenschen damit auf die Nerven gegangen, dass wir in völligem Überfluss leben und darum verlernt haben, einen Sinn für Geschmack oder zumindest Priorisierung zu entwickeln.
Zuletzt geändert von Krishty am 27.08.2011, 22:02, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

Die Ausgeburten japanischer Kultur/asiatischer Kulturen sind doch viel interessanter und unterhaltsamer als das was die da in Amerika fabrizieren :D
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Genau. Und wenn mein Compiler beim nächsten Mal einen Fehler ausspuckt nehme ich einfach mit Java vorlieb, denn das hat ja eh viel mehr interessante Frameworks ;)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

Du wirst ja richtig einsichtig :D
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »



I̟̝ͭc̶̷̶̱̮̳̟̙̲̬̋̒͐̓̑̓̈ͅḧ̴̢̙͉͈̝͕̈́ͬ ̥̳̤̟̪̈̀̒h̛̫̯̾̊̆̐ͥͪ̿͆̄a͈͙͖̲͇̪̾͗ͬ̚s͑͑ͬ҉̸̶̩̱̼s̮̲̯͙̼͎̣͒̏̕͡ͅͅe̵̸̩̩̩̮͂̄͋̓́ ̪͍ͬ͂̑͠͠u̡͔̙͔̎ͣ̕n̻͚̟̘͚̠͓̅̽̂͂͟ţ̳̰̹͖͎̉ͤͨ̎͗ͪ͟ē͓̪ͨ͋ͧ̓ͫ͢͝r̟̜̙ͮ̔̾ͯͪͫ͘͢͝s̷͎͎̦̈̓͛ͨ̋ͫ̋̈̇c̷͚̲̖͆̈̄ͧ̂͘h͈͙͖̲͇̪̾͗ͬ̚ǐ͚͙̱̳̖̆͢ë̶̶̶͖͉̘́d̦̣̣͓̤̮͚͊͋͢l̟̜̙ͮ̔̾ͯͪͫ͘͢͝ì͈͍͕̜̰̓ͮ̿ͥ̆͘͘c̥̳̤̟̪̈̀̒ḩ̡̛̺̳ͫ͛ͣ͐̍e̛̲̽̾ͥ͟s̷͉̙̻̻͕̣͌ͫ̕ ̸̷͚͖̔ͤ̒̿D͔̲͕͉̗̬̎̆ͦͫ͌̎ͅė̡͙͑͠b̥̱͓̪͔̞́͊u̷̫̺͎̣͓̯ͥͣ̄ͥ͑̽g̜̳̹̮̜̜̝̣̺̓ͬͣ͆̈͑͐ͧ̕-̱̰͚̗̳͆̅̄͌̅́ ̰̙̈̾̿͟ͅu͑͑ͬ҉̸̶̩̱̼n͚͍̫̍͛ḋ̡͙͑͠ ̴̧̟͇͍ͥ̽͑̒Ṙ̡͙͑͠ë̛͚̺̫̠͔̮͉͙́̉̐̏ͫ͛̅́l̼͈̩͗ͯͨ̑e̜̳̹̮̜̜̝̣̺̓ͬͣ͆̈͑͐ͧ̕a̦̣̣͓̤̮͚͊͋͢s̶̶̶͖͉̘̈́ḙ̤̳͊ͥ́͆̕-̶̥̖̝̤̯̾ͨͪ̂̌ͣͭ͜V͇͚͎̻͔̦̭̯͛͌ͫ́̓̾̿̀ë̴̵̞͈̖̹̤̪͕́͐ͤ̆ͫ̃ͪr͍̯̜̳͖̬̼̆̇h̡̰̼̘͙̰͔̓̇̄ͩ͗̀͌̍͝a̖̳̗̙̣͖̜ͬ̄̇ͣ̆̉͗l̦̣̣͓̤̮͚͊͋͢t̯͚̘͔͚͓͍͌ͫ̇͂ͦ͑̾̈e̶̡̠̔̄͒ͭ̊͒̔n͚̹̖̯̞ͧͫ͢ͅ.̛͈̯̋ͭ̉͋̏̚ͅ

Da wird man ja noch verrückt bei.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Mittlerweile lache ich nur noch über die Ironie, dass man von Optimizer-Entwickler-Seite so viel Energie in die als-ob-Regel steckt damit keine schwer zu diagnostizierenden Fehler auftreten, während man von Framework-Entwickler-Seite so viel Energie in Debug-only-Features steckt damit keine schwer zu diagnostizierenden Fehler auftreten.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Weil private Methoden die Klassendefinition verändern, ohne in irgendeiner Weise zur Schnittstelle der Klasse beizutragen, bin ich statt ihrer inzwischen ziemlich konsequent auf in der jeweiligen Übersetzungseinheit lokal definierte, nicht extern verlinkte freie Funktionen umgestiegen. Jetzt habe ich allerdings auch einige Klassen, die extrem reich an Attributen sind, und meine Konsequenz wird jäh auf die Probe gestellt. Optionen:
  • Undurchsichtige Funktionsaufrufe mit Heerscharen von Argumenten
  • Undurchsichtige Initialisierung bei Verschieben der Attribute in eine öffentlich bekannte Attribut-Datenstruktur
  • Haufenweise Speicherindirektionen bei Einführung eines privaten Implementierungsobjekts
  • Unnötige Verunreinigung der öffentlichen Klassendefinition mit möglicherweise veränderlichen Implementierungsdetails
In Bezug auf private Methoden sollten sich Klassen einfach wie Namespaces verhalten, allerorts beliebig um Funktionen erweiterbar. Da private Methoden nur von der Klasse selbst (und festgesetzen Freunden) aufgerufen werden können, würde das nicht mal das Geheimnisprinzip verletzen.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

CodingCat hat geschrieben:In Bezug auf private Methoden sollten sich Klassen einfach wie Namespaces verhalten, allerorts beliebig um Funktionen erweiterbar. Da private Methoden nur von der Klasse selbst (und festgesetzen Freunden) aufgerufen werden können, würde das nicht mal das Geheimnisprinzip verletzen.
Das nennt sich Vererbung. Das Ganze ist doch geradezu absurd einfach: Alles nur noch durch Schnittstellen programmieren! Dann musst du zwar jede Instanzierung auf new umstellen, aber Garbage Collection lässt sich auch in C++ realisieren. Nagut, dann müsstest du auf RAII verzichten – aber Speicherlecks sind eh wichtiger als Ressource-Lecks und indem du alles von IDisposable ableitest, lässt sich das schon ausreichend in den Griff kriegen.

Nein, im Ernst: Du bewegst dich unweigerlich auf sprachphilosophische Probleme von C++ zu. Als nächstes musst du in Frage stellen, warum C++ überhaupt Header und Module trennt: War das nun tatsächlich so geplant, dass du dem Programmierer, der deine Klasse anwendet, im Header eine Schnittstelle (nicht im programmiertechnischen, sondern im textuell formulierten Sinne) zur Verfügung stellst und alles Private im Modul definierst, auf das er keinen Zugriff hat? Wenn ja, warum muss man dann alle privaten Member ebenfalls im Header auflisten, und könnte diese Liste nicht vom Compiler automatisch erzeugt werden? Warum verletzt man da jedes Mal Single Point of Truth, indem man alles doppelt niederschreibt? War das am Ende nicht doch einfach eine billige Leistungsoptimierung, unter der wir nun seit 30 Jahren leiden müssen und die dich nun in den Wahnsinn treibt?

Ich möchte das nicht als plumpe Propaganda für mein achsotolles, keine Header mehr kennendes Modulsystem missbrauchen, sondern bin tatsächlich fundamental davon überzeugt, dass man die komplette Klasse – inklusive aller privaten Methoden – einmal schreiben sollte und dann Compiler und IDE automatisch dafür sorgen sollten, dass andere Module – oder, besser noch, jede Zeile, die nicht zu dieser Klasse gehört – völlig ahnungslos von privaten Membern jeder Art bleibt. Und das ist einfach der Punkt, an dem C++ es völlig verkackt hat und wo sich in diesem Jahrzehnt auch nichts mehr tun lassen wird.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten