История изменений
Исправление praseodim, (текущая версия) :
Это всё херабора в вакууме. На деле же вот данные вот их вычисления, а вот результат. Если у тебя программа разбита на коробочки, ничего не сильно связно, код не как паутина и вот всё это. То у тебя всё норм. А если у тебя 333 функции каждая из которых меняет 333 переменные каждая из которых идёт на вход каждой из 333 функций вот тогда всё плохо ибо у тебя запутанная система где тех самых побочных эффектов попкой жуй.
+100500
По-моему, надо исходить из того в чем вообще СМЫСЛ понятия «побочный эффект»? Для программиста на практике важно знать надо ли ему учитывать, что в результате работы какого-то куска кода что-то где-то может измениться за пределами этого куска кода? Если надо - есть побочный эффект. Нет - нет его. Хотя я бы еще, с точки зрения практики, к побочным эффектам отнес и просто использование даже без модификации внешней переменной.
Косвенно это еще влияет на реентерабельность, что может быть важно при многопоточном программировании или рекурсиях.
В некотором роде все без исключения обращения к внешним ресурсам (диск, периферия, сеть) - это побочный эффект.
Еще тонкий момент, что совсем уже если закапываться, то возможность появления ошибки в ходе работы с остановом программы или вызовом обработчика (exception) - это тоже побочный эффект. Например, функция с операцией деления аргументов может вызвать исключение деления на ноль или переполнение и таким образом имеет побочный эффект, если конечно исключение не обрабатывается внутри нее или не проверяются аргументы.
По поводу различий процедура или функция - это на мой вкус вообще схоластика. Зря Столяров говорит, что у Си-шников нет разницы, я к примеру начинал далеко не с Си и для меня разница между процедурой и функцией - только в особенностях вызова и получения результата вызова.
Исправление praseodim, :
Это всё херабора в вакууме. На деле же вот данные вот их вычисления, а вот результат. Если у тебя программа разбита на коробочки, ничего не сильно связно, код не как паутина и вот всё это. То у тебя всё норм. А если у тебя 333 функции каждая из которых меняет 333 переменные каждая из которых идёт на вход каждой из 333 функций вот тогда всё плохо ибо у тебя запутанная система где тех самых побочных эффектов попкой жуй.
+100500
По-моему, надо исходить из того в чем вообще СМЫСЛ понятия «побочный эффект»? Для программиста на практике важно знать надо ли ему учитывать, что в результате работы какого-то куска кода что-то где-то может измениться за пределами этого куска кода? Если надо - есть побочный эффект. Нет - нет его. Хотя я бы еще, с точки зрения практики, к побочным эффектам отнес и просто использование даже без модификации внешней переменной.
Косвенно это еще влияет на реентерабельность, что может быть важно при многопоточном программировании.
В некотором роде все без исключения обращения к внешним ресурсам (диск, периферия, сеть) - это побочный эффект.
Еще тонкий момент, что совсем уже если закапываться, то возможность появления ошибки в ходе работы с остановом программы или вызовом обработчика (exception) - это тоже побочный эффект. Например, функция с операцией деления аргументов может вызвать исключение деления на ноль или переполнение и таким образом имеет побочный эффект, если конечно исключение не обрабатывается внутри нее или не проверяются аргументы.
По поводу различий процедура или функция - это на мой вкус вообще схоластика. Зря Столяров говорит, что у Си-шников нет разницы, я к примеру начинал далеко не с Си и для меня разница между процедурой и функцией - только в особенностях вызова и получения результата вызова.
Исходная версия praseodim, :
Это всё херабора в вакууме. На деле же вот данные вот их вычисления, а вот результат. Если у тебя программа разбита на коробочки, ничего не сильно связно, код не как паутина и вот всё это. То у тебя всё норм. А если у тебя 333 функции каждая из которых меняет 333 переменные каждая из которых идёт на вход каждой из 333 функций вот тогда всё плохо ибо у тебя запутанная система где тех самых побочных эффектов попкой жуй.
+100500
По-моему, надо исходить из того в чем вообще СМЫСЛ понятия «побочный эффект»? Для программиста на практике важно знать надо ли ему учитывать, что в результате работы какого-то куска кода что-то где-то может измениться за пределами этого куска кода? Если надо - есть побочный эффект. Нет - нет его.
Косвенно это еще влияет на реентерабельность, что может быть важно при многопоточном программировании.
В некотором роде все без исключения обращения к внешним ресурсам (диск, периферия, сеть) - это побочный эффект.
Еще тонкий момент, что совсем уже если закапываться, то возможность появления ошибки в ходе работы с остановом программы или вызовом обработчика (exception) - это тоже побочный эффект. Например, функция с операцией деления аргументов может вызвать исключение деления на ноль или переполнение и таким образом имеет побочный эффект, если конечно исключение не обрабатывается внутри нее или не проверяются аргументы.
По поводу различий процедура или функция - это на мой вкус вообще схоластика. Зря Столяров говорит, что у Си-шников нет разницы, я к примеру начинал далеко не с Си и для меня разница между процедурой и функцией - только в особенностях вызова и получения результата вызова.