Diskussion:Parameter (Informatik)

aus Wikipedia, der freien Enzyklopädie

Ausgabe bei Wertergebnisparametern

Die Ausgabe bei Wertergebnisparametern im Bereich "Beispiel für verschiedene Parameterübergaben" sollte mal überprüft werden. Dort steht: "50 5" "6 oder 50"

Sie kann meiner Meinung nach nicht stimmen. 1. Wieso ist bei der ersten Ausgabe nach dem ersten Aufruf von test mit test(a, a) kein "oder" angegeben, obwohl es doch auch in dem Fall zwei Möglichkeiten gäbe, je nach dem, welcher Wert zuerst in das ursprüngliche a zurück gespeichert wird? 2. Meiner Meinung nach ist die Angabe "50 5" aber sowieso falsch. b wird ja schließlich gar nicht verändert. Und a kann 6 oder 50 sein. 3. Wieso ist in der Beschreibung nur vom zweiten Aufruf von test die Rede (Zitat: "Erklärung: Beim zweiten Aufruf von test werden [...]")? Im Übrigen stimmt die zweite Ausgabe auch nur, falls die erste so stimmt.

Da vielleicht auch ich einfach nur einen Denkfehler habe, habe ich die Korrektur nicht selbst vorgenommen. Würde mich freuen, wenn jemand anderes auch nochmal darüber schaut. (Vier Augen sehen mehr als zwei :-) (nicht signierter Beitrag von 77.189.154.255 (Diskussion) 11:06, 16. Mär. 2011 (CET))

\begin comment:

Sehe das genauso! Der Fall gilt nur für test(a,b) als ersten Aufruf von test. Angegeben ist jedoch test(a,a). Für test(a,a) müsste es heißen:

1. Ausgabe: (6 oder 50) 4

2. Ausgabe: 5 oder 40

\end comment (nicht signierter Beitrag von 217.235.241.67 (Diskussion) 17:43, 3. Apr. 2011 (CEST))

Parameter vs Argument

Gibt es nicht auch die Unterscheidung zwischen Argument (hier: aktuelle Parameter) <-> Parameter (hier: formale Parameter)?

war schon mal in der Diskussion und wird von mir weiterhin verneint. Ähnelt der Jam/Marmelade bzw. Beer/Lager Diskussion, Stichwort: ein Parameter ist ein formaler Parameter?! Argument und Parameter können mE nahezu synonym verwendet werden. Bei mathematischen Funktionen spricht man von Argument, bei Unterprogrammen von Parametern, bei der Parameterübergabe (nicht Argumentübergabe) wird der aktuelle Wert des Arguments, also der aktuelle Parameter, an den formalen Parameter der Funktionsdefinition übergeben. Die mir vorliegende Literatur spricht ebenfalls von aktuellen/formalen Parametern. Wollten wir die feinsinnige (?) Argument/Parameter-Unterscheidung vornehmen, könnten wir nicht mehr erklären, was ein formaler Parameter und ein aktueller Parameter sein soll. --Hubi 09:17, 29. Nov 2004 (CET)
Ich habe in meinen Mathematik Vorlesungen mal eine sehr klare Defintion fuer beide Begriffe kennengelernt: Argument ist, das was man einer Funktion uebergibt. Ein Parameter ist die Unbekannte in einer Funktion, also das was von aussen veraendert (parametrisiert) werden kann. Mache mich mal auf die Suche fuer Belege dafuer. -- Gruss sparti 08:53, 20. Okt 2005 (CEST)
Jo, das ist auch das, was ich gerade einwenden wollte: zumindest bei den Mathematikern ist das recht klar definiert. Eine Funktion nimmt eine Variable als Argument, ein Parameter bestimmt etwa eine bestimmte Funktion aus einer Funktionsschar anzugeben. Schau einfach mal bei Parameter (Mathematik) nach. Keine Ahnung, ob die Informatiker da etwas nachlässiger mit den Unterscheidungen sind. --130.243.160.120 12:31, 19. Dez. 2006 (CET)
Man sollte zumindestens mal darauf hin weisen, was ein Argument wäre.
In den Sprachstandards von C/C++ ist nicht von aktuellen/formalen Parametern die Rede, sondern von Argumenten/Parametern. -- Praxitel 15:44, 28. Aug 2006 (CEST)
Auch ich kenne die Unterscheidung wie in en:Parameter (computer science)#Parameters and arguments beschrieben, und habe sie auch immer so gehört. Es liegt auch ein Buch (Ullenboom, Java ist auch eine Insel) und ein Skriptum (Java) vor mir, in denen das genau so zum Ausdruck kommt.
Im (Amerikanisch-)Englischen werden anscheinend Parameter und Argument überhaupt synonym, und dann auch lieber argument verwendet. Dazu liegt mir ein Buch im Original (Sierra, Bates, Java 2 – Sun Certified Programmer & Developer) und eines in einer Übersetzung (Bjarne Stroustrup, Die C++ Porgrammiersprache) vor.
Ich fände es also auch gut wenn dem Argument im Artikel die Ehre zukommen würde die ihm gebührt. --Geri, 19:21, 25. Jan. 2008 (CET)
Erledigt. --IrrwahnGrausewitz blah 19:08, 26. Sep. 2010 (CEST)

Liste (Datenstruktur)

Eine Liste (Datenstruktur) ist für eine Parameterübergabe eine überaus schlechte Wahl. Normalerweise müssen die Werte in einen Speicherbereich geschrieben werden, wobei eine Prozedur wahlfreien Zugriff auf die einzelnen Parametern haben muss. Sprachen wie Fortran verwenden einfach beim Kompilieren festgelegte Adressen und sparen sich spezielle Speicherallokation und jeglich Suche, verzichten aber auf Rekursion in der Programmierung. Pascal und C verwenden meist den Stack, der sowieso existiert und über Addition/Subtraktion des Stapelzeigers schnell und mit konstanter Zeit O(1) alloziert werden kann. Neuere Compiler verwenden wenn möglich Register, was noch schneller ist, neue Prozessoren haben ja viele davon. Die Prozedur kann dann mit O(1) auf die Register zugreifen, oder mit O(1) Stapelzeiger-relativ auf die Werte auf dem Stack. Eine Liste ist gut beim Hinzufügen oder Löschen von einzelnen Werten O(1), eine Operation, die bei Parametern niemals gebraucht wird. Der Aufbau und die Allokieren ist zeitaufwendig O(n) und dazu unter Umständen noch spezielle Allozierungsalgorithmen, der Zugriff auf einzelne Parameter mit O(n) untragbar. Höchstens LISP oder Interpretersprachen könnten Listen verwenden. --Hubi 09:24, 13. Mär 2005 (CET)

Beispiel-Code für verschiedene Parameterübergaben

Muss es im Code zu dem Beispiel, in Zeile 9 nicht heissen: test(a,b) ? Sorry falls ich mich irre, vielleicht hilft dann aber eine genauere Erklärung dazu (nicht nur zum zweiten Aufruf).

Im Fall von Call-by-reference, wenn ich test(a,a) aufrufe, dann bleibt b unberüht. b wird aber (in Zeile 8) mit 4 definiert. Dann kann das print(a,b) in Zeile 10 mit Ausgabe 50 5 nicht stimmen. Wo liegt der Fehler?

Ich finde diesen Abschnitt im Artikel total für'n Eimer. Was soll denn das? Lieber die Beispiele einzeln eklären, also eine Quelltext in irgendeiner (Pseudo?)Programmiersprache.

Weitere Strukturierung

ich vermisse Begriffe wie Installations-Parameter, Konfigurations-Parameter, Laufzeit-Parameter. Gehören die nicht auch hierher? Oder würdet ihr diese bei Installation (Computer), Konfiguration (Computer), Laufzeit (Informatik) unterbringen? Meiner Meinung nach passen sie besser hierher. -- Abubiju 15:26, 27. Mär 2006 (CEST)

Geschlecht

Im Artikel werden neutrale Parameter (das) und männliche Paramter (der) verwendet. Was ist korrekt?


Laut der Online-Suche des Duden ist der Parameter korrekt. --Gnutra 10:43, 23. Apr. 2007 (CEST)

Type-Hinting

Ich hatte eigentlich vor, eine eigene Seite für den Begriff Type-Hinting zu erstellen, bin aber zu der Meinung gekommen, dass der Begriff eher hier behandelt werden sollte. Type-Hinting meint das Vorgeben von Datentypen beim Aufruf einer Funktion in der imperativen Programmierung. Type-Hinting ist in vielen Programmiersprachen (C, C++, Java, und einige mehr) Pflicht (das Auslassen ist ein Syntax-Fehler), während Skriptsprachen häufig nicht einmal die Möglichkeit bieten Type-Hinting zu verwenden.

  • Ein Beispiel aus C++ (nur die Funktionsdeklaration): int max(int a, int b);
  • Ein Beispiel aus PHP (ebenfalls nur die Funktionsdeklaration): function max($a,$b);

Den Begriff "Type-Hinting" habe ich aus der Dokumentation der Scriptsprache PHP entnommen; ich habe ihn allerdings auch in Verbindung mit Python gefunden. Ich persönlich bin der Meinung, dass dieser Begriff durchaus relevant für das Wiki ist, das mag aber daran liegen, dass ich recht viel mit Programmierung zu tun habe.--Gnutra 10:43, 23. Apr. 2007 (CEST)

Den Begriff Type-Hinting lese ich hier zum ersten Mal. Ich kenne das als Parametertypisierung; ja gerade auch in den von dir genannten Sprachen C[++] und Java.
Möglicherweise haben sie sich bei PHP 5 nicht getraut das anders zu nennen, da PHP trotzdem nach wie vor schwach typisiert ist.
Ich werde den Abschnitt also entsprechend umbenennen/-formulieren, wenn nicht noch jemand in absehbarer Zeit Überzeugendes dazu zu sagen weiß. --Geri, 18:47, 25. Jan. 2008 (CET)
Für statisch typisierte Sprachen wie C++, Java etc. würde ich den Begriff Parametertypisierung, für dynamisch typisierte wie PHP, Perl, Python etc. Type-Hinting verwenden. Für letztere steht der Typ ja allgemein nicht fest, kann durch das Hinting aber eben eingeschränkt werden. Bei ersteren ist das kein Hint, sondern feste Vorgabe, eben die Typisierung des formalen Parameters.2003:CA:A3E1:17F5:BCCA:65A:1CBB:79FC 23:09, 7. Mär. 2017 (CET)

Nicht "call", sondern "pass"

Von "Aufruf" (engl. "call") spricht man bei Prozeduren oder Funktionen, aber nicht bei Parametern. Parameter werden "übegeben" (engl. "pass"). Daher ist "call by value" usw. falsch. Stattdessen muss es "pass by value" usw. heißen.

Über die Korrektheit der Bezeichnungen kann man sich streiten, "call-by-value" (bzw. -reference) ist jedoch ein feststehender und auch gebräuchlicher Begriff. "Pass-by-value" habe ich noch nie gehört, scheint aber auch gebräuchlich zu sein (800000 Treffer bei Google). -- Gnutra 21:13, 20. Okt. 2009 (CEST)

IN, OUT, IN-OUT Paramter

Es wäre schön, wenn im Artikel auf IN, OUT, IN-OUT Parameter eingegangen und diese erklärt würden. (nicht signierter Beitrag von 134.91.4.52 (Diskussion | Beiträge) 17:49, 4. Apr. 2009 (CEST))

Ergebnisparameter

Die Aussage zu Ergebnisparametern (Rückkopieren nach Beenden der Funktion) ist leider nicht mit Quellen belegt und wird in einigen gängigen Systemen anders implementiert (z.B. in C#), nämlich als einfache Referenzübergabe. Der Unterschied zur letzteren ist dann lediglich, dass keine vorherige Initialisierung notwendig ist (sondern in der Methode geschieht). Der Textabschnitt sollte darauf hinweisen oder gleich ganz überarbeitet werden. --Wolf. 17:16, 14. Jun. 2009 (CEST)