Как стать автором
Обновить

Комментарии 18

Странно, C# в процедурном.

>>Стоит отметить, что несколько точек выхода из всех этих языков поддерживаются только в Python
что? оО
Упс, опечатка. Имелось ввиду несколько точек входа. И то с помощью yield.
Про существование yield (и заодно await) в C# вы не в курсе?
в php так же есть yield, и в javascript тоже (если брать ES6), да и в ruby…
Можно и lua до кучи :)
В императивной парадигме стоило бы упомянуть Fort.
В модульной — Ada и OCaml.
Forth*
Помню легенду, что 'h' было отброшено, что бы название в два слова поместилось. Но подтверждения найти не могу.

Это u было отброшено


Forth is so named because in 1968 "the file holding the interpreter was labeled FOURTH, for 4th (next) generation software—but the IBM 1130 operating system restricted file names to 5 characters."[10]
Процедура

возвращать значение как результат своего выполнения

Процедура != подпрограмма и не возвращает значения, просто выполняет список инструкций. Состояние же изменяется за счет глобальных переменных и передачи аргумента по ссылке.
Классифицировано так грубо и условно, что в процессе совершенно исказился смысл.

К примеру, совершенно непонятно, как противопоставлять модульное программирование и ООП, если ООП — это разновидность модульного программирования, когда единственной единицей модульности является класс. Который — полноценная лингвистическая конструкция с одной стороны, и тип данных (в смысле абстрактных типов данных, по Вирту, т.е. тут уже и процедурное прогаммирование проглядывает) — с другой.

Или другой некорректный пример — Си++: в отличие от Си, тут файл (.cpp) вовсе не является модулем, а заголовок (.hpp) не является интерфейсом такогого модуля. А в Си — являлся, и назывался объектом, единицей трансляции. В этом отношении (но не в других) Си++ оказывается дальше от ООП, чем классический Си, что забавно.

А нас, кстати, так учили.
В TAPL разбираются отличия ООП и модулей — с точки зрения теории типов они оказываются двойственными.
К примеру, совершенно непонятно, как противопоставлять модульное программирование и ООП, если ООП — это разновидность модульного программирования, когда единственной единицей модульности является класс.


И вообще, все перечисленные парадигмы являются разновидностями императивной парадигмы. Помимо которой вполне себе заметны и развиты декларативная парадигма, парадигма метапрограммирования и событийно-ориентированная парадигма.

Вообще, достаточно хороший список есть на ru.wikipedia.org/wiki/Парадигма_программирования
Не ООП вообще разновидность модульного программирования, с классом=модулю, а только ООП в его общеизвестном виде. Это свойство распространенных сейчас языков, идущее, очевидно, из Явы, не более того.
О как Pascal «универсален» — сразу во всех категориях!
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.