Diskussion:Ungarische Notation
Simonyi und Microsoft
BearbeitenIm 2. Satz stand, die 'un' sei 1972 durch Charles Simonyi bei Microsoft entwickelt worden. Das kann nicht stimmen, denn 1972 gab's noch kein Microsoft. Ich kann das leider nicht inhaltlich korregieren, weil ich es nicht besser weiß, aber den ofensichtlich falschen Satz habe ich mal geändert. --Big Kahuna 16:59, 30. Apr 2005 (CEST)
- völlig richtig. Simonyi hat die UN in seiner Dissertation entwickelt, Bill Gates ist erst viel später auf Simonyi und seinen Ansatz gestossen. Genaueres im Buch "Accidental Empires" von Cringely. --Herbert Klaeren
Kritik
BearbeitenMan sollte meinen, ein Kritikteil setzt sich kritisch mit einem Thema auseinander. Derzeit (10.05.2011) besteht dieser Teil lediglich aus einem einleitenden kritisch-negativen Halbsatz, gefolgt von Lobeshymnen. Wie 141.20.145.221 schon sagte, sollte wenigstens der Gedanke der Clean-Code Initiative erwähnt werden. Z.B. ein (zugegeben etwas salopp formulierter) Gedanke von Andreas Seebauer: "In der heutigen Zeit ist die Ungarische Notation absoluter Quatsch. Die IDE kennt den Typ, warum sollte man das in den Variablennamen integrieren?" Quelle: http://blog.aztec-project.org/2009/08/11/clean-code-teil-1/ --87.181.173.215 14:03, 10. Mai 2011 (CEST)
Mir fehlt in dem Artikel eine grundsätzliche Kritik an der ungarischen Notation, warum z.B. Clean-Code Initiativen diese völlig ablehnen (erschwert die Lesbarkeit von Code). --Hcy 14:03, 7. Jul. 2010 (CEST)
- Generell ist der Kritikteil unpassend. Er hebt nur Vorteile hervor und basiert nicht auf Quellen. 141.20.145.221 12:35, 4. Jan. 2011 (CET)
- Es werden verschiedene, geringfügig unterschiedliche Versionen der Ungarischen Notation benutzt was zu Verwirrungen führen kann.
* Oftmals Zeit- und Nervenausfreibende Anpassung der eigenen Konventionen und Programmiergepflogenheiten an die Ungarische Notation
hmmmm. diese nachteile haben doch so ziemlich alle namenskonventionen.
Elvis untot 10:07, 29. Apr 2004 (CEST)
* Verleitet zu uninformativen Variablennamen
die un ist eigentlich genau dagegen gedacht. (wie sie umgesetzt wird, ist natuerlich wie immer eine sache des programmierers. -> und /sinnvolle/ konstrukte wie 'iVariabel1' habe ich auch schon bei anderen konventionen gesehen)
Elvis untot 10:07, 29. Apr 2004 (CEST)
Die echte Ungarische Notation
BearbeitenHallo!
Leider spiegelt die hier gegebene Beschreibung nicht die "wahre" Intention der UN wider.
Meine kurze Zusammenfassung: Simonyis Absicht war nicht, den (technischen) Datentyp einer Variablen hervorzuheben, sondern deren Typ im Sinne von Art, also der semantischen Bedeutung der Variablen. So kommt es auch, dass Integers, die zB Zeilen oder Spalten in einer Tabelle bezeichnen, den Präfix row bzw. col bekommen, auch wenn es rein technisch Ints sein, die man problemlos miteinanders addieren/subtrahieren/etc. kann -- sinnvoll ist das jedoch nicht, deshalb die UN. Simonyis Ur-Version wird auch als Apps Hungarian bezeichnet, erst später wurde daraus aufgrund einer Microsoft-internen Missinterpretation des engl. Wortes type das heute geläufige System Hungarian, das viele praktische Seiten des Apps Hungarian nicht mehr aufweist.
Quellen:
- Joel on Software - Making Wrong Code Look Wrong - ein aktueller Blogentry dazu
- Meta-Programming: A Software Production Method. Charles Simonyi, December 1976 (PhD Thesis)
- Charles Simonyi's explanation of Hungarian Notation
Was ist zu tun?! Ich finde es äußerst wichtig, das in den Artikel einzuarbeiten, hab im Moment keine Zeit und bin auch relative Wikipedia-unerfahren (deshalb hab ich auch keinen Account :) -- trotzdem werde ich versuchen, mich in den nächsten 2 Wochen ran zu setzten, und es einzuarbeiten -- wenn mir jemand zuvorkommt, hätte ich auch nicht dagegen ;)
Schöne Grüße an alle WP-Autoren, ihr macht verdammt gute Arbeit :) Fabian, 2005-05-11
echter Typ Hallo, ich muss das hier einfach mal loswerden: Im Artikel steht ja jetzt schon, dass Simonyis Absicht war die "Art" der Variablen Hervorzuheben und nicht deren "Typ" (im C Sinne, d.h. eben nicht int, char, etc.).
Was ich mir schon seit Ewigkeiten denke: Das ist immer noch nicht toll. In einer Sprache wie C++ gibt es zunächst einmal "Identifier". Diese werden vom Programmierer praktisch frei gewählt (alles ist erlaubt außer keywords). Identifier können stehen für:
- Typen (z.B. uint32_t)
- Funktionen
- Lokale Variablen
- Globale Variablen
- Parameter von Funktionen/Methoden
- Klassennamen
- Methodennamen
- Variablennamen einer Klasse (members die keine Methoden sind).
Ich selber denke mir immer: Was ich WIRKLICH wissen will ist, für welche Sorte von Konstrukt ein Identifier verwendet wird. Man stelle sich folgenden C Einzeiler vor:
x = y;
Was davon ist eine Variable/Funktion/Typ/Klassenbezeichner ? Das wäre viel einfacher zu lesen wenn es z.B. heisst:
vX = vY;
Das würde mir nämlich sagen hier geht es um die Zuweisung von zwei lokalen Variablen, während
vX = pY;
heißt: Einer lokalen Variable wird der Wert eines Parameters zugewiesen.
Der Witz dabei: So eine Art von Notation würde das Leben des Compilers ebenfalls VIEL einfacher machen; es ist (gerade bei C++) ein echtes Kunststück herauszufinden für was genau (Funktion, Klasse, Variable, Typ...) ein Identifier steht; gäbe es eine feste (erzwungene) Schreibweise, dann würde sich der Compiler VIEL leichter tun... 178.27.85.1 10:52, 19. Mai 2017 (CEST)
...b [beschreibt ] den direkten Offset eines Elementes in einem Array...
BearbeitenHallo! Kann es sein, dass dieser Offset in Bytes angegeben wird? Der Text suggeriert das, sagt es aber nicht deutlich. Und kommt das wirklich von 'Base', wenn es doch den Offset beschreibt, der ja relativ zu einer "Base" angegeben werden müsste?
Ich versuch das mal bei den angegebenen Quellen zu eroieren...
lllf
Hauptintention
BearbeitenVon einer allgemeinen Hauptintention zu sprechen wäre falsch, da es zwei verschiedene Interpretationen der UN gibt. Daher kann das Zuordnen von Typ (im Sinne der Aufgabe der Variable (siehe Apps-Hungarian) im Sinne des Erfinders) auch nicht ansatzweise von IDEs übernommen werden, da die gar nicht in der Lage sind die Aufgabe nachzuvollziehen. Gleiches gilt fürs .NET Framework. Gruß, --zOiDberg (Δ | Α & Ω) 18:05, 6. Sep 2006 (CEST)
- Das ist zwar immer noch Blödsinn, aber egal. Allein die Tatsache, dass es zwei verschiedene "Interpretationen" der UN gibt ist ein Beweis für deren Nutzlosigkeit.
- Ich habe den Satz zu .NET umgeschrieben:
Microsoft empfiehlt für das neue .NET-Framework, die ungarische Notation nicht mehr einzusetzen.
Quelle: [1] -- Tybal 10:23, 8. Sep 2006 (CEST)
- Ich gehe von guten Absichten aus, aber das hier: [2] ist definitiv als POV zu interpretieren. Man kann Systems Hungarian und Apps Hungarian definitiv nicht über einen Kamm scheren! Das Variablennamen auf den ersten Blick kryptisch wirken ist normal bei Namenskonventionen (zumindest bei denjenigen bei denen sich jemand was gedacht hat). Dafür dass die Windows-Programmierer die UN falsch interpretiert bzw. benutzt haben, kann die eigentliche Apps-Un aber nichts. Der geübte Anwender der UN kann den Code sehr wohl lesen, und braucht meistens auch keine expliziten Kommentare da die Variablen sich - bei konsequent eingehaltener AUN - meist selbst erklären. Wie wollen wir also ein für alle mal einen vernünftigen Kompromiss finden?
- Eine Idee POVs (eventuell kann ich mich da ja selbst ebenfalls nicht ausschließen) hier zu vermeiden wäre die Vor/Nachteile komplett rauszunehmen, da die Wikipedia ja nicht wertet. Wenn die verschiedenen Notationen ausführlich erwähnt sind, dann kann sich der Leser ja selbst eine Meinung bilden. In der Form wie das in der letzten Zeit aber immer wieder hinundher editiert wurde kann es aber nicht bleiben. Also entweder klaren Kompromiss, oder Vor/Nachteile weg. Was sagt ihr? -- zOiDberg (Δ | Α & Ω) 16:38, 8. Sep 2006 (CEST)
- Ich meine, dieser Artikel widmet dem Thema UN viel zu viel Aufmerksamkeit. Er sollte auf ein erträgliches Maß zurechgestutzt werden. Zwei große Abschnitte über die beiden UN-Arten halte ich für überflüssig. Ein erläuternden Absatz hierzu ist sicher ausreichend. Auch sind die Tabellen mit den Präfix-Erklärungen zu ausführlich. Man sollte sich auf einige Beispiele beschränken, den Rest kann der interessierte Leser den Weblinks entnehmen Leider habe ich im Moment keine Zeit, mich diesem eher unwichtigen Thema zu widmen. -- Tybal 15:26, 21. Sep 2006 (CEST)
- (Nachtrag:) Noch eine Anmerkung zu Deiner Quelle, wenn Du weiter liest steht dort folgendes (habe das worum es mir geht fett gemacht)
Hungarian notation is the practice of including a prefix in identifiers to encode some metadata about the parameter, such as '''the data type''' of the identifier.
- Wie Du also siehst bezieht sich Microsoft auf deren SUN, nicht AUN. Das also dazu dass die UN abgelehnt wird. Ja, warum lehnen sie es ab? Weil sie es gar nicht richtig verstanden haben! Gruß, -- zOiDberg (Δ | Α & Ω) 17:10, 8. Sep 2006 (CEST)
- Das ist es! Die Welt ist einfach zu blöd, die ungarische Notation zu verstehen. In ein paar Millionen Jahren, wenn die Evolution die menschliche Intelligenz auf ein Mindestmaß für die UN gesteigert hat, kann man es ja nochmal mit ihr versuchen. Bis dahin werde ich mich von ihr fern halten. (SCNR) -- Tybal 15:26, 21. Sep 2006 (CEST)
Die Welt ist wirklich zu blöd. Darf ich hier ein Beispiel direkt von Charles Simonyi zitieren? „Wenn ich in einem Hotel eintreffe, finde ich in meinem Zimmer einen Wecker. Alle Wecker lassen sich individuell einstellen, und es dauert eine Weile, dass man versteht, wie. Und besteht die Gefahr, dass man doch falsch einstellt. Einfacher es mit dem PC. Da grinst auf dich die gleiche Oberfläche, weltweit einheitlich.“ Darum: standardisieren, fast egal, wie. (nicht signierter Beitrag von 193.110.129.66 (Diskussion | Beiträge) 15:16, 3. Apr. 2009 (CEST))
- Soll dieses rumgetrolle irgendwem nutzen? Es geht hier um NPOV, daher ist es sinnig eine Wertung allgemein rauszunehmen. Nur weil Du Dich davon fernhälst, müssen es ja nicht alle tun. Also, wenn es keine Vorschläge gibt, werde ich den Artikel abschließend von POV befreien. -- zOiDberg (δ·β) 03:45, 24. Sep 2006 (CEST)
- Offensichtlich keine Einsprüche. Also kommt der Salat raus. Vor- und Nachteile haben in einer neutralen Enzyklopädie - vor allem bei derartiger Subjektivität - keine Daseinsberechtigung. -- zOiDberg (δ·β) 00:29, 30. Sep 2006 (CEST)
- Vor- und Nachteile können in einer Enzyklopädie sehr wohl z.B. unter der Überschrift Kritik und Apologetik beschrieben werden, sofern die Darstellungsform objektiv ist und der subjektive Inhalt möglichst wertungs- und emotionsfrei und mittels Konjunktiv für indirekte Rede eindeutig als subjektiv wiedergegeben wird. Z.B. könnte ich mir folgendes durchaus als Enzyklopädietext vorstellen: "Kritik und Apologetik - Microsoft rät für .Net von der Verwendung der ungarischen Notation ab [1], ebenso xyz [2]. Gegner der ungarischen Notation werfen ihr vor, ... [3]. Die Befürworter der ungarischen Notation halten dem entgegen, dass zwischen den Varianten SUN und AUN unterschieden werden müsse [4]; ... [5].". In einem solchen Rahmen halte ich es für durchaus sinnvoll, dem Lesen auch für das Thema wichtige subjektive Standpunkte darzulegen. Hält man sich an ein paar Regeln, beide Seiten, keine Wertung, bleibt auch bei der Darstellung subjektiver Standpunkte der NPOV gewahrt. --ChristianHujer 02:09, 3. Jan. 2007 (CET)
- Offensichtlich keine Einsprüche. Also kommt der Salat raus. Vor- und Nachteile haben in einer neutralen Enzyklopädie - vor allem bei derartiger Subjektivität - keine Daseinsberechtigung. -- zOiDberg (δ·β) 00:29, 30. Sep 2006 (CEST)
- Soll dieses rumgetrolle irgendwem nutzen? Es geht hier um NPOV, daher ist es sinnig eine Wertung allgemein rauszunehmen. Nur weil Du Dich davon fernhälst, müssen es ja nicht alle tun. Also, wenn es keine Vorschläge gibt, werde ich den Artikel abschließend von POV befreien. -- zOiDberg (δ·β) 03:45, 24. Sep 2006 (CEST)
UN für Funktionen usw.
BearbeitenWie sieht es mit der Anwendung der UN auf Funktionsnamen, Prozedurnamen, Klassennamen und was es sonst noch so gibt aus? Das fehlt in dem Artikel noch irgendwie ganz. Vieleicht könnten es auch noch ein paar mehr Beispiele sein, z.B. aus der WINAPI und in einer Gegenüberstellung, so macht es MS nach Systems Hungarian und so wäre es nach Apps Hungarian. Gruß --Jörg 17:06, 11. Nov. 2006 (CET)
POV
BearbeitenIch möchte darum bitten, den Abschnitt über die Kritik an der UN nicht mehr zu löschen. Die hier objektiv aufgeführten Punkte sind numal Bestandteil des Themas. Eine Entfernung durch UN-Verfechter ist meiner Meinung nach POV! Siehe auch den Kommentar von ChristianHujer oben. 194.114.62.38 10:54, 11. Jan. 2007 (CET)
- Sicher, die jetztige Darstellung ist völlig objektiv es werden beide Standpunkte dargestellt. Seh ganz genauso! Echt! Total! Ach ne, halt, da gibts ja nur einen Standpunkt. Hm is ja komisch. Im Übrigen wurde die neutrale Schreibweise überhaupt nicht eingehalten: "Erfahrungsgemäß veralten Kommentare aber und werden nicht so gepflegt wie die tatsächliche Programmlogik, sodass Notation und tatsächliche Verwendung irgendwann nicht mehr zusammenpassen." Ja richtig! Wenn man nicht programmieren kann bzw. etwas schlampig ist, dann trifft das zu!
- "Weiterhin erschwere die Ansammlung von kryptischen Abkürzungen die Lesbarkeit des Codes. Insbesondere in objektorientiertem Code bringen die Prefixe keinen Informationsgewinn." Echt? Ich finde ein prgst für eine Objektliste mit Strings recht aussagekräftig.
- Ist das das was unter NPOV verstanden wird? Ich empfehle WP:NPOV. Gruß, -- zOiDberg (δ·β) 02:17, 21. Jan. 2007 (CET)
Der Ursprung des Namens
BearbeitenDer Name „ungarische Notation” hat nicht das geringste mit der ungarischen (oder auch asiatischen) Reihenfolge der Nach- und Vornamen zu tun.
Die Benennung ist wirklich nur darauf zurückzuführen, dass Simonyi selber Ungar ist. Obwohl er es nie erwähnt, es ist mehr als sicher, dass die kategorisierende Methodik seiner Muttersprache ihn bei der Erschaffung der Notation intuitiv beeinflusst habe; vgl. die Weblinks.
Gruß, Hägar Dünor --Keile mit Weile, sagt der Wikingär 15:27, 14. Apr. 2010 (CEST)
Physis
BearbeitenBei Informatik-Texten, die das Wort "physisch" benutzen oder wie hier sogar fortlaufend, kriege ich Pickel. Was ist denn bitte jeweils mit "physisch" gemeint!? Eines der schrägsten Unworte in der Informatik, noch vor "intelligent". --92.224.158.44 01:56, 13. Mär. 2013 (CET)
- Ich stimme dir zu, dass das Wort hier in höchst undurchsichtigen Zusammenhängen verwendet wird. Immerhin bin ich froh, dass es nicht auch noch „physikalisch“ heißt. Im amerikanischen Text des Artikels ist es geringfügig verständlicher, dort ist der Gegensatz „logical“ („was man sich darunter vorstellt“) und „physical“ („was es wirklich ist“). Die Terminologie klingt weniger schräg im Zusammenhang mit virtuellem Speicher, wo ein sehr großer Raum von logischen Adressen auf einen kleinen Bereich physischer Adressen abgebildet wird. In Bezug auf die Datentypen ist die Terminologie aber wirklich ziemlich esoterisch, denn was soll „physisch“ sein an Entitäten, die keine physische Existenz haben, sondern bloß auf dem Papier/in der Vorstellung/im Rechner vorkommen. Mir fehlt momentan die Zeit, die Originalquellen nachzulesen, um Licht in dieses Dunkel zu bringen, aber dein Einwand ist in jedem Fall berechtigt. --Herbert Klaeren (Diskussion) 09:30, 13. Mär. 2013 (CET)
Array-Größe vs. Limit
Bearbeiten"Lim (>Most) Mit Lim wird die Anzahl der Elemente in einem Array angegeben. Damit ist der Index mit dem Namen xxLim größer als das letzte Element und damit ungültig."
Das gilt nur für die Sprachen, deren erstes Element mit 0 indiziert wird - es gibt auch welche, bei denen 10 Elemente von 1-10 indiziert sind, selbst Arrays mit mit n Elementen, die von 0+m bis n+m zählen, sind möglich. Auf das "Anzahl=Max+1" wird hier mehrfach referenziert, bitte anpassen. --Mideal (Diskussion) 11:12, 15. Aug. 2017 (CEST)
Noch einmal POV
BearbeitenHabe den POV-Bepper im Einleitungstext angebracht. Was da zum Datentyp gesagt wird, ist eine Meinung und gehört so in den Absatz "Kritik". Im Übrigen ist dieser Absatz (im Einleitungstext) eine ziemliche Unverfrorenheit gegenüber Generationen von Entwicklern und nicht zuletzt den Autoren des Artikels, die sich bspw. viel Mühe mit den Abschnitten 1.1 und 1.2 gegeben haben. Abgesehen davon fehlt hier auch jeglicher Beleg! --2003:E5:C3D5:14C0:D407:181:9A81:3666 13:09, 8. Jan. 2020 (CET)
Ein Handle ist kein Pointer auf einen Pointer, sondern eine Kennziffer (ID)
BearbeitenIn der Präfix-Tabelle ist zu lesen: h handle Ein Zeiger auf einen Zeiger, also äquivalent zu pp. Fast immer wird h im Zusammenhang mit der Kommunikation mit dem Betriebssystem benutzt
Ein Handle ist (zumindest in der Unix und Windows-Programmierung) kein Pointer auf Pointer, sondern eine Kennziffern im Sinne einer ID (vergleichbar mit den Dateikennziffern in MS-DOS). Entscheidend: Diese ID repräsentiert KEINE Speicheradresse, sondern ist ein "abstrakter" Verweis auf eine Resource. Durch folgende Quelle überprüfbar: "Windows Programmierung - Charles Petzold" 5. Auflage, Seite 54, Abschnitt "Händel mit Handles" --Starcow (Diskussion) 13:59, 3. Mai 2023 (CEST)