W pewnych językach programowania dzieli się podprogramy na funkcje także procedury:
Przez zwracanie wartości powinno się pojmować prawdopodobieństwo użycia wywołania funkcji w środku wyrażenia. Procedury w szeregu przypadków też zwracają wartości, jakkolwiek na skroś odpowiednie parametry.
Podział ten występuje wewnątrz językach takich w charakterze Pascal plus Ada. W pozostałych językach (m. in. do wnętrza C również C++) nie ma przedtem takiego rozróżnienia także funkcją jest każdy z osobna podprogram, bez względu od chwili tego oznacza to zwraca jakieś wartości plus lub ma wpływ na program.