А то ж.
Дело же не только в изящности. Мышление в ОО принципиально отличается от мышления в структурном программировании. Принцип СП: "пусть новый код сможет использовать для своей работы старый код", а принцип ОО: "пусть старый код сможет использовать для своей работы новый код". Поэтому принцип дизайна в ОО так отличается от СП. Для тех, кто изучил СП и начинает учить ОО, новый дизайн представляется какими-то мутными наворотами неизвестно зачем.. (Нафига мутить такую хрень на 5 страниц и переливать из пустого в порожнее, если можно написать всё тоже самое просто с тремя процедурами?)
Дело не в новых языках. Все фундаментальные языки высокого уровня - это побочный продукт разработок в области искусственного интеллекта (как, собственно, и всё остальное в IT). Например, первый объектно-ориентированный язык был создан уже к концу 60-х годов. Штука в том, что все языки в итоге выполняются на том же железе, т.е. они все загнаны в рамки жёсткой реализации автоматов - все они реализуют детерминированный конечный автомат. И из этого нет выхода (пока). Поэтому, все попытки спопугаить человеческое мышление, которое работает по ассоциативно-эвристическому принципу, уткнулись в одну стену: можно попробовать представить лишь ОДИН СРЕЗ человеческого мышления, и попробовать автоматизировать связанные с этим стандартные операции. Та же пресловутая операция присваивания - лишь один из элементов мышления и она представлена оператором присваивания в абсолютно любом процедурном языке. Если ты напишешь х := у или х = у или LET X = Y или SET X = Y это ничего не меняет. В декларативном языке, например, операции присваивания вообще нет, а есть операция привязывания. А в фунциональном программировании, например, язык пытается автоматизировать процесс ОБОСНОВАНИЯ как часть принятия решения. И там это реализовано на уровне операторов. Поэтому, изучение языков программирования - это процесс анализа узкого среза своего собственного мышления.
Russian Lessons | Russian Tests and Quizzes | Russian Vocabulary |