Другие языки программирования и технологии

Так в чём всё же разница между ОО и процедурными языками? (комментарий внутри)

PHP 5 является объектно-ориентированным, но на нём можно кодить и не прибегая к принципам ООП, просто ваять код в файле и через include использовать его как процедуры (сам так делал). Pascal не является ОО-языком, но в нём есть такое понятие как класс (по крайней мере в последних версиях). И в чём же тогда разница?
в процедурных языках для устранения сложности задачи используется функциональная и/или структурная декомпозиция, а в объектно-ориентированных можно использовать объектную декомпозицию. реализация ооп не обязательно завязана на классы. в том же javascript используется утиная типизация, прототипирование и нет никаких классов.
декомпозиция программ - сложная и объёмная дисциплина, объяснять её на пальцах не могу и не собираюсь. скажу только, что при функциональной декомпозиции система рассматривается как набор данных, гоняемых из одной подсистемы в другую, а при объектной - как набор взаимодействующих объектов. так что это ваше ооп - не хухры-мухры :)
Иван Крупенин
Иван Крупенин
9 617
Лучший ответ
в ООП есть понятие класс и они под него заточены) )
попробуй написать класс в С (не в С++, а именно в С) -- стиль сильно изменяется когда классы есть

а в ООП-ориентированном вполне можно писать и не используя объекты -- вопрос оптимальности в конкретной ситуации
Класс - просто набор связанных переменных. Объект - набор связанных переменных, которые могут быть закрыты или открыты для других объектов. Одни объекты могут быть родителями или потомками других.
Сергей Зырянов И как этот ответ относится к моему вопросу? Я как бы не спрашивал, что такое объект и класс, это я и сам знаю, и не только в теории.
>Pascal не является ОО-языком, но в нём есть такое понятие как класс (по крайней мере в последних версиях) .

В основном стандарте Pascal'я нету такого понятия как `класс'. ООП в паскале - это всего лишь особенность некоторых его реализаций.
Fvyc Sxryn
Fvyc Sxryn
33 164
Разница в том, что объектно ориентированные языки ПОДДЕРЖИВАЮТ парадигмы ООП, а процедурные не поддерживают.
Поскольку исторически языки двигались от "процедурности" к поддерже ООП, практически любой ОО-язык сейчас является надмножетвом того же языка, но без классов.
Сергей Зырянов Ну прям вообще всё стало ясно :) По-подробнее можно? Лучше бы на примере, пусть и абстрактном. Что такое инкапсуляция, наследование и полиморфизм - в курсе (причём не только в теории). Паскалевские классы этого не поддерживают чтоли?
Сергей Зырянов То, что современные языки за рога тянут в ООП - это верно. Но принцип ООП зародился как самостоятельный. И были языки (увы, не помню, какие именно) которые сразу же были построены как ОО, а не преобразованы из процедурных.