Programmier-"Niveau"
-
Xin schrieb:
Und damit sind wir bei dem Schluss angekommen: die Aussage "Variablen sind Offsets/Adressen" ist Quatsch.
War doch nicht so schwer.Blödsinn.
Xin schrieb:
Wird ein Programm allerdings durch eine Optimierung gezogen, kann es durchaus sein, dass vom Code nur noch die erforderlichen Teile übrigbleiben. [...]
Wo kein Objekt, da auch kein Offset, um es wieder zu finden.Also wie jetzt?
PS: Ich habe nicht das Gefühl, dass keiner von euch beiden den Thread soweit verfolgt hat.... von daher hier eigentlich einfach mal querwidersprochen wird. Schlagwort gefunden und dagegen sein.
Ich habe keinen Bock auf den nächsten 20 Seiten Thread... als es um RAII ging habe ich auch Google angeworfen und mein Wissen in Frage gestellt. Wenn ihr euch damit beschäftigen wollt... Google, Wikipedia, ... Wenn ihr nur widersprechen wollt... /dev/null. Wenn ihr was nicht versteht und wissen wollt, wären die Fragen entsprechend formuliert und ich gerne bereit zu erklären. So dürft ihr gerne eure Abschlusserklärung machen, dass ich keine Ahnung habe und fertig.Und diese Aussage kam mit Ansage
Shade Of Mine schrieb:
Aber ich weiss wie die Diskussion hier weiter gehen wird
Ich wiederhole deshalb:
nur weil man dir widerspricht, heisst es nicht dass man dich angreifen will.
-
@Xin
Du kannst nicht ernsthaft etwas in einem Satz als implementierungsabhängig bezeichnen (und zwar so weit dass es sogar ganz entfernt werden kann), und dann im nächsten darauf beharren die Beschreibung der Natur eben dieses implementierungsabhängigen Dings sei akkurat.
Ich meine, hallo ...?Und du bist auf mein "aus 3 mach 2" Beispiel nicht eingegangen. Das funktioniert nämlich so überhaupt nicht mehr mit deiner Beschreibung. Hier werden die Variablen nämlich weder ganz wegoptimiert noch findet man sie 1:1 als Speicherstellen mit Offsets/Adressen/was auch immer.
Und nochwas: du redest hier (wenn du mit mir redest) nicht mit einem Vollidioten. Ich habe eine sehr genaue Vorstellung davon was Compiler so machen, wie der übersetzte Code aussieht etc. Und auch eine halbwegs gute davon was verschiedene Compiler so für Optimierungen durchführen können. Das "aus 3 mach 2" Beispiel ist z.B. keineswegs erfunden.
ps: Ich will nicht behaupten dass du von der Sache keine Ahnung hättest, denn den Eindruck habe ich nicht. Ich hab' aber ganz stark den Eindruck dass du dich mit Händen und Füssen dagegen wehrst eine Ausdrucksweise anzunehmen die andere verstehen können. Klassisches Einzelkämpfersyndrom. "Ich hab da immer so zu gesagt und deswegen hab ich recht".
-
Shade Of Mine schrieb:
Xin schrieb:
Und damit sind wir bei dem Schluss angekommen: die Aussage "Variablen sind Offsets/Adressen" ist Quatsch.
War doch nicht so schwer.Blödsinn.
Xin schrieb:
Wird ein Programm allerdings durch eine Optimierung gezogen, kann es durchaus sein, dass vom Code nur noch die erforderlichen Teile übrigbleiben. [...]
Wo kein Objekt, da auch kein Offset, um es wieder zu finden.Also wie jetzt?
Objekt != Variable. Die Variable identifiziert Objekt, eine Variable ist häufig Offset zu Stack, gelegentlich Adresse (static var).
Was rausoptimiert wurde, war nicht die Variable, sondern das Objekt. Die Variable, das Offset/Addresse, um das Objekt zu finden, fällt damit auch weg.
Shade Of Mine schrieb:
Shade Of Mine schrieb:
Und diese Aussage kam mit Ansage
...
Aber ich weiss wie die Diskussion hier weiter gehen wirdIch wiederhole deshalb:
nur weil man dir widerspricht, heisst es nicht dass man dich angreifen will.Ich fühle mich nicht angegriffen - schrieb ich ja. Ich habe nur keine Lust, den nächsten 20 Seiten Thread mitzumachen, weil das in dem Moment Zeitverschwendung ist, wo es nur noch darum geht, sich zu widersprechen. Man kann fragen, man kann in Zweifel ziehen und man versuchen jemand in Bedrängnis zu bringen. Ich lasse mich gerne anzweifeln, ich erkläre auch gerne schon alleine deswegen weil man mit der Erklärung Chancen hat, Dinge noch tiefergehender zu verstehen. Ich hatte hier eine Diskussion über 55 oder mehr Seiten, wo ich eine wunderbare Idee hatte, die alle scheiße fanden und die ich derzeit implementiere.
Das kann alles durchaus einen guten Sinn haben, aber es muss ein Ziel haben. Hier sehe ich keins.Das Ziel zu erklären, um zu beweisen, dass man kein Idiot ist, ist... uninteressant. Ich habe das, worum es derzeit hier offtopic geht, implementiert, ich weiß warum und ich kann das auch begründen. Aber das macht keinen Sinn, wenn es in Wirklichkeit keinen interessiert.
Der Thread geht um Programmiererniveau. Hier werfe ich mal "RAII" als Buzzword rein und erfahre, dass ich RAII nicht verstehe. Dann debattieren wir, dass ich RAII verstehe, aber ich mein Verständnis aus einer ganz anderen Perspektive aufbaue. RAII ist jetzt abgehakt, darf ich RAII als verstanden ansehen? Mit C++-Forums-Ordnen am blauen Bande?Dafür habe ich jetzt keinen Plan von Compilerbau. Irgendwo wird das ganze langweilig. Diskutieren, um Fronten gegeneinander zu stellen? Langweilig.
Ich habe dann die Auswahl, zu erklären bis wir auf Seite 40 angekommen sind, obwohl es keinen wirklich interessiert, um dann irgendwann wieder an die Schiene "Du debatierst Dich zu Tode" zu kommen. Das ganze obwohl sich keiner damit beschäftigt, weil man auch dagegen sein kann, ohne überhaupt einen zusammengehörenden Satz formulieren zu können, z.b. "Das ist Unsinn". Da habe ich einfach keine Lust eine mehrzeilige Erklärung drunter zu setzen.
Wenn's keinen interessiert, interessiert's halt nicht. Wenn es doch einen interessiert, wird er die richtigen Worte für seine Frage finden. Und den richtigen Weg.
Also wähle ich heute Tor 2, das spart uns allen Zeit.Die Diskussion ging um Programmiererniveau. Wir sollten also zum Threadthema zurückkommen und das noch ein paar Seiten vertiefen, statt auf der Realisation von Variablen rumzuklopfen, die der Anwender einer Programmiersprache in der Regel sowieso nicht nachvollziehen muss.
hustbaer schrieb:
@Xin
Du kannst nicht ernsthaft etwas in einem Satz als implementierungsabhängig bezeichnen (und zwar so weit dass es sogar ganz entfernt werden kann), und dann im nächsten darauf beharren die Beschreibung der Natur eben dieses implementierungsabhängigen Dings sei akkurat.
Ich meine, hallo ...?Ich verstehe nichtmals, was Du da mitteilen möchtest. "Beschreibung der Natur eben dieses"?
2. Absatz steht schon oben.hustbaer schrieb:
Und nochwas: du redest hier (wenn du mit mir redest) nicht mit einem Vollidioten. Ich habe eine sehr genaue Vorstellung davon was Compiler so machen, wie der übersetzte Code so aussieht etc. Und auch eine halbwegs gut davon was verschiedene Compiler so für Optimierungen durchführen können. Das "aus 3 mach 2" Beispiel ist z.B. keineswegs erfunden.
Die Variable wird nie im Registerlanden, sondern das Objekt, dass die Variable identifiziert.
Nehmen wir "i". Behaupten wir, dass "i" auf dem Stack bei -4 liegt. Das Objekt, dass mit "i" identifiziert werden soll, hat also das Offset -4 zum Stack und heißt im Quelltext eben "i". Das ist Deine Variable.
Die Optimierung greift. Sie lädt das Objekt, welches sich 4 Bytes vor dem Stackpointer befindet als 32 Bit Datenwert in das Register und iteriert über das Register.
Die For-Schleife erlaubt nicht die Entfernung des Objektes, sie erlaubt aber, dass i nie auf dem Stack angelegt werden muss, in dem sofort das Register mit 0 initialisiert wird. Die Variable i muss kein Objekt auf dem Stack identifizieren und auch keine statische Adresse. Hier muss sie das Register addressieren, dass durch die Optimierung statt der stackrelativen Position ausgewählt wurde.
Hier wird nichts rausoptimiert, hier wird nur in die CPU verlagert.Nach dem Compilervorgang ist die Variable komplett weg, das Objekt, das mit 'i' identifiziert wurde, existiert weiterhin im Register.
hustbaer schrieb:
ps: Ich will nicht behaupten dass du von der Sache keine Ahnung hättest, denn den Eindruck habe ich nicht. Ich hab' aber ganz stark den Eindruck dass du dich mit Händen und Füssen dagegen wehrst eine Ausdrucksweise anzunehmen die andere verstehen können. Klassisches Einzelkämpfersyndrom. "Ich hab da immer so zu gesagt und deswegen hab ich recht".
Ich möchte nicht wissen, wie lang dieses Posting hier wieder wird... Wieso kommst Du auf einen solchen Spruch "Klassisches Einzelkämpfersyndrom"? Du möchtest nicht behaupten, dass ich keine Ahnung habe, aber eine solche Behauptung wie "klassisches Einzelkämpfersyndrom" kommt Dir dafür leicht über die Lippen.
Shaaaaade... ist das eigentlich ein Angriff?
Ganz ehrlich, hustbaer - es kostet mich Zeit auf drei, vier Leute einzugehen und zu erklären und es macht einfach keinen Spaß, wenn man dazwischen immer wieder liest, dass man als Mensch mit "klassischem Einzelkämpfersyndrom" abgestempelt wird und man gleichzeitig liest, dass hier mehrere C++-Experten erkannt haben, dass ich was nicht verstehe.
Warum soll ich mich Leuten erklären, die mir ihren Stempel schon aufgedrückt haben und diesen gerne noch bestätigt sehen wollen?Was habe ich davon? Wenn ich darauf eingehe, kommt nur das nächste Posting, wo irgendwer irgendwas nicht behaupten möchte, aber davon überzeugt ist, dass ich der klassische Fall von was auch immer bin, was aber in keinem Fall ein Angriff darstellen soll.
Also bestätige ich Dir hiermit den Einzelkämpfer.
Ein Einzelkämpfer ist nicht daran interessiert mit anderen zu diskutieren.
Falls Du doch fachlich(!) mit mir diskutieren möchtest, dann gerne, aber nicht hier. Ich habe keinen Bock, gegen eine Front von drei, vier Leuten anzudiskutieren und mir dabei das Geschwafel über herbeigedichtete psychische Probleme durchzulesen, weil ich als Einzelkämpfer viel zu lange Postings schreibe.
-
ISO/IEC 14882:2011 §5/6 schrieb:
A variable is introduced by the declaration of a reference other than a non-static data member or of an object. The variable’s name denotes the reference or object.
-
Irgendwann muss doch mal gut sein. -.-
Das Thema ist es echt nicht wert...
-
Xin schrieb:
Also bestätige ich Dir hiermit den Einzelkämpfer.
Ein Einzelkämpfer ist nicht daran interessiert mit anderen zu diskutieren.
QFT
-
Dieser Thread beweist doch sehr gut, daß die Ausgangsthese stimmt:
cooky451 schrieb:
mir fällt immer mehr auf, dass meine Vorstellung von "programmieren können" und die von den meisten anderen ziemlich weit auseinander geht
Jeder sieht nur seine Sicht der Dinge...
-
Shade Of Mine schrieb:
Xin schrieb:
Also bestätige ich Dir hiermit den Einzelkämpfer.
Ein Einzelkämpfer ist nicht daran interessiert mit anderen zu diskutieren.
QFT
Hey, Shade... wir sind auf Seite
78... das war ein EigentorThanks for playing... :->
-
Kindergarten. Habt ihr nichts zu tun? Hier jemals wieder auf eine sachliche Diskussion zurückzukommen ist doch geradezu ausgeschlossen. Die Möglichkeit dessen scheint mir nur eine Ausflucht zu sein diesen Blödsinn fortzuführen.
Aber anscheinend habt ihr ja Spaß dran.
-
Eisflamme schrieb:
Hier jemals wieder auf eine sachliche Diskussion zurückzukommen ist doch geradezu ausgeschlossen.
You're right.
Hierum geht's:
cooky451 schrieb:
Hi,
mir fällt immer mehr auf, dass meine Vorstellung von "programmieren können" und die von den meisten anderen ziemlich weit auseinander geht. In meinem Umfeld interessiert sich eigentlich niemand wirklich für den Standard, Patterns, etc. Das bleibt größtenteils auch so bei Studenten in höheren Semestern, und viele Profs oder Angestellte die sich mit so etwas beschäftigen scheint es auch nicht zu geben. "Programmieren können" scheint im Allgemeinen zu heißen, dass man if/while/for schon mal gesehen, und irgendeine vage Vorstellung davon hat, was OOP bedeutet. Und private ist toll, warum kann zwar niemand wirklich erklären, aber das macht man halt so. Und da hört dann das Wissen (und Interesse) der meisten mir bekannten Programmierer irgendwie schon auf. Dinge wie Exception Safety hören viele zum ersten mal, bei Templates schaffen ein paar es gerade noch <typename T> zu benutzen. Das klingt jetzt alles sehr negativ fällt mir gerade auf, aber darum soll es gar nicht gehen. Mich würde viel mehr einfach mal interessieren, wie viele Leute in eurem Umfeld schon mal MVC gehört haben, simple TMP Programme schreiben können, wissen was RAII ist, wie ein GC etwa funktioniert, sich mehr oder weniger im C++ (oder C) Standard zurecht finden, überhaupt in der lage sind Exception sichere Programme schreiben zu können, ...
Denn die einzigen Leute von denen ich weiß, dass sie diese Kriterien erfüllen, "kenne" ich sozusagen aus dem Internet, und selbst da sind die rar.
-
Och ja, ich hab ja am Anfang ein paar brauchbare Antworten bekommen, streitet euch mal ruhig über den Quatsch, ist doch lustig. Aber könnte mich eben jemand auf den neuesten Stand bringen, ich habe irgendwie den Faden verloren. Irgendwas mit Stack gehört zu RAII oder nicht oder so.
-
Xin schrieb:
hustbaer schrieb:
Und nochwas: du redest hier (wenn du mit mir redest) nicht mit einem Vollidioten. Ich habe eine sehr genaue Vorstellung davon was Compiler so machen, wie der übersetzte Code so aussieht etc. Und auch eine halbwegs gut davon was verschiedene Compiler so für Optimierungen durchführen können. Das "aus 3 mach 2" Beispiel ist z.B. keineswegs erfunden.
Die Variable wird nie im Registerlanden, sondern das Objekt, dass die Variable identifiziert.
Nehmen wir "i". Behaupten wir, dass "i" auf dem Stack bei -4 liegt. Das Objekt, dass mit "i" identifiziert werden soll, hat also das Offset -4 zum Stack und heißt im Quelltext eben "i". Das ist Deine Variable.
Die Optimierung greift. Sie lädt das Objekt, welches sich 4 Bytes vor dem Stackpointer befindet als 32 Bit Datenwert in das Register und iteriert über das Register.Nur dass
i
überhaupt nirgends mehr existiert. Es existiert dann lediglich der Wert des Ausrducks&p[i]
in einem Register (das ist die neue Variablep2
in meinem Beispiel). Es gibt im optimierten Programm *nichts* mehr dasi
entspricht, keine einzige Speicherstelle/Register/... wo also z.B. 23 drinstehen würde wenn die Schleife sich im Durchlaufi == 23
befindet.Dafür gibt es ein neues "Ding" das im Source-Code keinen Namen hat: den Ausdruck
&p[i]
.Ich hab' dazu mal eine halbwegs high-level gehaltene Beschreibung des LLVM Optimizers/Code-Generators gelesen (hab leider keinen Link mehr dazu parat, falls jmd. die Beschreibung kennt... würde ich selber gerne nochmal lesen). Vorausgesetzt ich hab das richtig verstanden, dann macht der LLVM...
a) Primär erstmal Register-Allocation mit virtuellen Registern, von denen es beliebig viele gibt. Aus diesen virtuellen Registern macht dann der Code-Generator Code der mit echten Registern und/oder Stack arbeitet - wie es halt gerade passt.
b) Die Register-Allocation wird nicht nur für Variablen gemacht, sondern für sämtliche Zwischenergebnisse.
Und dann wird weggeworfen was weggeworfen werden kann.
Dadurch kann es leicht sein dass für ein Codestück weder die Variable "a" noch die Variable "b" übrigbleiben, der Ausdruck "a+b" überlebt aber.c) Wenn es eine Zuweisung im Code gibt, dann wird für den neuen Inhalt der Variable nach Programmstelle X eine neue Register-Allocation gemacht. D.h. selbst wenn die Variable "a" übrig bleibt kann es sein dass sie munter verschiedene Register durchwandert, vielleicht sogar zwischendurch mal auf dem Stack landet etc. Oft wird das keinen Sinn machen, und der generierte Code wird genau ein Register für eine Variable verwenden. Manchmal macht es aber Sinn, nämlich z.B. wenn der Code-Generator out-of-order Code generiert, und daher einen alten Wert einer Variable braucht nachdem diese bereits modifiziert wurde.
Und sogesehen halte ich es für sehr irreführend zu sagen dass eine Variable einem Offset/einer Adresse/einem Register entspricht.
Weil es eben nur bestimmte Spezialfälle sind wo man eine solche Zuordnung sinnvoll herstellen kann.Man kann von mir aus gerne sagen dass es "oft" so ist, z.B. wenn man einem Anfänger erklären will was da so ca. ungefähr passiert, aber als absolutes Statement ist es für mich halt einfach falsch.
Xin schrieb:
Die For-Schleife erlaubt nicht die Entfernung des Objektes, sie erlaubt aber, dass i nie auf dem Stack angelegt werden muss, in dem sofort das Register mit 0 initialisiert wird. Die Variable i muss kein Objekt auf dem Stack identifizieren und auch keine statische Adresse. Hier muss sie das Register addressieren, dass durch die Optimierung statt der stackrelativen Position ausgewählt wurde.
Hier wird nichts rausoptimiert, hier wird nur in die CPU verlagert.Siehe oben.
Wie kann die Variablei
ein Register adressieren (oder eine wie auch immer geartete Sache wo man einen Wert abspeichern kann), wenn es *nichts* mehr im gesamten Computer gibt wo der Wert abgespeichert wäre der ini
stehen würde/sollte/müsste?
Gleichzeitig ist die Variablei
auch nicht vollständig entfernt worden, denn sie kann nunmal einfach nicht vollständig entfernt werden. Dafür hat der Compiler das mit Hilfe der Variablei
beschriebene verhalten anders umgesetzt: er hat die neuen "Variablen" (Ausdrücke, Register, ... wie auch immer man es nennen will)&p[i]
und&p[len]
eingeführt.Xin schrieb:
Nach dem Compilervorgang ist die Variable komplett weg, das Objekt, das mit 'i' identifiziert wurde, existiert weiterhin im Register.
Ich wiederhole mich jetzt, aber egal...
Das miti
identifizierte Objekt ist vollkommen weg, übrig bleiben nur neue Dinge die das vom Programm beschriebene Verhalten umsetzen.
Der Compiler verwendet hier das was unter C++lern gern als "as-if rule" bezeichnet wird: das beobachtbare Verhalten des Programms muss genau das selbe sein wie wenn ("as if") das originale Programm ausgeführt würde. Die Beibehaltung irgendwelcher nicht beobachtbaren Konstrukte wie z.B. die "direkte" Umsetzung lokaler Variablen ist nicht vorgeschrieben. Und daher erzeugen Compiler auch gerne mal Code wo es keine direkte Entsprechung zu lokalen Variablen mehr gibt.
(Die "as-if" Regel findet man vermutlich auch in den meisten anderen Sprachen, ich beziehe mir hier nur auf C++ da ich sie von C++ her kenne und mich mit anderen Sprachen wesentlich weniger gut auskenne).Falls Du doch fachlich(!) mit mir diskutieren möchtest, dann gerne, aber nicht hier.
Sondern lieber wo?
Wir können das auch gerne per Email fortsetzen falls dir das lieber wäre. Oder einen neuen Thread aufmachen - nur dass dort dann sofort wieder 27 andere Leute mitposten würden, würde also vermutlich nix bringen.ps: natürlich *kann* ein Compiler so arbeiten dass es (abgesehen von Fällen wo etwas komplett wegoptimiert wird) immer eine 1:1 Zuordnung Variable <-> Adresse/Offset/Register gibt. Er *muss* aber nicht, und Compiler die richtig gut optimierten Code erzeugen können das mMn. auch nichtmal. Weil sich durch diese Einschränkung eben einfach zu viele Optimierungsmöglichkeiten verbieten würden.
-
hustbaer schrieb:
Und sogesehen halte ich es für sehr irreführend zu sagen dass eine Variable einem Offset/einer Adresse/einem Register entspricht. ...
Man kann von mir aus gerne sagen dass es "oft" so ist, z.B. wenn man einem Anfänger erklären will was da so ca. ungefähr passiert, aber als absolutes Statement ist es für mich halt einfach falsch.
Ich kürze das mal ein wenig ab, um dieses Topic in diesem Thread mal zu einem Ende zu bewegen...
Die Optimierung von Maschinencode ist ungefähr das letzte, was man einem Anfänger erklärt. Und man erklärt sie auch nicht, damit ich Shade begreiflich machen kann, dass ich RAII und die Programmierung allgemein aus einer ganz anderen Perspektive betrachte als ein Anwendungsentwickler.
Mein Statement über Variablen gilt auch nicht für die Nachverarbeitung durch einen Maschinencode-Optimierer, sondern ganz allgemein. i ist auch eine Objekt und eine Variable(=Objektidentifizierer), wenn es nie benutzt wird.
Was daraus wird, wenn der Maschinencode durch den Fleischwolf gedreht wird, das ist eine ganz andere Frage - hier findet quasi ein neuer Compiliervorgang statt, der nur noch mit Objekten abläuft und vollkommen ohne ein Dictionary, wie welches Objekt für den Anwendungsentwickler mal geheißen hat. Und das ist vor allem eine Frage, die überhaupt nichts mit dem ursprünglichen Topic zu tun hat. Wenn ich also hier keine vollständige Abhandlung in allein Einzelheiten schreibe, die die Registerverteilung bei der Maschinenspracheoptimierung beinhaltet, dann liegt das auch daran, dass das hier einfach nicht das Thema ist. Und ein Anfänger hat sich eventuell schon bei RAII verabschiedet, was auch nicht das Thema hier war. Da wurde genauso detailverliebt jedes Bit angesehen, weil ich RAII als Buzzword bezeichnet habe für Objekte, deren Speichermanagement durch den Stack gemanagt werden.
Ich bin genauso detailverliebt, denn ich implementiere derartige Details und lasse mich dann leider auch zu gerne dazu hinreißen nach möglicherweise unverstanden oder schlecht verstandenen Details zu forschen. Aber das alles hat nichts in diesem Thread zu suchen oder wäre auch nur annähernd etwas, was jemand, der nicht wirklich scheiße tief in der Materie steckt noch interessiert.An dem Link wäre ich unabhängig von diesem Thread allerdings auch interessiert, falls Du ihn wiederfindest... ^^ (PN?)
Das wäre nämlich genau meine Materie. ^^hustbaer schrieb:
Wir können das auch gerne per Email fortsetzen falls dir das lieber wäre.
Mail klingt gut.
-
Wenn ihr nicht bald aufhört, werde ich absofort dich, hustbaer, Keuchhusten oder Raucherhusten nennen und dich Xin, "nix" oder "niX" (deinen Namen von hinten nach vorne gelesen)!
-
Steffo schrieb:
Wenn ihr nicht bald aufhört, werde ich absofort dich, hustbaer, Keuchhusten oder Raucherhusten nennen und dich Xin, "nix" oder "niX" (deinen Namen von hinten nach vorne gelesen)!
Wieso sind doch lebendes Beispiel für das Programmierer-Niveau.
-
Zeus schrieb:
Wieso sind doch lebendes Beispiel für das Programmierer-Niveau.
Genau. Alleine die Tatsache, dass sie sich so lange über so einen Kleinkram unterhalten können, zeigt schon, dass beide ein hinreichendes Interesse an sauberen Definitionen und Code haben, und das qualifiziert beide zu zumindest potentiell guten Programmierern.
-
cooky451 schrieb:
Zeus schrieb:
Wieso sind doch lebendes Beispiel für das Programmierer-Niveau.
Genau. Alleine die Tatsache, dass sie sich so lange über so einen Kleinkram unterhalten können, zeigt schon, dass beide ein hinreichendes Interesse an sauberen Definitionen und Code haben, und das qualifiziert beide zu zumindest potentiell guten Programmierern.
Ich bin nicht sicher, ob das ein Kompliment ist, aber ich befürchte, Du hast unabhängig davon Recht. ;-D
-
Xin schrieb:
Und man erklärt sie auch nicht, damit ich Shade begreiflich machen kann, dass ich RAII und die Programmierung allgemein aus einer ganz anderen Perspektive betrachte als ein Anwendungsentwickler.
Ja, du hast eine sehr einzigartige Sicht auf alle Dinge.
zB diese Diskussion - eine Variable als Highlevel Konzept lehnst du ab, als Lowlevel Konzept ebenfalls. Eine Variable ist ein Mischding das mal da ist und mal nicht, aber doch irgendwie immer ein Offset auch wenn es sie garnicht gibt.
Ich wette es gibt keinen 2. Menschen auf der Erde der das gleich sieht.
-
Shade Of Mine schrieb:
Ja, du hast eine sehr einzigartige Sicht auf alle Dinge.
...
Ich wette es gibt keinen 2. Menschen auf der Erde der das gleich sieht.Die Wette würdest Du verlieren und deine Zusammenfassung, die ich eines Quote nicht wert ist, spricht für sich.
-
Offtopic: (Ah ne, das war ja quasi das eigentliche Thema.)
In meiner heutigen Java Übungsaufgabe an der Uni habe ich eine Vorlage bekommen, in der sie den Kontostand von Personen als double modelliert haben. Sehr geil.