Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 16:31

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Флуд: Как бы вы реализовали мн. наследование в ООП на форте?
СообщениеДобавлено: Пт сен 11, 2020 16:53 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Собственно вопрос в заголовке)

А то тут подумалось.
Вот у меня есть объект с функциями-словами.
А я хочу прикрутить к дочернему объекту еще реализацию стека.
То есть, собственно, сделать так, чтобы дочерний объект был дочкой 2-х объектов (А и объекта с реализацией стека).
Поскольку писать для дочернего объекта реализацию чего бы то ни было, что можно вынести в другой объект глупо и не дальновидно.

Ну и кто что посоветует?
Как сделать реализацию ООП с множественным наследованием на всеми нами лелеемом форте?

И поехали :hey;

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Пт сен 11, 2020 19:42 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Victor__v писал(а):
Собственно вопрос в заголовке)

....

Ну и кто что посоветует?
Как сделать реализацию ООП с множественным наследованием на всеми нами лелеемом форте?

И поехали :hey;

А оно вообще нужно (в частности и ООП-о в общем)? :P


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Пт сен 11, 2020 22:39 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Конечно, нужно)
Я бы и не спрашивал в противном случае :))

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Сб сен 12, 2020 03:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Словарь FORTH, в нем словарь MYVOC. Слово MYWORD имеет варианты в обоих словарях, так реализуется наследование и полиморфизм. Если делать не в стиле ANS ("угадай, в каком порядке будет поиск в словарях именно сейчас"), а со статической иерархией словарей, то все, чего нет в MYVOC, будет продолжено поиском в FORTH.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Сб сен 12, 2020 14:34 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Hishnik писал(а):
Словарь FORTH, в нем словарь MYVOC. Слово MYWORD имеет варианты в обоих словарях, так реализуется наследование и полиморфизм. Если делать не в стиле ANS ("угадай, в каком порядке будет поиск в словарях именно сейчас"), а со статической иерархией словарей, то все, чего нет в MYVOC, будет продолжено поиском в FORTH.


Какая связь между ООП и ANSI?

И Вы коснулись самого простого - собственно, поиска слов-методов. А вот что с полями у объекта как быть, м?
Ведь у разных объектов размые смещения полей. И совместить их, просто так не получится

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Вс сен 13, 2020 02:38 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
Какая связь между ООП и ANSI?

До ANS поведение словарей давало им свойства объектов в части инкапсуляции, наследования и полиморфизма. С введением ANS и стека словарей ("стек везде" - что-то вроде магии?) цепочка наследования/полиморфизма может быть разорвана в любой момент в runtime. Неудобно.

Victor__v писал(а):
А вот что с полями у объекта как быть, м?
Ведь у разных объектов размые смещения полей.


Тут, видимо, есть два аспекта.
1. Что сделать с Фортом в рамках его возможностей.
Словари похожи на объекты. Они их не копируют, поскольку у Форта свои типовые приемы работы - например, не огромные связанные структуры взаимно зависимого кода, а маленькие, минимально зависимые, и всего лишь имитирующие какое-то поведение, когда они начинают использоваться вместе.
2. Как написать на Форте что-то еще, что есть в другом языке.
Видимо, компактность решений на Форте тут мало чем поможет сама по себе. Если нужна поддержка структур данных, ее придется как-то писать. Мы пробовали, неоднократно, в стиле Форта решение пока не находится (в том смысле, что код короткий, независимый и т.д.).

Можно попробовать рассмотреть общение объектов-словарей через EVALUATE. Это будет существенно медленнее, однако строка MYOBJECT GETX будет разобрана транслятором с учетом контекста MYOBJECT, и там уж оно само разберется, что такое GETX и к какому адресу он привязан.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Вс сен 13, 2020 12:12 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Hishnik писал(а):
До ANS поведение словарей давало им свойства объектов в части инкапсуляции, наследования и полиморфизма.


Ты ему про аномалии, а он тебе про хабар ANSI и словари :))
Да, разумеется, можно сделать ООП поверх словарей. Но это одна из возможных реализаций.
Можно же и наоборот поступить. Реализовать ООП на структурах и поверх этого ООП накатить словари :)
Словари в этом плане удобны, что RUNTIME позволяют хранить имена методов, которые потом можно скомпилировать.

Hishnik писал(а):
Тут, видимо, есть два аспекта.

Hishnik писал(а):
1. Что сделать с Фортом в рамках его возможностей.

А причем тут возможности форта? Все в большей степени упирается в алгоритмы и технические решения.

В моей реализации есть наследование, полиморфизм, инкапсуляция, а-ля виртуальные методы, конструкторы и деструкторы.
Словари там используются вообще частично.

Hishnik писал(а):
Как написать на Форте что-то еще, что есть в другом языке.

Лично у меня такая задача не стоит. Просто когда имеется под рукой куча данных, ООП самое очевидное решение.
Для реализации у себя деструкторов и конструкторов пришлось делать таблицы, дабы у каждого класса был свой деструктор/конструктор объекта и чтоб все при наследовании фурыкало

Hishnik писал(а):
Можно попробовать рассмотреть общение объектов-словарей через EVALUATE. Это будет существенно медленнее, однако строка MYOBJECT GETX будет разобрана транслятором с учетом контекста MYOBJECT, и там уж оно само разберется, что такое GETX и к какому адресу он привязан.

Рассматривал этот вариант.
Помимо скорости там еще есть проблема разбора строки. Что делать, если, например, очередная лексема не найдена?
И вообще реализация через EVALUATE тянет на реализацию интерпретатора с кучей неочевидных настроек.

Но даже если реализовать ООП через строки, вопрос отсается в силе - как сделать множественное наследование :))

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Вс сен 13, 2020 15:20 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Victor__v писал(а):
В моей реализации есть наследование, полиморфизм, инкапсуляция, а-ля виртуальные методы, конструкторы и деструкторы.
Словари там используются вообще частично.

Если есть уже какое то решение, то что мешает дополнить его недостающей функциональностью?

P.S. Вообще, с моей точки зрения, "правильное" ООП должно строиться на сообщениях как в Smalltalk c поиском методов классов в меняющемся контексте вызова (один из хороших примеров такого подхода в редакторе FEDN Черезова в SPF2.5),
но использование этого варианта не так однозначно и просто. (хотя строить иерархию наследования достаточно просто и приятно)
Если не лень будет изучить такой вариант, то вот мои стародавние эксперименты по улучшению редактора FEDN из SPF2.5 (DOS)
(мне, практика с этим подходом дала некоторое количество интересного опыта)
FEDN SPF2.5 (вопросы по утечке памяти, вроде, так и не были стабилизированы в этом коде и таком подходе с экспериментами в коде :)
ещё был неразрешённый вопрос в одном месте куда вставлять некоторый класс.
(возможно для Черезова будет интересен сей код по развитию его редактора в историческом смысле вопроса, если он прочтёт это сообщение)


Последний раз редактировалось KPG Вс сен 13, 2020 17:49, всего редактировалось 7 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Вс сен 13, 2020 15:33 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
KPG писал(а):
Если есть уже какое то решение, то что мешает дополнить его недостающей функциональностью?

Я и сейчас могу сделать множественное наследование.
Вот только квадратно-гнездовым способом :)

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

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Вс сен 13, 2020 16:06 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Можно ещё подумать о совмещении с ООП и программным кодом из Win32Forth, как частным вариантом полезного расширения Форт-системы. (хотя использование такого Форт ООП немного геморно и противоречит самому использованию базиса Форт в таком варианте его расширения, столкнулся с эти когда улучшал функционал поддержки scite.dll в IDE Win32Forth )


Последний раз редактировалось KPG Вс сен 13, 2020 17:12, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Вс сен 13, 2020 16:37 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
KPG писал(а):
Можно ещё подумать о совмещении с ООП и программным кодом из Win32Forth, как частным вариантом полезного расширения Форт-системы. (хотя использование такого Форт ООП немного геморно и противоречит самому использованию базиса Форт в таком варианте его расширения)

Щито?

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Вс сен 13, 2020 16:41 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Victor__v писал(а):
KPG писал(а):
Можно ещё подумать о совмещении с ООП и программным кодом из Win32Forth, как частным вариантом полезного расширения Форт-системы. (хотя использование такого Форт ООП немного геморно и противоречит самому использованию базиса Форт в таком варианте его расширения)

Щито?

А, что не так?
Вроде не новость, что в Win32Forth используется вариант ООП для построения программного кода. :)

P.S. Близкий вариант JOOP (~day) в SPF4 Joop
(поэтому и написано - вариант ООП :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Пн сен 14, 2020 10:50 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Программный код, извините, чего?
Игры, СУБД, САПР, ИИ по захвату мира?
Код чего именно?

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Пн сен 14, 2020 11:25 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Victor__v писал(а):
Программный код, извините, чего?
Игры, СУБД, САПР, ИИ по захвату мира?
Код чего именно?

Например nnCron точно использует в своём составе либы (net, GUI), которые в свою очередь базируются на class.f (ООП от автора).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо
СообщениеДобавлено: Пн сен 14, 2020 11:26 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Victor__v писал(а):
Программный код, извините, чего?
Игры, СУБД, САПР, ИИ по захвату мира?
Код чего именно?

Опять не понял посыла и сути вопроса. :)

Программный код - созданный в рамках Win32Forth экосистемы. Думаете его нет? (примеры в самой системе, сторонние разработки ... есть и игры и "субд", "Сапр" и варианты "ИИ", и возможно не только в демо-разработках...)
Сам, например, делал и применял Форт-систему программирования для процессора PDP-11 на Win32Forth.
В этом архиве со старой версией Win32Forth для компиляции этого проекта


Последний раз редактировалось KPG Пн сен 14, 2020 12:01, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB