Ungarische Notation und Sichtbarkeits-Präfix-Verständnisproblem


  • Mod

    Bashar schrieb:

    Und?

    😕 Naja, number und count heißt was anderes und daher würde ich in einem Programm auch eine andere Bedeutung erwarten. Bei Count_of_events (in welcher Schreibweise auch immer) würde ich etwas Erwarten was bei jedem Event um 1 erhöht wird. Bei number_of_events würde ich irgendeine Gesamtzahl erwarten, also etwas das nicht mehr erhöht wird. Macht im Zusammenhang mit Events natürlich nicht so viel Sinn. Etwas wie Number_of_events_in_the_last_minute wäre eine Möglichkeit.



  • SeppJ schrieb:

    Bashar schrieb:

    Und?

    😕

    Auf der von dir verlinkten Seite stand als Übersetzung für count "Zahl". "Anzahl" nicht, und damit hab ich unrecht und du recht. Halte ich nur für Haarspalterei und völlig am Thema des Threads vorbei.



  • wenn count nicht Anzahl heißen kann, wie übersetzt man denn dann den gängigen Ausdruck "low part count" ??





  • Helium schrieb:

    Natürlich heißt "count" als Substantiv "Anzahl".

    Aber leo ... 😉



  • Bashar schrieb:

    Helium schrieb:

    Natürlich heißt "count" als Substantiv "Anzahl".

    Aber leo ... 😉

    Und 'counter' ist jetzt der Schalter am Airport, Bahnhof oder was? 😕 Mit vergleichender Sprachenanalyse kommen wir in der Programmierung nicht weiter. Wenn ich in einem Programm so einen 'counter' einfach hund oder weil integer iHund nenne, so ist es egal. Ich bin doch vollkommen frei, auch wenn ich gerade keine Hunde sondern vielleicht Kunden zähle!

    Verwendet euren Gehirnschmalz auf andere Dinge! 😃



  • Außerdem gibt's ja auch sowas wie Allgemeinwissen im Gebiet der Informatik. Und 99% der Softwareentwickler kennen "count" als "Anzahl" und nicht als Graf. Hat sich halt etabliert und das ist auch gut so.



  • Verwendet euren Gehirnschmalz auf andere Dinge! 😃

    Wollen wir doch. Wir werden nur von Leuten wie dir daran gehindert, die immer noch UN benutzen oder einen Zähler "hund" oder "iHund" nennen (ist UN bei Apple eigentlich beliebt?).



  • Nun "iHund" beantwortet doch die Frage, oder?



  • Wann kommt eigentlich der iHund in den Applestore?



  • HighLigerBiMBam schrieb:

    Wann kommt eigentlich der iHund in den Applestore?

    http://itunes.apple.com/at/app/idog/id375658563?mt=8 :p



  • Shade Of Mine schrieb:

    HighLigerBiMBam schrieb:

    Wann kommt eigentlich der iHund in den Applestore?

    http://itunes.apple.com/at/app/idog/id375658563?mt=8 :p

    Schöner Hinweis auf iDog für iHund zum Abschluss dieses Themas.
    IchNichtWissenMehr, wäre nach ungarischer Notation (bool) bIchNichtwissenMehr = 1; daddeldu! :p

    Gibt es noch andere Themen hier im Forum? Ich bin gerne bereit, etwas dazu zu sagen und ich vetrage jederzeit auch herbe Kritik von Fundamentalististen. 😞

    Eine solche Diskussion kann vielleicht hilfreich sein, hat aber doch wenig mit 'Rund um die Programmierung' zu tun.



  • Hi,

    für einfache Laufvariablen in Schleifen (for...) nehme ich aus alter FORTRAN-Gewohnheit immer noch i, j, k, l, m und n und erwarte eigentlhc von jedem der nur halbwegs über den Tellerand gucken kann, daß er begreift, das das nur eine Schleifenvariable ist.
    Wer damit nicht zurecht kommt, sollte mal über siene grundsätzliche Eignung für diese Tätigkeit nachdenken.
    Gerade durch die Kürze auf einen Buchstaben dokumentiert ja so eine Variable, das sie nichts von irgend einer Beduetung ist, sondern nur eine Laufvariable.

    Gruß Mümmel



  • muemmel schrieb:

    Hi,

    für einfache Laufvariablen in Schleifen (for...) nehme ich aus alter FORTRAN-Gewohnheit immer noch i, j, k, l, m und n und erwarte eigentlhc von jedem der nur halbwegs über den Tellerand gucken kann, daß er begreift, das das nur eine Schleifenvariable ist.
    Wer damit nicht zurecht kommt, sollte mal über siene grundsätzliche Eignung für diese Tätigkeit nachdenken.
    Gerade durch die Kürze auf einen Buchstaben dokumentiert ja so eine Variable, das sie nichts von irgend einer Beduetung ist, sondern nur eine Laufvariable.

    Gruß Mümmel

    Nehmen wir das mal als Beispiel.

    for( int i=0; i < 20; ++i)
    {
       for( int j=0; j < 20; ++j)
       {
          werte[j*20+i] = 123;
       }
    }
    

    So, wer sieht den logischen Fehler den der Programmierer gemacht hat?

    Jetzt das ganze mal mit "sinnvollen" Variablen:

    for( int row=0; row < 20; ++row)
    {
       for( int column=0; column < 20; ++column)
       {
          werte[column*20+row] = 123;
       }
    }
    

    Da könnte man schon eher drauf kommen das er row*20+column gemeint hat... Alte Gewohnheiten sind nicht zwangsläufig gute Gewohnheiten. Oft sind sie einfach nur alt...



  • Ich habe nicht den ganzen Thread gelesen (das Thema ist mir mittlerweile auch zu blöd), aber ich finde es immer wieder erstaunlich, wie gegen die UN damit argumentiert wird, dass sprechende Bezeichner doch viel besser wären. Als ob das ein Widerspruch wäre. Sprechende Bezeichner sprechen nicht leiser, wenn noch ein Präfix davorsteht, ganz im Gegenteil. Wer das Präfix zu interpretieren weiß, bekommt doch sogar noch mehr Informationen. Und "Search for declaration" im VS ist ja wohl das dümmste Argument der ersten 3 Seiten (mehr habe ich nicht gelesen). Wenn ich ohne UN den Typ einer Variablen wissen will, dann springe ich doch nicht jedesmal zur Deklaration (machst du das??). Dafür gibt es Tooltips.

    Ich nutze die UN übrigens kaum noch, auch wenn sich das für den ein oder anderen so anhören mag (Pointer kennzeichne ich z.B. gerne noch). Ich finde nur die Argumentation dagegen teilweise äußerst fragwürdig (wie gesagt, sprechende Bezeichner und UN sind absolut nicht widersprüchlich). Dass die UN mit all den C++-Konzepten aber leicht überfordert ist, sollte klar sein (sie kann höchstens noch teilweise vernünftig angewendet werden).



  • @loks Ersetze row/col durch y/x und du hast wieder die kurzen Variablen mit demselben Informationsgehalt.



  • So, hab's jetzt duchgelesen...
    Ich nutze die UN nur für dieses (prozedurale) Projekt. Normalerweise sind meine Projekte objektorientiert.
    Also, keine Antwort auf meine eigentliche Frage (welche sechs Seiten Flamewar ausgelöst hat)?



  • _matze schrieb:

    Sprechende Bezeichner sprechen nicht leiser, wenn noch ein Präfix davorsteht, ganz im Gegenteil.

    Ja, sie quatschen wie ein Wasserfall und erzaehlen dann auch noch manchmal bloedsinn. (Beispiel: lpsz - das ist kein long pointer und schon garnicht ein pointer auf einen string, denn das waere dann ja ein char** ;))

    Abgesehen davon dass UN in Sprachen indenen man eigene Typen definieren kann komplett ueberfordert ist.



  • loks schrieb:

    for( int i=0; i < 20; ++i)
    {
       for( int j=0; j < 20; ++j)
       {
          werte[j*20+i] = 123;
       }
    }
    

    Übrigens, for ist kein Funktionsaufruf und eingerückt wird mit 4 Leerzeichen und nicht mit 3, und Leerzeichen sollte man auch richtig setzen. Und die "int" sollte man auch nicht verwenden, und die Variablen sollten raus aus den Schleifen, damit man sieht, wieviele Variablen man in der Funktion hat oder wie Scheiße der Code ist:

    size_t i = 0u;
    size_t j = 0u;
    
    for (i = 0u; i < 20u; ++i)
    {
        for (j = 0u; j < 20u; ++j)
        {
            werte[(20u * j) + i] = 123;
        }
    }
    

    Heikles Thema 😉 :p



  • abc.w schrieb:

    und die Variablen sollten raus aus den Schleifen

    *würg* ;). Am Besten deklariert man noch alle Variablen als erstes in der Funktion, damit man weiß, was einen erwartet 😉

    Aber ich glaube wir sind uns einig, dass es egal ist, welche Notation man verwendet, solange der Code am Ende nicht so aussieht:

    //[OK] I don't know what this does. someone else should find out.
    double a, b, c, d, e, d1, d2;
    double t = 0.0;
    double oldA, oldB, diff, scale, det;
    double err = 0.0;
    double value, p;
    double lambda = 0.001;
    double olderr = 1e100;
    int pos = 0;
    int neg = 0;
    int i, ic = dataset.size();
    
    for (i = 0; i < ic; i++)
    	if (dataset.label(i) == 1)
    		pos++;
    	else
    		neg++;
    
    double A = 0.0;
    double B = log((neg + 1.0) / (pos + 1.0));
    double lowTarget = 1.0 / (neg + 2.0);
    double highTarget = (pos + 1.0) / (pos + 2.0);
    RealVector pp = RealScalarVector(ic,(pos + 1.0) / (pos + neg + 2.0));
    int count = 0;
    int it;
    for (it = 0; it < 100; it++)
    {
    	a = b = c = d = e = 0.0;
    	for (i = 0; i < ic; i++)
    	{
    		t = (dataset.label(i) == 1) ? highTarget : lowTarget;
    		d1 = pp(i) - t;
    		d2 = pp(i) * (1.0 - pp(i));
    		value = dataset.input(i)(0);
    		a += d2 * value * value;
    		b += d2;
    		c += d2 * value;
    		d += d1 * value;
    		e += d1;
        }
        //usw...
    }
    

Anmelden zum Antworten