Diskussion:Funktion (Programmierung)
Füge neue Diskussionsthemen unten an:
Klicke auf , um ein neues Diskussionsthema zu beginnen.Archiv |
Wie wird ein Archiv angelegt? |
Überarbeitungsbedarf
Ich sehe Ueberarbeitungsbedarf bei diesem Artikel, sowie beim Artikel Prozedur (Programmierung). Grund: Meines Erachtens wird hier die - wenn ich mich nicht irre - aus Pascal stammende Terminologie verwendet und als ein umgreifenderen Konzept dargestellt, waehrend eine andere wichtige Unterscheidung unter den Teppich gekehrt wird: Naemlich die zwischen Funktionen im Sinne der funktionalen Programmierung und Prozeduren im Sinne der imperativen Programmierung. Am besten Liste ich mal die moeglichen Bedeutungen der Begriffe auf, damit man sich ein Bild ueber das Dilemma machen und die weitere Verfahrensweise klaeren kann:
- Funktion
- 1.
- a) eine Abbildung im Sinne der Mathematik, welche jedem Element einer Urmenge genau ein Element einer Bildmenge zuweist (dass selbst hier der Begriff nicht immer einheitlich ist, erspar ich uns mal, traegt hier aber gluecklicherweise auch nicht mehr viel zur Sache bei)
- b) eine Abbildung nach Vorbild von Funktion (1a) in einer Porgrammiersprache, speziell einer funktionalen Programmiersprache
- 2. eine bestimmte Sorte von Objekten in einer (abtrakten) Maschine fuer funktionale Programmiersprachen, meist abgeleitet aus einer Funktion (1b) oder deren Anwendung
- 3.
- a) (Pascal-Jargon) eine Prozedur (1), die keine Prozedur (3) ist
- b) (C-Jargon) eine Prozedur (1) (oder bisweilen auch eine Methode)
- 1.
- Prozedur
- 1. eine Subroutine, besonders in der imperativen Programmierung
- 2. („Prozedur-Aufruf“, „Prozedur-Segment“) ein Teil der Auswertungsmethodik eines Programms auf einer (abstrakten) Maschine fuer imperative Programmiersprachen (z.B. P-Code), meist abgeleitet aus einer Subroutine (1)
- 3. (Pascal-Jargon) eine Subroutine, die keinen Rueckgabewert hat
Ihr seht also: Das ganze Ding hat ein bisschen was von Brechts „Kritiker -> X -> U -> Kritiker“ (Ich moechte fast Wetten, irgendwer findet noch eine weitere Definition von Prozedur, die auf einen Definitionspunkt von Funktion zurueckgreift... *g*) Und eben deshalb bin ich mit dem derzeitigen Stand ein wenig ungluecklich. Versteht uebrigens das „Pascal-Jargon“ und „C-Jargon“ nicht falsch: Ich habe nichts dagegen, diese Begriffe zu verwenden, und beide Idiome sind definitiv schon ueber die Gemeinde der jeweiligen Programmierer hinausgewachsen (es gibt z.B. Leute, die ausschlieszlich Java koennen, aber dennoch Pascal- oder C-Sprechweise verwenden). Ich finde es nur wichtig, dass in der Wikipedia eben etwas genauer drauf geschaut wird - technisch gesehen laufen zum Bespiel Prozeduren (3) und Funktionen (3a) gleich ab, waehrend Funktionen (1b) und Funktionen (3b) herzlich wenig miteinander gemein haben. --FAR 08:39, 7. Dez 2005 (CET)
- Ad 3)a): in Pascal ist eine Funktion eine Prozedur, die einen Wert zurückliefert.
Ich stimme zu, dass man, wenn man eine Unterscheidung trifft, angeben sollte, auf welcher Grundlage man das tut (also explizit angeben, dass diese Unterscheidung in Pascal getroffen wird).
- Ansonsten ist das ganze ziemliche Wortklauberei. In C sind die Pascal-Prozeduren einfach Funktionen, die nichts (void) zurückliefern. Eine einleuchtende Sichtweise und darüber hinaus einfacher. In Java werden Funktionen als Methoden bezeichnet, um die Zugehörigkeit zu einem Objekt zu betonen. Gut, nett und alles, ändert aber nichts daran, dass sie wie Funktionen aufgebaut sind und letztlich im Speicher (fast) genauso behandelt werden.
- In Perl heißt dasselbe dann sub (von Subroutine). (nicht signierter Beitrag von 213.47.151.120 (Diskussion) 23:36, 26. Jan. 2006 (CET))
Unterstützende Sprachen / Beispiele
Dieses 'Programmkonstrukt' wird nur von höheren Programmiersprachen und dort auch nur von manchen unterstützt. Ich halte es für zweckmäßig, diese Sprachen aufzuführen. Der bisherige Abschnitt 'Beispiele' könnte dazu verwendet werden, ggf. in '~Unterstützende Sprachen' umbenennen. Inhaltlich könnte dort je Sprache (vielleicht für alle Sprachen einheitlich) ein Codebeispiel für die Deklaration und eines für den Aufruf (evtl. mit und ohne Aufrufparameter) gezeigt werden, erforderlichenfalls weitere Anmerkungen (möglichst kurz; kein Programmierkurs!). Meinungen? --VÖRBY (Diskussion) 12:41, 21. Jun. 2014 (CEST)