Madzi писал(а):
Мне бы хотелось разделить понятие процедуры на два (по способу применения):
1. Процедуры
2. Подпрограммы
Я бы не советовал Вам это делать. По той простой причине, что процедура и подпрограмма -- это суть одно и то же. Никакой разницы между ними нет. Исторически термин "подпрограмма" появился раньше (помните фортрановское SUBROUTINE ?), но потом, видимо в свете развития модульных систем, практически повсеместно был вытеснен термином "процедура" как более корректным. И действительно, ведь программа теперь -- это набор модулей (пакетов, библиотек, классов (в Яве) и т.д.). Что тогда должен обозначать термин "подпрограмма" -- поднабор модулей, что-ли? Лично я термин "подпрограмма" стараюсь не использовать.
По способу применения отличаются только "обычные процедуры" (proper procedure) и процедуры-функции.
Madzi писал(а):
В любом случае и процедуры и программы - крайне полезный инструментарий для "свёртки" сложных систем и, соответственно, повышения уровня читаемости, поэтому говорить о них как о зле я бы не стал.
Я говороил о том, что зло создаётся побочным эффектом, а не самими процедурами. Будьте, пожалуйста, повнимательнее
Имхо, в обычных процедурах побочный эффект не несёт в себе никакого зла, и даже наоборот, бывает очень полезен
А вот процедурам-функциям я бы с удовольствием предал более математический смысл, вообще запретив использовать в них глобальные переменные, заодно раз и навсегда покончив с пресловутым побочным эффектом. Удивляюсь, что Никлаус Вирт этого не сделал.