Поскольку в первоначальных концепциях теории и практики информатики функции и подпрограммы практически не имели ничего общего друг с другом.
Фортран обычно считается первым языком, который реализовал оба из них и продемонстрировал различия.(Ранний LISP также играл в этом несколько противоположную роль, но он оказал незначительное влияние за пределами академического сообщества).
Исходя из традиций математики (частью которой в 60-е годы был еще CS), функции рассматривались только как инкапсуляция параметризованных математических вычислений, предназначенных исключительно для возврата значения в большее выражение.То, что вы могли бы назвать это «голым» (F = AZIMUTH (SECONDS)), было просто тривиальным случаем использования.
Подпрограммы, с другой стороны, рассматривались как способ назвать группу операторов, предназначенную для некоторыхэффект.Параметры значительно повысили их удобство использования, и единственная причина, по которой им было разрешено возвращать измененные значения параметров, заключалась в том, что они могли сообщать о своем состоянии, не полагаясь на глобальные переменные.
Таким образом, у них действительно не было концептуальныхсвязь, кроме инкапсуляции и параметров.
Реальный вопрос: «Как так много разработчиков пришли к мнению, что они одинаковые?»
И ответом на это является C.
Когда K + R изначально разработали свой высокоуровневый язык типов макро-ассемблера для PDP-11 (возможно, начался на PDP-8?), У них не было иллюзий аппаратной независимости.Практически каждая «уникальная» особенность языка была отражением машинного языка и архитектуры PDP (см. I ++ и --i).Одним из них было осознание того, что функции и подпрограммы могут быть (и всегда были) реализованы одинаково в PDP, за исключением того, что вызывающая сторона просто игнорировала возвращаемое значение (в R0 [, R1]) для подпрограмм.
Так родился указатель void, и после того, как язык C захватил весь мир программирования, ошибочное представление о том, что этот артефакт реализации HW / OS (правда, почти на каждой последующей платформе) был таким же, каксемантика языка.