Ich gehe hier mit einer anderen Antwort vor: In der Praxis gibt es keinen Unterschied , mit der geringfügigen Ausnahme, dass "Methode" sich normalerweise auf ein Unterprogramm bezieht, das einem Objekt in OO-Sprachen zugeordnet ist.
Die Begriffe "Prozedur, Funktion, Unterprogramm, Unterprogramm und Methode" bedeuten alle dasselbe: ein aufrufbares Unterprogramm innerhalb eines größeren Programms. Es ist jedoch schwierig, eine Definition zu finden, die alle Variantennutzungen dieser Begriffe erfasst, da sie nicht konsistent in allen Programmiersprachen oder Paradigmen verwendet werden.
Man könnte sagen, eine Funktion gibt einen Wert zurück. Die folgende C-Funktion gibt keinen Wert zurück:
void f() { return; }
... aber ich bezweifle, dass Sie jemanden finden würden, der es eine Prozedur nennen würde.
Sicher, in Pascal geben Prozeduren keine Werte zurück, und Funktionen geben Werte zurück, aber das ist nur eine Widerspiegelung dessen, wie Pascal entworfen wurde. In Fortran gibt eine Funktion einen Wert zurück und eine Unterroutine gibt mehrere Werte zurück. Nichts davon erlaubt es uns jedoch, eine "universelle" Definition für diese Begriffe zu finden.
Tatsächlich bezieht sich der Begriff "prozedurale Programmierung" auf eine ganze Klasse von Sprachen, einschließlich C, Fortran und Pascal, von denen nur eine den Begriff "Prozedur" verwendet, um etwas zu bedeuten.
Nichts davon ist also wirklich konsistent. Die einzige Ausnahme ist wahrscheinlich "Methode", die fast ausschließlich für OO-Sprachen verwendet wird und sich auf eine Funktion bezieht, die einem Objekt zugeordnet ist. Obwohl auch dies nicht immer konsistent ist. Beispielsweise wird in C ++ normalerweise der Begriff "Elementfunktion" anstelle von "Methode" verwendet (obwohl sich der Begriff "Methode" unter Programmierern in die Umgangssprache von C ++ eingeschlichen hat).
Der Punkt ist, nichts davon ist wirklich konsistent. Es spiegelt einfach die Terminologie wider, die von den jeweils aktuellen Sprachen verwendet wird.