На самом деле, безотносительно плюсов, насколько я помню, понятие «функция» траткуется в зависимости от семантики языка. В большинстве языков это синоним подпрогрммы. В ФП функция рассматривается как-бы в мат смысле, как отображение. Технически, отличие в том, что ф-ция обязана возвращать результат и не содержать сайд-эффектов. Нелокальные выходы, прерывания так же запрещены. Процедура обычно понимается в смысле подпрограммы. Хотя, вроде, в CS есть какая-то другая трактовка, вроде бы, но я не вникал.
В sicp говорят, что функция - мат. термин говорящий что делать, но не как это сделать. процедура - комп. термин, реализующий некоторую функцию. В С просто процедуру назвали словом «функция»
А вот и есть. Например, если тело функции имеет несколько частей под дефайнами внутри, то какие-то параметры могут оказаться неиспользованными, в зависимости от сборки.
Вот только в C++ нет процедур и void some_func() в контексте C++ будет называться функцией типа void, которая ничего не возвращает. А с процедурами, это к паскалистам.
Вот только в C++ нет процедур и void some_func() в контексте C++ будет называться функцией типа void, которая ничего не возвращает. А с процедурами, это к паскалистам.
какой вопрос такой ответ :) я-то знаю что в с и с++ нет процедур в прямой их реализации. И меня это вполне устраивает.