Комментарии 18
Странно, C# в процедурном.
>>Стоит отметить, что несколько точек выхода из всех этих языков поддерживаются только в Python
что? оО
>>Стоит отметить, что несколько точек выхода из всех этих языков поддерживаются только в Python
что? оО
В императивной парадигме стоило бы упомянуть Fort.
В модульной — Ada и OCaml.
В модульной — Ada и OCaml.
Forth*
Помню легенду, что 'h' было отброшено, что бы название в два слова поместилось. Но подтверждения найти не могу.
Процедура
возвращать значение как результат своего выполнения
Процедура != подпрограмма и не возвращает значения, просто выполняет список инструкций. Состояние же изменяется за счет глобальных переменных и передачи аргумента по ссылке.
Классифицировано так грубо и условно, что в процессе совершенно исказился смысл.
К примеру, совершенно непонятно, как противопоставлять модульное программирование и ООП, если ООП — это разновидность модульного программирования, когда единственной единицей модульности является класс. Который — полноценная лингвистическая конструкция с одной стороны, и тип данных (в смысле абстрактных типов данных, по Вирту, т.е. тут уже и процедурное прогаммирование проглядывает) — с другой.
Или другой некорректный пример — Си++: в отличие от Си, тут файл (.cpp) вовсе не является модулем, а заголовок (.hpp) не является интерфейсом такогого модуля. А в Си — являлся, и назывался объектом, единицей трансляции. В этом отношении (но не в других) Си++ оказывается дальше от ООП, чем классический Си, что забавно.
К примеру, совершенно непонятно, как противопоставлять модульное программирование и ООП, если ООП — это разновидность модульного программирования, когда единственной единицей модульности является класс. Который — полноценная лингвистическая конструкция с одной стороны, и тип данных (в смысле абстрактных типов данных, по Вирту, т.е. тут уже и процедурное прогаммирование проглядывает) — с другой.
Или другой некорректный пример — Си++: в отличие от Си, тут файл (.cpp) вовсе не является модулем, а заголовок (.hpp) не является интерфейсом такогого модуля. А в Си — являлся, и назывался объектом, единицей трансляции. В этом отношении (но не в других) Си++ оказывается дальше от ООП, чем классический Си, что забавно.
А нас, кстати, так учили.
К примеру, совершенно непонятно, как противопоставлять модульное программирование и ООП, если ООП — это разновидность модульного программирования, когда единственной единицей модульности является класс.
И вообще, все перечисленные парадигмы являются разновидностями императивной парадигмы. Помимо которой вполне себе заметны и развиты декларативная парадигма, парадигма метапрограммирования и событийно-ориентированная парадигма.
Вообще, достаточно хороший список есть на ru.wikipedia.org/wiki/Парадигма_программирования
Не ООП вообще разновидность модульного программирования, с классом=модулю, а только ООП в его общеизвестном виде. Это свойство распространенных сейчас языков, идущее, очевидно, из Явы, не более того.
В руби есть yield и модули
О как Pascal «универсален» — сразу во всех категориях!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
«Забытые» парадигмы программирования