LINUX.ORG.RU

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

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

Между прочим, в C# очень интенсивно идет переход именно в функционально-процедурном направлении.

Тут, видимо, путаница в терминах. Насколько я знаю, процедурное программирование это чистая императивщина, когда программист пишет программу и в ней указывает что и после чего должно быть сделано. В противоположность (бинарную, т.е. есть только две градации) существует другой подход, когда программист пишет программу, указывая в ней, что должно получиться - это функциональный подход. Это две противоположности - императивное программирование и функциональное. В одном человек прописывает компилятору что и как делать и результат получается неявно в ходе этих действий, а во втором человек явно прописывает компилятору что должно получиться в результате, а как это достигается остается на откуп компилятора. Вместо компилятора может быть интерпретатор, тут это не важно.

Отсюда термин функционально-процедурное программирование выглядит как сухо-влажная уборка и холодно-горячекатанная сталь. В контексте императивного/функционального программирования функция != процедуре, потому что функция имеется в виду математическая, которая чистая, а не функция из информатики, которая та же процедура только с возвратом, она же подпрограмма.

EDIT:

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

Тут уже понятнее. Процедурно-функциональный язык еще как-то понятно, в отличие от функционально-процедурного направления. Хотя «язык поддерживающий императивное и функциональное программирование» звучит более благозвучно, как по мне.

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

Между прочим, в C# очень интенсивно идет переход именно в функционально-процедурном направлении.

Тут, видимо, путаница в терминах. Насколько я знаю, процедурное программирование это чистая императивщина, когда программист пишет программу и в ней указывает что и после чего должно быть сделано. В противоположность (бинарную, т.е. есть только две градации) существует другой подход, когда программист пишет программу, указывая в ней, что должно получиться - это функциональный подход. Это две противоположности - императивное программирование и функциональное. В одном человек прописывает компилятору что и как делать и результат получается неявно в ходе этих действий, а во втором человек явно прописывает компилятору что должно получиться в результате, а как это достигается остается на откуп компилятора. Вместо компилятора может быть интерпретатор, тут это не важно.

Отсюда термин функционально-процедурное программирование выглядит как сухо-влажная уборка и холодно-горячекатанная сталь. В контексте императивного/функционального программирования функция != процедуре, потому что функция имеется в виду математическая, которая чистая, а не функция из информатики, которая та же процедура только с возвратом, она же подпрограмма.