LINUX.ORG.RU

История изменений

Исправление Xenius, (текущая версия) :

Я достаточно подробно объяснил суть побочных эффектов, и что они не имеют отношения к его фантазиям про процедуры и функции.

Ладно, сам напишу своё понимание:

Функция — подпрограмма, которая вызывается ради возвращаемого значения. Хорошим примером функций являются математические функции, синус какой-нибудь там, квадратный корень и тд.

Побочный эффект функции — это когда она делает что-то другое кроме вычисления возвращаемого значения, например что-то выводит на stdout, закрывает поток и тд.

Процедура — подпрограмма, которая вызывается ради некоторого эффекта. Этот эффект не является побочным, поскольку как раз ради него процедура и вызывается. Например процедура print_help может быть сделана для того чтобы выводить хелп по аргументам программы. Если процедуре требуется вернуть значение (например, получилось или нет), это делается через var-параметр или как-то ещё.

Столяров предлагает выдерживать строгое разделение между процедурами и функциями. То есть если требуется значение, то использовать функцию и в ней не делать ничего кроме вычисления этого значения. Если требуется эффект, то следует использовать процедуру и не возвращать значение.

В C нет разделения на процедуры и функции, но можно использовать функции возвращающие void и применять тот же подход. Кроме «стандартных» функций, где такое не соблюдается.

негативный опыт объяснения побочных эффектов вполне может быть следствием его бездарности и неумения объяснять.

Ну не знаю, не знаю. Вон я попытался объяснить выше. Посмотрим, поймёшь ты или нет.

Иди, пожалуйста, в гостевую с ним обсуждай его шизу.

Зачем с ним это обсуждать? Он и так в книге описал всё. Если ты считаешь, что он не прав, то я бы хотел увидеть конструктивную критику, а не какие-то необоснованные обвинения в сектанстве.

Исходная версия Xenius, :

Я достаточно подробно объяснил суть побочных эффектов, и что они не имеют отношения к его фантазиям про процедуры и функции.

Ладно, сам напишу своё понимание:

Функция — подпрограмма, которая вызывается ради возвращаемого значения. Хорошим примером функций являются математические функции, синус какой-нибудь там, квадратный корень и тд.

Побочный эффект функции — это когда она делает что-то другое кроме вычисления возвращаемого значения, например что-то выводит на stdout, закрывает поток и тд.

Процедура — подпрограмма, которая вызывается ради некоторого эффекта. Этот эффект не является побочным, поскольку как раз ради него процедура и вызывается. Например процедура print_help может быть сделана для того чтобы выводить хелп по аргументам программы. Если процедуре требуется вернуть значение (например, получилось или нет), это делается через var-параметр или как-то ещё.

Столяров предлагает выдерживать строгое разделение между процедурами и функциями. То есть если требуется значение, то использовать функцию и в ней не делать ничего кроме вычисления этого значения. Если требуется эффект, то следует использовать процедуру.

В C нет разделения на процедуры и функции, но можно использовать функции возвращающие void и применять тот же подход.

негативный опыт объяснения побочных эффектов вполне может быть следствием его бездарности и неумения объяснять.

Ну не знаю, не знаю. Вон я попытался объяснить выше. Посмотрим, поймёшь ты или нет.

Иди, пожалуйста, в гостевую с ним обсуждай его шизу.

Зачем с ним это обсуждать? Он и так в книге описал всё. Если ты считаешь, что он не прав, то я бы хотел увидеть конструктивную критику, а не какие-то необоснованные обвинения в сектанстве.