Часто ведутся споры относительно разных языков программирования. В результате оппоненты ( участвуя в спорах с разной степенью взаимоуважения) сумели доказать только одно: что сейчас с использованием дополнительных средств и библиотек в принципе на любом языке программирования можно делать любые программы.
Однако, жалко, что ушло из аргументации программистов такое понятие как быстродействие программы. Много–много лет назад, когда языки программирования не были собственностью каких-либо фирм и никому не навязывались, у программистов была общая цель и общее понимание, какой должна быть лучшая программа. Лучшей программой считалась та программа, которая при той же функциональности выполнялась быстрее и задействовала меньше ресурсов. Этого хотят и пользователи. В те времена программисты могли конструктивно спорить, так как была объективная оценка, кто из них и с каким инструментарием делает лучшие программы.
Сейчас всех интересуют только удобства и интересы профессиональных программистов, соответствие языков каким-то абстрактным парадигмам и т.д. Но мы забыли о пользователях наших программ, которых вообще не интересует красиво ли использовались объектные возможности программистом, удобно ли ему было писать программу, быстро ли он ее состряпал. Когда мы едем в трамвае, нас ведь не интересует, удобно ли сидеть водителю трамвая? Важен только комфорт для пользователя (который платит деньги только за собственное удобство). Помните о пользователях, они нас кормят!
Часто встречающееся заявление, что на каком-то языке программирования что-либо делать ”удобнее и/или проще” не является аргументом. Аргументом может быть только доказательство того, что на этом языке что-либо делается быстрее и используется меньше ресурсов. Профессионал отличается от любителя тем, что программист-любитель пишет программы на том языке, который ему нравится и получает удовольствие, а программист-профессионал должен мучиться и делать все, чтобы его программы были самыми быстрыми. Такова жизнь, что все достойное существования рождается в муках…
Программисты стали жертвой рекламы, которая внушила, что главное это выбрать модный современный язык программирования и все будет легко и просто! Накопленный опыт и разработки на одном языке теряются при переходе на другой язык. А сколько потрачено времени и усилий на изучение новых и на вид разнообразных, но практически одинаковых языков, графических оболочек и интерфейсов пользователя! Пользу получают только те, кто под видом нового навязывают то же самое. У нас уже выработался рефлекс и мы готовы, обезумев бросаться на любую ерунду, главное, чтобы она была новая!
В последнее время частота процессора уже не растет и не может преодолеть отметку в 5Г Герц. Приходит постепенное протрезвление после объектно-ориентированной вакханалии и все становится на свои места. Фирмы взялись за ум и стали оптимизировать свои программы, что в конечном результате приведет к отказу от объектно-ориентированного программирования.
Теоретическая основа объектного программирования – это утверждение, что их объекты правильно моделируют предметы реального мира – ошибочна. На самом деле для того, чтобы правильно моделировать реальный мир (предметную среду) не достаточно представлять мир в виде ”черных ящиков”, которые имеют только входные и выходные сигналы (интерфейсы). Необходимо учитывать так же состояние ”черного ящика” (в терминах автоматики это объект управления). Выходные сигналы зависят не только от входных воздействий, но и от состояния, в котором находится ”черный ящик”. Это значит, что нам нужна информация о текущем состоянии ”черного ящика” и мы не можем больше игнорировать его внутреннюю сущность. В результате, мы неизбежно переходим от “черных” ящиков к ”белым” и ”прозрачным” ящикам. Заканчивается “черный“ период в истории программирования. Мир становится светлым и понятным!
Объектно-ориентированное программирование уходит, но что его заменит? Может быть, наступает эра автоматного программирования?…
Другие языки программирования и технологии
Конец объектно-ориентированному программированию? Переходим от “черных” ящиков к ”белым” и ”прозрачным” ящикам?
Есть над чем подумать
Открой для себя линукс.
Могу вас успокоить: объектно-ориентированное программирование полностью покрывает область действия автоматного программирования, при этом решение является более наглядным и надёжным за счёт распределения ответственностьей между объектами.
Основная ошибка непрофессионалов - отождествление сущностей ОО-программы и терминов предметной области. Такое воззрение запросто может привести проект к гибели. ОО-модель описывает решение рамках ООП, а не в терминах реального мира! Названия типов и объектов - лишь метафоры.
Оснвной критерий ПО сейчас - скорость разработки, минимизация рисков и гибкость (скорость реакции разработчиков на изменение бизнес-требований) , над производительностю уже никто не чахнет. Вы можете сделать высокопроизводительный веб-сервис на C, но его стоимость будет просто астрономической - любой школьник-пиэджпишник уделает вас с лёгкостью.
Не нужно пихать ООП во все задачи - только и всего. Есть задачи, модель решения которых принципиально не поддаётся объектной декомпозиции. Есть задачи (их, пожалуй, даже большинство) , в которых применение ООП порождает больше сущностей для обслуживания самого ООП, чем для моделирования предметной области, и несоответствие задачи инструменту пытаются замазать приблудами навроде АОП - это всё не от большого ума.
ООП и процедурное программирование - не единственные парадигмы. Мне жаль, что вы изучаете только похожие языки - вы подобны незрячему на футбольном матче. Есть также ФП, MOP, LOP, BOP - тысячи их! Объектно-ориентированное программирование не уходит; напротив, приходит понимание, что ООП - не серебряная пуля и имеет свои границы применения. Ещё Роберт Мартин говорил, что ООП используют все кому не лень, но никто не понимает, что же это такое.
Основная ошибка непрофессионалов - отождествление сущностей ОО-программы и терминов предметной области. Такое воззрение запросто может привести проект к гибели. ОО-модель описывает решение рамках ООП, а не в терминах реального мира! Названия типов и объектов - лишь метафоры.
Оснвной критерий ПО сейчас - скорость разработки, минимизация рисков и гибкость (скорость реакции разработчиков на изменение бизнес-требований) , над производительностю уже никто не чахнет. Вы можете сделать высокопроизводительный веб-сервис на C, но его стоимость будет просто астрономической - любой школьник-пиэджпишник уделает вас с лёгкостью.
Не нужно пихать ООП во все задачи - только и всего. Есть задачи, модель решения которых принципиально не поддаётся объектной декомпозиции. Есть задачи (их, пожалуй, даже большинство) , в которых применение ООП порождает больше сущностей для обслуживания самого ООП, чем для моделирования предметной области, и несоответствие задачи инструменту пытаются замазать приблудами навроде АОП - это всё не от большого ума.
ООП и процедурное программирование - не единственные парадигмы. Мне жаль, что вы изучаете только похожие языки - вы подобны незрячему на футбольном матче. Есть также ФП, MOP, LOP, BOP - тысячи их! Объектно-ориентированное программирование не уходит; напротив, приходит понимание, что ООП - не серебряная пуля и имеет свои границы применения. Ещё Роберт Мартин говорил, что ООП используют все кому не лень, но никто не понимает, что же это такое.
что за бред, ООП - был еще в 70 года, и до сих пор является основой основ программирования!
автора статьи надо сжечь на костре, такого бреда еще не читал!! !
как и раньше язык программирования выбирается исходя из задачи, а не задачу подгоняют под язык, вы хоть понимаете всю глубину этого бреда, сравнивать уровень любителя и говорить о глобальной смерти ООП как парадигмы))))
автора статьи надо сжечь на костре, такого бреда еще не читал!! !
как и раньше язык программирования выбирается исходя из задачи, а не задачу подгоняют под язык, вы хоть понимаете всю глубину этого бреда, сравнивать уровень любителя и говорить о глобальной смерти ООП как парадигмы))))
Кто тебе сказал что по теории ООП что объекты реального мира имеют только входные и выходные сигналы? Значения аргументов у объекта - являются его состояниями. Тем более ООП пока что самая живучая теория, не функциональное, не логическое программирование, к примеру, не прижились...
Похожие вопросы
- Кто-будь доступно может объяснить что же такое Объектно ориентированное программирование?
- Объектно-ориентированное программирование. Программа и ее интерфейс.
- Что из себя представляет объектно-ориентированное программирование, как выглядит (своими словами, пожалуйста)?
- Языки объектно-ориентированного программирования общая характеристика?
- Что такое объектно-ориентированное программирование?
- Объясните что такое объектно-ориентированное программирование просто и понятно, желательно с примерами (с++)
- Стоит ли пользоваться Объектно-ориентированным программированием ?
- Чем отличается объектно-ориентированное программирование от обычного?
- Почему объектно-ориентированное программирование провалилось?
- Объектно ориентированное программирование. (ООП)