Привет всем, вот понастоящему филосовский вопрос, на который я хотел бы получить ответ...
Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше?
Мне рассказали про "процессно ориентированный подход" (как-то вроде так, но не поручусь) это когда данные принадлежат некой "транзакции" которая содержит состояние и обрабатывается специальными "блоками кода" (процессами, и т.д.) которые никакого состояния не содержат. Как-то так...
Здравствуйте, joker6413, Вы писали:
J>Привет всем, вот понастоящему филосовский вопрос, на который я хотел бы получить ответ... J>Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше? J>Мне рассказали про "процессно ориентированный подход" (как-то вроде так, но не поручусь) это когда данные принадлежат некой "транзакции" которая содержит состояние и обрабатывается специальными "блоками кода" (процессами, и т.д.) которые никакого состояния не содержат. Как-то так...
Смахивает на STL-ые алгоритмы и контейнеры, так это давно уже есть. Если что-то новое, так это АОП (аспектно-ориентированное программирование). Там я не спец, но по слухам там программирование заключается в проставлении атрибутов, как в COM+ атрибут "транзакция", к примеру.
Здравствуйте, joker6413, Вы писали:
J>Привет всем, вот понастоящему филосовский вопрос, на который я хотел бы получить ответ... J>Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше? J>Мне рассказали про "процессно ориентированный подход" (как-то вроде так, но не поручусь) это когда данные принадлежат некой "транзакции" которая содержит состояние и обрабатывается специальными "блоками кода" (процессами, и т.д.) которые никакого состояния не содержат. Как-то так...
J>Может кто больше знает?
J>Игорь
В действительности ООП далеко не исчерпало себя, точнее еще не показало все свои возможности. Кое-какие мысли читай в этой статье про Smalltalk.
При чисто объектном подходе многие вещи, такие как AOP, remoting, persistance становятся простым следствием базовых возможностей.
Естественно, ОО это далеко не вершина, сам объектный подход нуждается в развитии. Ближайшее полезное дополнение на горизонте — Subjects, т.е. субъектно-ориентированное программирование. Весьма полезное расширение для командной разработке и разработке многих проектов.
--
Владимир.
Re: За горизонтом ООП
От:
Аноним
Дата:
17.02.03 20:54
Оценка:
Здравствуйте, joker6413, Вы писали:
J>Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше?
Если верить МС в том, что все будущее программирование будет так или иначе завязано на веб, весьма популярной моделью станет тогда т.н. компонентно-ориентированное программирование, используемое конкретно для создание распределенных приложений.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, joker6413, Вы писали:
J>>Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше?
А>Если верить МС в том, что все будущее программирование будет так или иначе завязано на веб, весьма популярной моделью станет тогда т.н. компонентно-ориентированное программирование, используемое конкретно для создание распределенных приложений.
Компонетная модель вполне вписывается в рамки ООП.
Насчет интернета — уже обсыпались дот-комы, инвесторы будут прежде всего думать о возможной отдаче, прежде чем еще раз вкладывать в интернет.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, joker6413, Вы писали:
J>>Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше?
А>Если верить МС в том, что все будущее программирование будет так или иначе завязано на веб, весьма популярной моделью станет тогда т.н. компонентно-ориентированное программирование, используемое конкретно для создание распределенных приложений.
Сорри но это не то, "завязанное на веб программирование" определятет лишь специфическую направленность разработок, их сложность, и не больше. Веб сервер или веб приложение можно написать и на asm`е. Вопрос в том кому это надо...
А обьектно ориентированное програмирование (полиморфизм, инкапсуляция, наследование) себя по моему исчерпало. Обьединение данных и кода, в больших проектах непомерно порождает рост энтропии.
Аспектно-ориентированное программирование похоже на следующий шаг, но что-то ничего определенного я по этой теме найти не могу.
J>А обьектно ориентированное програмирование (полиморфизм, инкапсуляция, наследование) себя по моему исчерпало. Обьединение данных и кода, в больших проектах непомерно порождает рост энтропии. J>Игорь
Не могу согласиться с этим утверждением. Грамотно спроектированный ОО-проект не превращается в хаотическое переплетение данных и кода.
Вот только не каждый может похватать умением использовать ООП (это не наезд на Игоря).
Небезызвестный Н.Вирт пару лет назад заметил, что
"95% программ, созданных с использованием средств, поддерживающих ОО-технологии, по своей сути не явлюятся ОО-программами."
J>>>Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше?
А>>Если верить МС в том, что все будущее программирование будет так или иначе завязано на веб, весьма популярной моделью станет тогда т.н. компонентно-ориентированное программирование, используемое конкретно для создание распределенных приложений.
J>Сорри но это не то, "завязанное на веб программирование" определятет лишь специфическую направленность разработок, их сложность, и не больше. Веб сервер или веб приложение можно написать и на asm`е. Вопрос в том кому это надо...
J>А обьектно ориентированное програмирование (полиморфизм, инкапсуляция, наследование) себя по моему исчерпало. Обьединение данных и кода, в больших проектах непомерно порождает рост энтропии.
J>Аспектно-ориентированное программирование похоже на следующий шаг, но что-то ничего определенного я по этой теме найти не могу.
J>Игорь
Может полиморфизм-инкапсуляция-наследование и исчерпало себя, но объектный подход — нет.
Почитай здесь.
И откуда сведения, что связывание кода и данных создает энтропию? Для этого нужно как минимум статистика, кроме того нужен анализ, что именно создает эту энтропию. Вредить может как сам подход, так и его неверное использование. Особенно ввиду плохой теоретической подготовки большинства разработчиков.
Кроме того, прочитай статью Objects have failed. Хотя там говорится, что ОО потерпело неудачу, но в то же время отмечается, что этой неудачей была концентрация на статической концепции в рамках ООП. А объектный подход представляет собой высокодинамичную систему.
J>>А обьектно ориентированное програмирование (полиморфизм, инкапсуляция, наследование) себя по моему исчерпало. Обьединение данных и кода, в больших проектах непомерно порождает рост энтропии. J>>Игорь
C>Не могу согласиться с этим утверждением. C>Грамотно спроектированный ОО-проект не превращается в хаотическое переплетение данных и кода. C>Вот только не каждый может похватать умением использовать ООП (это не наезд на Игоря). C>Небезызвестный Н.Вирт пару лет назад заметил, что C>"95% программ, созданных с использованием средств, поддерживающих ОО-технологии, по своей сути не явлюятся ОО-программами."
Золотые слова. Все это следствие "самопальности" программистов. Вот если бы в вузах вдалбливали фундаментальные основы и современные разработки функционального/объектного программирования/дизайна, проблем качества ПО стало бы на порядок меньше.
V>Золотые слова. Все это следствие "самопальности" программистов. Вот если бы в вузах вдалбливали фундаментальные основы и современные разработки функционального/объектного программирования/дизайна, проблем качества ПО стало бы на порядок меньше.
Если бы в ВУЗах вдабливали не только основы, но и заставляли делать ПРАКТИЧЕСКИЕ вещи, связанные с проектированием, работой с требованиями, разработкой, теститрованием, что бы эти фундаментальные основы закрепить, это было бы на порядок эффективней. Иначе толку в вузе от основ, если их не применять?
Здравствуйте, Ведмедь, Вы писали:
В>Здравствуйте, _vovin, Вы писали:
В> V>>Золотые слова. Все это следствие "самопальности" программистов. Вот если бы в вузах вдалбливали фундаментальные основы и современные разработки функционального/объектного программирования/дизайна, проблем качества ПО стало бы на порядок меньше.
В>Если бы в ВУЗах вдабливали не только основы, но и заставляли делать ПРАКТИЧЕСКИЕ вещи, связанные с проектированием, работой с требованиями, разработкой, теститрованием, что бы эти фундаментальные основы закрепить, это было бы на порядок эффективней. Иначе толку в вузе от основ, если их не применять?
Спорить тут не о чем. Конечно, долбежка должна включать и практические занятия. Иначе это будет зубрежка.
Здравствуйте, joker6413, Вы писали:
J>Привет всем, вот понастоящему филосовский вопрос, на который я хотел бы получить ответ... J>Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше? J>Мне рассказали про "процессно ориентированный подход" (как-то вроде так, но не поручусь) это когда данные принадлежат некой "транзакции" которая содержит состояние и обрабатывается специальными "блоками кода" (процессами, и т.д.) которые никакого состояния не содержат. Как-то так...
J>Может кто больше знает?
J>Игорь
Все больше и больше поклонников XP. По сути основной упор делается на поддержание существующих ООП-программ в "читабелином" состоянии, т. е. чтобы программирование не превращалось в хакерство.
Думаю, будущее — за агентным программированием. Что-то типа ООП, только объекты становатся самостоятельными, наглухо инкапсулированными, межплатформенными, в идеале — хорошо документированными. Объекты-агенты способны вызывать другие объекты по каким-то признакам, в том числе не только в своей основной среде, но и на удалённых машинах. Вполне может быть, что появятся какие-то хитрые межагентные интерфейсы, на основе нечёткой логики, ИИ...
Язык программирования становится совсем не важен и уходит на второй план. Каждый пишет на чём ему удобнее,
Программы как таковые практически исчезают, вместо них — агенты более высокого уровня, управляющие "мелочью".
Операционная система занимается установлением межагентных связей и предоставляет базовых агентов ввода-вывода.
На самом деле всё это уже практически есть и, думаю, описанный мною вариант дело не слишком далёкого будущего
Если же рассматривать тенденции развития языков — то безусловно тут будут два основных направления. Упрощение синтаксиса за счёт всё более высокоинтеллектуальных компиляторов (см. Perl, Haskell, Pyton) — это, в первую очередь, для скриптовых языков. Вторая ветвь — чисто аппликативные языки, позволяющие быстро "на коленке", в GUI слепить связку базовых объектов (агентов) во что-то осмысленное. Прообраз — тот же VB. В качестве "клея" может выступать язык первого направления. Всё это будет снабжаться интеллектуальными компиляторами, в том числе с алгоритмической оптимизаций. Компиляция, скорее всего, будет двухслойная — сперва в шитый код, в котором и будут жить переносимые объекты. И уже на целевой платформе при исполнении компиляция в нативный код. Последнее, впрочем, опционально, для подавляющего большинства агентов будет некритична и интерпретация шитого кода.
Ну, вот... Сумбурно, но где-то так я вижу наше светлое будущее :D
Ну, .NET на это, думается, похож как самолёт братьев Райт на МиГ-25, но, в целом, ход в верном направлении. Но, думаю, что наше светлое будущее будет не на .NET — MS как обычно, слишко много скроет, слишком мало выдаст, слишком плотно держаться будет... Скорее всего ЭТО родится на чём-то открытом. Почти все великие вещи в мире компьютеров начинались с открытых архитектур
Здравствуйте, joker6413, Вы писали:
J>Привет всем, вот понастоящему филосовский вопрос, на который я хотел бы получить ответ... J>Было структурное программирование (декомпозиция методов), после появилось обьектно-ориентированное программирование (декомпозиция классов), а что дальше? J>Мне рассказали про "процессно ориентированный подход" (как-то вроде так, но не поручусь) это когда данные принадлежат некой "транзакции" которая содержит состояние и обрабатывается специальными "блоками кода" (процессами, и т.д.) которые никакого состояния не содержат. Как-то так...
J>Может кто больше знает?
J>Игорь
На мой взгляд многие технологии разработки ПО идут к тому, чтобы побороть делитанство.
Ведь при грамотном проектировании систем, делетант может быть весьма полезным кодером
с точки зрения достижения результата.
M>На мой взгляд многие технологии разработки ПО идут к тому, чтобы побороть делитанство. M>Ведь при грамотном проектировании систем, делетант может быть весьма полезным кодером M>с точки зрения достижения результата.
Ну во-первых: дИлетантство.
А во-вторых не пойму, при чём тут борьба с дилетантством? Инструменты всё более и более визуализируются, так что создавать себе небольшие утилитки, схемы рассчёта чего-то или формочки/будильники становится всё проще и проще. Тут уже даже не задачка для студента первого курса, а для секретарши-блондинки.
И если дилетант может быть полезным кодером, то получается, что грамотное проектирование как раз способствует появлению дилетантов? Какая уж тут борьба нафик?
Здравствуйте, grinka, Вы писали:
G>так что создавать себе небольшие утилитки, схемы рассчёта чего-то или формочки/будильники становится всё проще и проще. Тут уже даже не задачка для студента первого курса, а для секретарши-блондинки.
Здравствуйте, AndrewVK, Вы писали:
G>>так что создавать себе небольшие утилитки, схемы рассчёта чего-то или формочки/будильники становится всё проще и проще. Тут уже даже не задачка для студента первого курса, а для секретарши-блондинки.
AVK>А брюнетки что, глупее?
Традиционно считается, что блондинки — самые глупые человеки. Оборот речи такой.
Дискутировать по поводу дискриминации блондинок не собираюсь, так что копья можете не ломать
Так вот я имел в виду, что теперь инструментарий упрощает визуальную разработку всё больше и больше. Оболочка VB, например, позволяет создавать что-то ВООБЩЕ не зная синтаксиса самого васика. С этим последний идиот справится, не только дилетант.
Здравствуйте, _vovin, Вы писали:
J>>>А обьектно ориентированное програмирование (полиморфизм, инкапсуляция, наследование) себя по моему исчерпало. Обьединение данных и кода, в больших проектах непомерно порождает рост энтропии. J>>>Игорь
C>>Не могу согласиться с этим утверждением. C>>Грамотно спроектированный ОО-проект не превращается в хаотическое переплетение данных и кода. C>>Вот только не каждый может похватать умением использовать ООП (это не наезд на Игоря). C>>Небезызвестный Н.Вирт пару лет назад заметил, что C>>"95% программ, созданных с использованием средств, поддерживающих ОО-технологии, по своей сути не явлюятся ОО-программами."
V>Золотые слова. Все это следствие "самопальности" программистов. Вот если бы в вузах вдалбливали фундаментальные основы и современные разработки функционального/объектного программирования/дизайна, проблем качества ПО стало бы на порядок меньше.
А если взглянуть на проблему иначе?
Может одна из проблем объектного программирования — это сложность его понимания.
Что-то я как-то не слышал разговоров о том, что обычное структурное/процедурное
программирование очень сложно для изучения.
Можно ведь и встать на точку зрения, что если некий практический подход
сложен для изучения и понимания, то это минус такого подхода.
Если что-то рассчитано на массовое применение, то легкость изучения
и применения — это важный критерий.