История изменений
Исправление Xenius, (текущая версия) :
Я достаточно подробно объяснил суть побочных эффектов, и что они не имеют отношения к его фантазиям про процедуры и функции.
Ладно, сам напишу своё понимание:
Функция — подпрограмма, которая вызывается ради возвращаемого значения. Хорошим примером функций являются математические функции, синус какой-нибудь там, квадратный корень и тд.
Побочный эффект функции — это когда она делает что-то другое кроме вычисления возвращаемого значения, например что-то выводит на stdout, закрывает поток и тд.
Процедура — подпрограмма, которая вызывается ради некоторого эффекта. Этот эффект не является побочным, поскольку как раз ради него процедура и вызывается. Например процедура print_help может быть сделана для того чтобы выводить хелп по аргументам программы. Если процедуре требуется вернуть значение (например, получилось или нет), это делается через var-параметр или как-то ещё.
Столяров предлагает выдерживать строгое разделение между процедурами и функциями. То есть если требуется значение, то использовать функцию и в ней не делать ничего кроме вычисления этого значения. Если требуется эффект, то следует использовать процедуру и не возвращать значение.
В C нет разделения на процедуры и функции, но можно использовать функции возвращающие void и применять тот же подход. Кроме «стандартных» функций, где такое не соблюдается.
негативный опыт объяснения побочных эффектов вполне может быть следствием его бездарности и неумения объяснять.
Ну не знаю, не знаю. Вон я попытался объяснить выше. Посмотрим, поймёшь ты или нет.
Иди, пожалуйста, в гостевую с ним обсуждай его шизу.
Зачем с ним это обсуждать? Он и так в книге описал всё. Если ты считаешь, что он не прав, то я бы хотел увидеть конструктивную критику, а не какие-то необоснованные обвинения в сектанстве.
Исходная версия Xenius, :
Я достаточно подробно объяснил суть побочных эффектов, и что они не имеют отношения к его фантазиям про процедуры и функции.
Ладно, сам напишу своё понимание:
Функция — подпрограмма, которая вызывается ради возвращаемого значения. Хорошим примером функций являются математические функции, синус какой-нибудь там, квадратный корень и тд.
Побочный эффект функции — это когда она делает что-то другое кроме вычисления возвращаемого значения, например что-то выводит на stdout, закрывает поток и тд.
Процедура — подпрограмма, которая вызывается ради некоторого эффекта. Этот эффект не является побочным, поскольку как раз ради него процедура и вызывается. Например процедура print_help может быть сделана для того чтобы выводить хелп по аргументам программы. Если процедуре требуется вернуть значение (например, получилось или нет), это делается через var-параметр или как-то ещё.
Столяров предлагает выдерживать строгое разделение между процедурами и функциями. То есть если требуется значение, то использовать функцию и в ней не делать ничего кроме вычисления этого значения. Если требуется эффект, то следует использовать процедуру.
В C нет разделения на процедуры и функции, но можно использовать функции возвращающие void и применять тот же подход.
негативный опыт объяснения побочных эффектов вполне может быть следствием его бездарности и неумения объяснять.
Ну не знаю, не знаю. Вон я попытался объяснить выше. Посмотрим, поймёшь ты или нет.
Иди, пожалуйста, в гостевую с ним обсуждай его шизу.
Зачем с ним это обсуждать? Он и так в книге описал всё. Если ты считаешь, что он не прав, то я бы хотел увидеть конструктивную критику, а не какие-то необоснованные обвинения в сектанстве.