Seite 1 von 2

Warum i?

Verfasst: Sonntag 26. April 2009, 23:34
von jerch
Hier mal eine etwas seltsame Frage:
Wie kommt es, das viele Programmierer i als Schleifenvariable einsetzen? Hat das ein Herr Knut oder sonstiger Programmierguru als "weiche Konvention" eingeführt?

Edit: Typos, lots of 'em

Verfasst: Sonntag 26. April 2009, 23:49
von DasIch
Wenn man das Objekt mit i bezeichnet weiß jeder sofort worum es sich handelt. Deswegen benutzt man z.B. am besten überall die selbe Konvention für Bezeichnungen. Das sind einfach Dinge die dass verstehen erleichtern.

Verfasst: Sonntag 26. April 2009, 23:56
von anogayales
Das i steht meines Wissens für integer.

Kann mich aber auch täuschen :P

Verfasst: Montag 27. April 2009, 00:11
von BlackVivi
Ich zitiere mal die englische Wikipedia:
Wikipedia hat geschrieben:A common identifier naming convention is for the loop counter to use the variable names i, j and k (and so on if needed), where i would be the most outer loop, j the next inner loop, etc. The reverse order is also used by some programmers. This style is generally agreed to have originated from the early programming of FORTRAN, where these variable names beginning with these letters were implicitly declared as having an integer type, and so were obvious choices for loop counters that were only temporarily required. The practice also dates back further to mathematical notation where indices for sums and multiplications are often i, j, etc.

Verfasst: Montag 27. April 2009, 00:11
von jerch
DasIch hat geschrieben:Wenn man das Objekt mit i bezeichnet weiß jeder sofort worum es sich handelt. Deswegen benutzt man z.B. am besten überall die selbe Konvention für Bezeichnungen. Das sind einfach Dinge die dass verstehen erleichtern.
Damit erklärst Du eher die Sinnhaftigkeit von Konventionen im Allgemeinen, ich meinte aber das i im Speziellen. Man könnte ja auch einen anderen Buchstaben oder einen sprechenderen Namen nehmen (was ja auch gemacht wird), trotzdem fällt die i-Affinität auf.

@anogayales:
Du meinst so eine Art Denkabkürzung eines Programmierers:
- brauche Zählvariable
- hm, muß integer sein
- Wie nenn ich die bloß?
- hm, ein integer, ..., int, .. ah i
- super, i funktioniert prima
Klingt schon irgendwie einleuchtend, zumindest nachvollziehbar.

Edit:
Danke BlackVivi, sowas hatte ich gesucht. Gerade die Sache mit der mathematischen Notation leuchtet ein. (Nein ich frage jetzt nicht warum das da i, j, k... heißt)

Verfasst: Montag 27. April 2009, 00:36
von jerch
Falls doch jmd. die Semiotik der math. Notation interessiert, habe ich hier etwas gefunden.

Verfasst: Montag 27. April 2009, 08:05
von Hyperion
Hui ... das ist ganz schön lang. Daher werfe ich mal meine Theorie ein, ohne es gelesen zu haben ;-)

i ist ja die römische 1. Und evtl. wurde es deswegen in der Mathematik gerne verwendet, quasi der erste Index.

Verfasst: Montag 27. April 2009, 08:34
von Rebecca
Meine Vermutung: i wie Index. Mathematiker koennen da sehr fantasielos sein. :wink: (f fuer Funktion, n fuer natuerlich Zahl, V fuer Vektorraum, H fuer HIlbertraum, v fuer Vektor, ...) Und da Indezes gerne natuerliche Zahlen sind, trifft man n und m als Indezes auch nicht so ganz selten an...

Verfasst: Montag 27. April 2009, 08:53
von CM
Möchte Rebecca da ganz klar unterstützen: i ist in der Regel die erste Indexvariable einer Gleichung und wenn mehr gebraucht werden folgen zwanglos j und k und l .... Und da gerade die Informatik gerade in ihren Anfängen sehr nahe an den mathematischen Fakultäten war, wurden eben auch naheliegende Teile der Formelsprache übernommen.

Verfasst: Montag 27. April 2009, 13:31
von Guetta
Und jetzt das Lexikon um alle Zweifel zu beseitigen:

„i“ bezeichnet in der Mathematik, Physik und Informatik eine „Indexvariable“ welche von einer „Indexzahl“ abstammt.
Indexvariablen sind Daten die als Anfangs-, Mittel- oder Endwert einer Berechnung die zeitlichen Veränderungen übersichtlicher aufbereiten.
Weitere Indexvariablen sind: j, k; m, n

Verfasst: Montag 27. April 2009, 13:58
von Rebecca
:?: Was ist das denn bitte fuer ein Lexikon?

Versteh ich nicht, muss ich jetzt mein Mathe-Diplom wieder abgeben...?

Verfasst: Montag 27. April 2009, 14:50
von Guetta
Sorry, war in der Zeile verrutscht, hab's berichtigt, jetzt sollte es verständlich sein.

Verfasst: Montag 27. April 2009, 15:13
von Rebecca
Nicht viel besser, aber die Wortwahl laesst darauf schliessen, dass es sich hier um Physiker-Mathematik handelt, die kann man als Mathematiker nicht verstehen. :wink:

Verfasst: Montag 27. April 2009, 22:19
von Guetta
Dann macht der Physiker es eben Mathematiker gerecht.
Eine Indexvariable ist eine Variable deren Wert sich im Laufe einer Berechnung verändert, sie kann sowohl Anfangs-, Mittel- als auch Endwert sein.

Code: Alles auswählen

i = 0

while i < 100:
  i = i + 1
    print i
Hier ist die Indexzahl (der Wert) 0, welche zur Indexvariablen i wird. Im Beispiel wird dem Wert der Indexvariablen bei jedem Durchlauf eine 1 angerechnet, bis sie beim Wert 100 angekommen ist.
Die Indexvariable i nimmt also im Laufe des Prozesses erst den Wert 1 an, dann den Wert 2, dann 3,.... bis sie schließlich den Wert 100 hat.
Im Beispiel ist die Indexvariable sowohl Anfangs-, Mittel- als auch Endwert.


Wenn das nicht einleuchtet musst du das Mathe-Diplom wieder abgeben. :wink:

Verfasst: Dienstag 28. April 2009, 05:32
von BlackJack
Eine Variable die sich im Laufe der Berechnung *verändert*!? Ich dachte so etwas gibt es in der Mathematik nicht. Weder Zeit ("im Laufe") noch Variablen die nicht beliebig *aber fest* sind. Insbesondere Zeile 5 ist mathematisch gesehen blanker Unsinn, weil 1 nicht das neutrale Element bezüglich der Addition ist. ;-)

Verfasst: Dienstag 28. April 2009, 06:52
von Leonidas
BlackJack hat geschrieben:Eine Variable die sich im Laufe der Berechnung *verändert*!? Ich dachte so etwas gibt es in der Mathematik nicht. Weder Zeit ("im Laufe") noch Variablen die nicht beliebig *aber fest* sind.
Also sind wir von Physiker-Mathematik zu Informatiker-Mathematik gekommen ;)

Wobei ich aber zugeben muss, dass ich nicht ganz sehe wo das Problem ist... Rebecca meinte das "i" für "Index" steht, was soweit auch einleuchtet und die Frage des OP beantwortet.

Verfasst: Dienstag 28. April 2009, 16:24
von lunar
BlackJack hat geschrieben:Eine Variable die sich im Laufe der Berechnung *verändert*!? Ich dachte so etwas gibt es in der Mathematik nicht.
Auch die Mathematik hat eine Art "Laufvariable", um iterative Berechnungen auszudrücken. In einem Summenausdruck steht "i" (unterhalb des Summenzeichens) ja nicht für einen fixen Wert, sondern für einen sich verändernden Index.

Verfasst: Dienstag 28. April 2009, 21:27
von BlackJack
@lunar: Nicht wirklich, die Vorstellung kommt nur zustande, wenn man sich den zeitlichen Ablauf denkt, wenn man das mit konkreten Werten ausrechnen möchte. Innerhalb des Teilausdrucks wo das `i` steht, ist es fest.

Verfasst: Dienstag 28. April 2009, 21:50
von gkuhl
Zeitliche Variabilität? Jetzt weiß ich auch endlich was der Punkt über dem "i" bedeutet... :roll:

Verfasst: Dienstag 28. April 2009, 22:00
von Rebecca
Ich habe zwar nichts dagegen, wenn man einen Index als Laufvariable bezeichnet, moechte aber BlackJack zustimmen.

Um bei dem Beispiel der Summe zu bleiben: Das Summenzeichen ist ja eine Schreibweise fuer die Gesamtheit der Summanden, also alle auf einmal, da ist nichts, was sich "im Laufe der Zeit aendert". Ist so aehnlich wie mit Mengenschreibweisen: M = {a in A | a>0}, da sagt man ja eigentlich auch nicht, dass a "sich veraendert".

Naja, der Begriff Index ist in der Mathematik eh nur eine praktische Benamsung (und nichts, was definiert wird oder bestimmte Eigenschaften hat, wie es der Lexikoneintrag suggeriert), von daher ist es muessig, darueber zu diskutieren.