Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
 ООП и моделирование систем  [new]
DERSA fan
Member

Откуда:
Сообщений: 23
Всем привет!
Хочу описать проблему, с которой постоянно имею дело в своей работе уже 20+ лет. Надеюсь найти единомышленников и привлечь энтузиастов к совместной работе над проектом на эту тему. Как вариант - узнать от компетентных людей, что я пытаюсь изобрести велосипед, и обрести ссылки на похожие (но взлетевшие) проекты.

Итак, 21.5 лет назад я пришел работать программистом в одну замечательную компанию. Я на тот момент недавно познакомился с концепциями ООП и горел желанием разрабатывать проекты в этом стиле. Мне очень повезло. Я попал в команду, которая буквально фанатела от ООП и применяла эти принципы для того времени весьма революционным образом. А именно, выбрав в качестве клиент-серверной связки проекта (да, это была двухуровневая система клиент-сервер) довольно обычное для того времени сочетание "Delphi + MS Sql Server", разработали систему с объектно-ориентированным подходом на... хранимых процедурах MS Sql Server. То есть, вся бизнес-логика работы системы была реализована на хранимых процедурах, но проектирование велось в терминах объектов и принципов ООП.
Согласитесь, довольно непросто, глядя на хранимые процедуры, например в SQL Server Management Studio, представлять себе взаимодействующие объекты. И для визуализации объектно-ориентированного подхода была разработана специальная система моделирования объектов, многое позаимствовавшая на мой взгляд из Rational Rose (есть еще динозавры, кто помнит?;)) Иконки точно были взяты оттуда. Название системы ничего не говорило о ее назначении, принципах работы и т.д., она называлась Foxtail, и с вероятностью 99.99% никому здесь незнакома. Основная идея работы этой системы - вырастить дерево взаимодействующих объектов. Представляете себе файловую систему в виде дерева? Но в файловой системе только два типа объектов - папки и файлы. А в системе Foxtail можно было создавать и цеплять друг к другу любые объекты. Ну то есть вообще любые. Причем у каждого создаваемого объекта было состояние (набор свойств) и поведение (набор методов). Свойства и методы описывались самим автором объекта.
Это всё опять же сложно представить по текстовому описанию. Надеюсь, если тема получит развитие, я смогу проиллюстрировать всё это более наглядно.
Этот самый Foxtail был для нас чем-то настолько самособойразумеющимся и свышеданным, что никто не заморачивался особо чтобы составить какую-то документацию. Всё было настолько интуитивно понятно и самоочевидно. А, да. Еще эта система выполняла роль системы хранения исходников. MS Source Safe на тот момент и близко не давал желаемых функций, с гитом никто из нас знаком не был, да и как вы представляете себе сочетание "СКВ + хранимые процедуры"? В Toad-e недавно появилась поддержка гита, но я еще не имел счастья поработать в лицензионной версией и заценить это вживую. Впрочем, вернусь к Foxtail-у.
Автор через непродолжительное время покинул команду. Мне удалось его разыскать 3 года назад в одной социальной сети, но на мое письмо он тогда так и не ответил, так что можно считать, что связь с ним утрачена. В 2004-2005-м Foxtail был переписан на C# и получил некоторые новые фичи, но суть осталась той же самой. Название поменяли на Modeler. Я в этом участия не принимал, так что поддержу тех, кто скажет, что название Modeler неиформативно. У каждой уважающей себя DBMS есть свой собственный Data Modeler, который как минимум позволяет рисовать ER-диаграммы.
Рассказываю историю дальше. Автор Modeler-а также вскоре после его разработки покинул команду. А всепроникающий дух Foxtail-а теперь вселился в Modeler. Все исходники SQL мы вели только там. И теперь уже не только SQL. Наша система стала трехуровневой, появился сервер приложений, и объекты слоя сервера приложений мы тоже описывали в Modeler-е.
(с автором Modeler-а у меня связь есть, но он этим проектом более не занимается и не имеет желания)
К чему я всё это веду. Когда я, в свою очередь, ушел в другую компанию, мне сильно не хватало этой программы, которая была для нас реально идолом, которому поклонялись) И вот за 3 года я разработал свой вариант такой же системы, только в виде веб-приложения. Назвал систему DERSA (Diagrams-Entities-Relations-Stereotypes-Attributes)
Чего я хотел бы получить после этой публикации.
Сначала - кучу вопросов. Потом, после моих ответов на эти вопросы, - найти единомышленников и пилить проект дальше вместе с ними.
Меньше всего хотелось бы узнать, что я изобретаю велосипед, и что давно уже разработаны нормальные системы от солидных фирм на эту тему. Но это тоже было бы полезно, буду благодарен за подобную информацию.
30 апр 21, 12:21    [22316823]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 205
ООП в хранимках это дичь
1 май 21, 00:08    [22317115]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
DERSA fan
Member

Откуда:
Сообщений: 23
Мы наверное про разное ООП говорим. Для меня ООП - это лучшая в мире, непревзойденная техника создания программных систем, которые поддаются реверс инжинирингу и сами себя документируют.
Это метод организации кода в кластеры, домены, еще как хотите назовите, разнесения логики по слоям. Так, чтобы через годы оставалось всё понятно.
Это Система Моделирования, максимально приближенная к объектам реального мира, потому оно и Объектное.
А что вы понимаете под ООП?

Модератор: Тема перенесена из форума "Программирование".


Сообщение было отредактировано: 1 май 21, 08:33
1 май 21, 07:57    [22317136]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
tchingiz
Member

Откуда:
Сообщений: 39027
автор
реально идолом, которому поклонялись

религиозных фанатиков только тут и нехватало
1 май 21, 15:15    [22317228]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 205
DERSA fan
А что вы понимаете под ООП?

наследование, инкапсуляцию, автоматизацию, rich typing и т.д.
DERSA fan
Это Система Моделирования, максимально приближенная к объектам реального мира, потому оно и Объектное.

я всё ещё не понимаю, как это через хранимки сделать, там нет объектов
1 май 21, 15:27    [22317230]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
fkthat
Member

Откуда:
Сообщений: 4880
бабушкин зайчик
я всё ещё не понимаю

Наверное, для этого надо понимать ООП так, как его понимают авторы Идола. А пнимают они его, похоже, весьма по-странному.
1 май 21, 15:52    [22317242]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65894
Блог
Ну, если человек не понимает, как сделать ООП, например, на ассемблере - он действительно не понимает ООП. Он просто пользователь ООП-синтаксиса, примерно как когда-то на Visual Basic (где можно было пользоваться существующими объектами, но нельзя было описать свои).

Что никак не отменяет того факта, что подобные велосипеды из экзотических пород дерева на тетраэдальных колёсах редко интересны кому-либо, кроме автора.
1 май 21, 16:03    [22317248]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 205
softwarer
Ну, если человек не понимает, как сделать ООП, например, на ассемблере - он действительно не понимает ООП.

поправочка: он не понимает ваш ООП.
ООП означает "объектно", подразумевая "объект"...
где в ассемблере объекты?
1 май 21, 16:21    [22317253]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
tchingiz
Member

Откуда:
Сообщений: 39027
softwarer
Ну, если человек не понимает, как сделать ООП, например, на ассемблере - он действительно не понимает ООП. .

из группы ниразу не непонимающих, как делать ООП, например, на ассемблере, или фортране, или си
восклицание: интересно глянуть.


пысы

мы говорим Ленин - подразумеваем партия, ой блин

мы говорим наследование - подразумеваем ООП,
мы говорим ООП - подразумеваем наследование (Л.Карделли)
1 май 21, 16:36    [22317257]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
tchingiz
Member

Откуда:
Сообщений: 39027
11 февраля только закрыли ооп срач.
никогда такого не было, и вот - опять
1 май 21, 16:42    [22317260]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 205
учитывая, что все классы в итоге разворачиваются в простые ф-и и происходит это именно в асме, ООП в асме звучит просто абсурдно.
1 май 21, 18:54    [22317277]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65894
Блог
tchingiz
из группы ниразу не непонимающих, как делать ООП, например, на ассемблере, или фортране, или си
восклицание: интересно глянуть.

Это легко сделать. Возьмите то, что считаете ООП-программой, откомпилируйте и запустите в отладчике. Скажите себе: у меня в отладчике не ООП-программа... нет, я неправ, у меня в отладчике ООП-программа. Теперь нажмите в отладчике кнопку View as assembler или как она в вашем случае называется. Скажите себе: у меня в отладчике не ООП-программа...
1 май 21, 19:24    [22317282]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
tchingiz
Member

Откуда:
Сообщений: 39027
softwarer
tchingiz
из группы ниразу не непонимающих, как делать ООП, например, на ассемблере, или фортране, или си
восклицание: интересно глянуть.

Это легко сделать. Возьмите то, что считаете ООП-программой, откомпилируйте и запустите в отладчике. Скажите себе: у меня в отладчике не ООП-программа... нет, я неправ, у меня в отладчике ООП-программа. Теперь нажмите в отладчике кнопку View as assembler или как она в вашем случае называется. Скажите себе: у меня в отладчике не ООП-программа...

0)
офкос, это не ооп программа.
1)
Эта замечательная мысль отлично переносится на структурное программирование.
И будет такой же неправдой.
2)
Дело не втом, что код, скажем, с++ конвертится
3)
программирование и, в частности, ООП - программирование - это способ думать и записывать мысли.
А не код на ассемблере.
Наследование дает возможность не менять код для производного класса, меняя его для базового.
А в случае ассемблера (никогда не заглядывал, но почти уверен, что это сейчас напишу правду)
- надо переписывать код для обеих классов.
4)
программа является ооп тогда и только тогда, когда можно переписать код базового класса, а изменятся все наследники.
1 май 21, 20:04    [22317292]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65894
Блог
tchingiz
ООП - программирование - это способ думать и записывать мысли.

ООП-программирование - это способ думать. Записывать мысли - это синтаксис, кодирование. Одну и ту же мысль можно записать разными способами в разных синтаксисах на разных языках.

Контрольный вопрос, который обычно ставит людей в тупик - откуда взялось ООП? Вот когда-то не было языков с ООП синтаксисом. Что случилось дальше? Яблоко упало кому-то на темечко, и тот придумал ООП? Религиозные оописты обычно думают именно так. У них просто нет другого выхода - поскольку они не умеют записать ООП-мысли на языках без ООП-синтаксиса. В действительности же разработчики реализовывали определённые концепции, концепции оказались удобными и мощными, и только тогда появилась синтаксическая поддержка этих концепций.

tchingiz
Наследование дает возможность не менять код для производного класса, меняя его для базового.
А в случае ассемблера (никогда не заглядывал, но почти уверен, что это сейчас напишу правду) - надо переписывать код для обеих
классов.

То, в чём ты почти уверен - уж извини, не правда, а чушь. Загляни и посмотри.

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

tchingiz
программа является ооп тогда и только тогда, когда можно переписать код базового класса, а изменятся все наследники.

Этим определением ты опроверг то, с чего начал. Поскольку в ассемблере дела обстоят именно так.

Сообщение было отредактировано: 1 май 21, 20:16
1 май 21, 20:15    [22317293]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
x1ca4064
Member

Откуда:
Сообщений: 1269
бабушкин зайчик
учитывая, что все классы в итоге разворачиваются в простые ф-и и происходит это именно в асме, ООП в асме звучит просто абсурдно.


Попробуйте ответить (для себя, хотя бы):
Чем метод отличается от обычной процедуры?
Чем виртуальный метод отличается от метода?

После ответов на эти вопросы, ООП на асме, возможно, перестанет быть абсурдным.
Или нет?
1 май 21, 20:59    [22317303]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
fixxer
Member

Откуда:
Сообщений: 835
tchingiz

программа является ооп тогда и только тогда, когда можно переписать код базового класса, а изменятся все наследники.


Если реализовать на асме таблицу виртуальных функций и позднее связывание, то почему ж не получится?
1 май 21, 21:15    [22317306]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
DERSA fan

Сначала - кучу вопросов. Потом, после моих ответов на эти вопросы, - найти единомышленников и пилить проект дальше вместе с ними.
Меньше всего хотелось бы узнать, что я изобретаю велосипед, и что давно уже разработаны нормальные системы от солидных фирм на эту тему. Но это тоже было бы полезно, буду благодарен за подобную информацию.

Кидай ссылку на презентацию фич. И желательно на github с сорцами.

А то со стороны выглядит будто ты втягиваешь нас во что-то плохое
1 май 21, 21:52    [22317310]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 205
x1ca4064
бабушкин зайчик
учитывая, что все классы в итоге разворачиваются в простые ф-и и происходит это именно в асме, ООП в асме звучит просто абсурдно.


Попробуйте ответить (для себя, хотя бы):
Чем метод отличается от обычной процедуры?
Чем виртуальный метод отличается от метода?

После ответов на эти вопросы, ООП на асме, возможно, перестанет быть абсурдным.
Или нет?

да никогда он не перестанет быть абсурдом
то что в асме можно обращаться к одним и тем же адресам памяти не является наследованием и не делает его ООП (также как и не делает ООП из C)
ООП - это работа с объектами. Т.е. с тем, что можно разом всё унаследовать, например.
Можно создать несколько штук одного и того же объекта, например.
Причём с разными интерфейсами...
ГДЕ это всё в асме?

Сообщение было отредактировано: 1 май 21, 23:01
1 май 21, 23:07    [22317325]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Хороший вопрос, равняется ли ООП-в-ассемблере ООП-в-JavaScript?
1 май 21, 23:43    [22317336]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29805
DERSA fan,

вы немного опоздали, и кроме того застряли в коллективе, который упорно следовал выбранному "один раз и навсегда" пути.
Это еще ДО 2000 года называлось "А ты разработал свой собственный Framework?". Да, был такой мем.
И потом разные люди с этими фреймворками шарились по разным конторам с попытками их продать
(причем, я лично общался с несколькими такими полусумасшедшими людьми).
Но никому такая частная разработка была нафиг не нужна, потому что она слишком сложна в сопровождении, и слишком абстрактна.
Продать это можно только на уровне готовых решений - типа SAP и других ERP.
То есть, если у вас нет бабла на продвижение готового решения - никому ваш абстрактный фреймворк не упёрся.

И тут дело не в ООП или еще чем-то, а исключительно в способности впарить клиенту не голый "фреймворк", а готовое решение.
Увы, такова правда жизни.
2 май 21, 00:01    [22317340]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Согласен насчет готовых решений. Несколько лет назад один господин предлагал "квинтетную модель" данных
в БД и на его стороне был не пустой фреймворк а много внедренных задач. Это - самое ценно достижение
в самописках.
2 май 21, 00:10    [22317345]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
x1ca4064
Member

Откуда:
Сообщений: 1269
бабушкин зайчик

да никогда он не перестанет быть абсурдом
то что в асме можно обращаться к одним и тем же адресам памяти не является наследованием и не делает его ООП (также как и не делает ООП из C)

Какая связь между обращением "к одним и тем же адресам памяти" и наследованием с ООП?

ООП - это работа с объектами. Т.е. с тем, что можно разом всё унаследовать, например.
Можно создать несколько штук одного и того же объекта, например.
Причём с разными интерфейсами...
ГДЕ это всё в асме?

Это все легко реализуемо на любом языке, который поддерживает косвенный вызов процедур и какой-то аналог ссылок. Да, это будет менее "сладко", чем в языках, где объектами специально озаботились, но стиль и удобство работы сохранится.
Объект - это, по сути, запись/структура, а с ними умеют работать что C, что асм (разные по разному, но это не суть), но даже в языках, где нет структур, реализация ООП возможна (на массивах/кортежах, например).
Похоже, Вы не ответили на заданные мной вопросы.
2 май 21, 01:02    [22317346]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 205
x1ca4064
Какая связь между обращением "к одним и тем же адресам памяти" и наследованием с ООП?

это самое близкое к наследованию, что можно найти в асме
x1ca4064
Это все легко реализуемо на любом языке,

да вы што видать поэтому пришлось аж целый C++ изобретать, потому что было слишком легко на C
x1ca4064
Объект - это, по сути, запись/структура, а с ними умеют работать что C, что асм

структура в C - это огрызок объекта, не умеющий ничего из того, что выше перечислено...
Ну кроме создать объект конечно, но это самое меньшее из того, на что способен нонешний ООП.
x1ca4064
Похоже, Вы не ответили на заданные мной вопросы.

похоже, вы далеки от темы ООП.
2 май 21, 01:48    [22317350]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
x1ca4064
Member

Откуда:
Сообщений: 1269
бабушкин зайчик

похоже, вы далеки от темы ООП.


Возможно :) но хотелось бы убедится, что мы говорим об одном и том же, поэтому скажите чем метод и процедура отличаются? А то вдруг Вы из параллельной вселенной, где с объектами работают "через одни адреса" :)
2 май 21, 03:14    [22317362]     Ответить | Цитировать Сообщить модератору
 Re: ООП и моделирование систем  [new]
Андрей Юниор
Member

Откуда: Москва
Сообщений: 748
Начинать всегда нужно с определений. Пока не даны определения, обсуждение беспредметно.

В известной книге Чистая Архитектура парадигмы программирования определяются ограничениями, а не возможностями. Что весьма логично: на ассемблере мы можем написать любой код просто по тому, что в итоге весь код выполняется на машинных инструкциях. Обратное не получится.

Кстати, "невероятно важный принцип ООП" - наследование - уже более десятка лет рассматривается некоторыми специалистами как плохая практика. Потому что запутывает код и усложняет отладку, что противоречит самой идее создания языков программирования высокого уровня. А также противоречит другому "фанатически важному принципу ООП" - инкапсуляции.

Поэтому на ассемблере можно применять архитектурные решения любых парадигм, но так как ассемблер не даёт никаких проверок и гарантий (чем обычно занимают компиляторы, рантайм), то ни о какой парадигме программирования на уровне языка речь быть не может.
2 май 21, 03:21    [22317364]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Вопрос-Ответ Ответить