Forth http://www.fforum.winglion.ru/ |
|
Флуд: Как бы вы реализовали мн. наследование в ООП на форте? http://www.fforum.winglion.ru/viewtopic.php?f=7&t=3279 |
Страница 2 из 2 |
Автор: | Victor__v [ Пн сен 14, 2020 11:43 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
KPG писал(а): Опять не понял посыла и сути вопроса. Программный код - созданный в рамках Win32Forth экосистемы. Думаете его нет? (примеры в самой системе, сторонние разработки ... есть и игры и "субд", "Сапр" и варианты "ИИ", и возможно не только в демо-разработках...) Сам, например, делал и применял Форт-систему программирования для процессора PDP-11 на Win32Forth. Я уверен, что в рамках Win32Forth экосистемы есть программный код) Вопрос в другом, что этот код собственно делает. Вы же, как я понимаю, предлагаете переписать ВСЕ ПРОЕКТЫ НА Win32Forth В ООП-СТИЛЕ. Короче, больше конкретики) Ilya писал(а): Например nnCron точно использует в своём составе либы (net, GUI), которые в свою очередь базируются на class.f (ООП от автора). Это здорово, раз там есть ООП. то, надеемся, что он использовался по делу. И? |
Автор: | KPG [ Пн сен 14, 2020 12:10 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
Victor__v писал(а): Я уверен, что в рамках Win32Forth экосистемы есть программный код) Вопрос в другом, что этот код собственно делает. Это, что такой специфичный флуд? Для чего программа создаётся, то в ней и делается в рамках реализованного кода! Victor__v писал(а): Вы же, как я понимаю, предлагаете переписать ВСЕ ПРОЕКТЫ НА Win32Forth В ООП-СТИЛЕ. Короче, больше конкретики) Где я такое говорил? Отнюдь мне не нравится идея ООП для Форт, но, например, Гуишный интерфейс программы вполне с ним неплохо уживается. Если интересный проект реализован в рамках какой то Форт-системы, то не обязательно его переписывать под другую Форт-систему, хотя заготовку проекта Enity.f -редактора узлов (Win32Forth) переписал и улучшил в рамках SPF4 и назвал Простой редактор узлов (первое, с чем там столкнулся при его переносе, что в Win32Forth совсем другой порядок вызова параметров функций Win32API) P.S. Какой конкретики? Конкретика присутствует в коде проектов сделанных в рамках той или иной Форт-системы. Предлагаете начать описывать конкретные проекты и что и как в них реализовано с применением того или иного Форт? |
Автор: | Victor__v [ Пн сен 14, 2020 12:20 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
KPG писал(а): Можно ещё подумать о совмещении с ООП и программным кодом из Win32Forth, как частным вариантом полезного расширения Форт-системы. (хотя использование такого Форт ООП немного геморно и противоречит самому использованию базиса Форт в таком варианте его расширения, столкнулся с эти когда улучшал функционал поддержки scite.dll в IDE Win32Forth ) KPG, давайте еще раз. Что вы предлагаете сделать. По пунктам. |
Автор: | KPG [ Пн сен 14, 2020 12:24 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
Victor__v писал(а): KPG писал(а): Можно ещё подумать о совмещении с ООП и программным кодом из Win32Forth, как частным вариантом полезного расширения Форт-системы. (хотя использование такого Форт ООП немного геморно и противоречит самому использованию базиса Форт в таком варианте его расширения, столкнулся с эти когда улучшал функционал поддержки scite.dll в IDE Win32Forth ) KPG, давайте еще раз. Что вы предлагаете сделать. По пунктам. Как можно что то советовать, если интересы применения Форт у каждого Форт-юзера могут быть разные? P.S. В приведённом проекте ясно же указано, что была идея улучшить поддержку в IDE Win32Forth редактировния Форт кода, в частности добавлена поддержка фолдингa кода и сама scite.dll пересобрана для подсветки Форт-кода по ранее озвученному варианту в рамках местного форума. При этом ещё столкнулся, что пересборка Win32Forth 6.15_ не запускалась в рамках разных Windows. (например можно ещё наблюдать, что пример консольного тетриса в ней не работает, хотя в других версиях с этим нет проблем, а также не собирался пример-программы HeXe с примерами OpenGL) Конечно же, хотелось иметь возможность и запуска кода сделанного под Win32Forth в рамках SPF4, но это не так принципиально (учитывая все сложности сего действия) т.к. Форт достаточно остаётся Фортом в рамках разных Форт-систем и к тому же перенос может быть не так целесообразен как возможность на разной кодовой базе сделать какое то интегрированное решение. |
Автор: | Hishnik [ Пн сен 14, 2020 14:24 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
KPG писал(а): Предлагаете начать описывать конкретные проекты и что и как в них реализовано с применением того или иного Форт? Ой как неожиданно! Давно уже пора. |
Автор: | Victor__v [ Ср сен 16, 2020 17:26 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
Вопрос остаётся в силе: как прикрутить к реализации ООО на форте множественное наследование У кого какие идеи. KPG, вот ваш выход) Поделитесь ссылочкой на форт-систему, в которой есть реализация ООП с множественным наследованием |
Автор: | KPG [ Ср сен 16, 2020 18:12 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
Victor__v писал(а): KPG, вот ваш выход) Поделитесь ссылочкой на форт-систему, в которой есть реализация ООП с множественным наследованием Как же это узнать, если нет такой практики ООП для Форт? P.S. Может Mops близок к необходимому функционалу? The Mops Programming Language—Part 1 The Mops Programming Language—Part 2 (Multiple Inheritance - множественное наследование - упоминается во второй части) Код: Как и несколько других объектно-ориентированных языков, Mops обеспечивает множественное наследование, при котором класс может иметь более одного непосредственного суперкласса и, таким образом, две или более разных линий происхождения, так же как у человека есть и мать, и отец, и наследует характеристики от обоих. Возможность множественного наследования позволяет смешивать функциональные возможности двух или более существующих классов в новом классе. (Сначала попробуйте классы с единичным наследованием.) При необходимости это очень мощная функция, которая часто считается пробным камнем полностью объектно-ориентированной реализации.
|
Автор: | zma [ Ср сен 16, 2020 22:35 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
Hishnik писал(а): Как написать на Форте что-то еще, что есть в другом языке. Видимо, компактность решений на Форте тут мало чем поможет сама по себе. Если нужна поддержка структур данных, ее придется как-то писать. Мы пробовали, неоднократно, в стиле Форта решение пока не находится (в том смысле, что код короткий, независимый и т.д.). Часто ли нужны сложные структуры данных? Правильно ли я понял, что в Вашем случае их реализация на Форте не сильно отличалась от реализаций на других языках? |
Автор: | Hishnik [ Чт сен 17, 2020 02:25 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
zma писал(а): Часто ли нужны сложные структуры данных? Вот тут во многом зависит от того комплекта инструментов, который используется. Если Форт заранее позиционируется как скриптовый, то сложные структуры в программе необязательны. По крайней мере, специально брать Форт в надежде, что там как-нибудь будут реализованы структуры, немного странно. zma писал(а): Правильно ли я понял, что в Вашем случае их реализация на Форте не сильно отличалась от реализаций на других языках? В целом да. Чего-то особенного, укладывающегося в стек/регулярную грамматику, не нашлось. Структуры были в основном синтаксической мимикрией под аналогичные конструкции в других языках. |
Автор: | Victor__v [ Чт окт 01, 2020 22:08 ] |
Заголовок сообщения: | Re: Флуд: Как бы вы реализовали мн. наследование в ООП на фо |
Сам спрашиваю сам предлагаю варианты) 1) Квадратно-гнездовой способ. Суть: при мн. наследовании класса размер объекта изменяется не на всю длинну объекта-родителя, а на CELL (ячейку), в которой будет указатель на объект 2-го родителя. Соотвественно все слова-методы надо перекомпилировать. По факту будет получать значения из указателя по указателю. 2) Хранить во ВСЕХ объектах переменную со смещением для доступа к переменным. Соотвественно, у всех объектов в этой переменной будет записан 0 (ноль). А вот при множественном наследовании значение этой переменной будет иным. +40, например. 3) Такой простой, что уже сложно. При создании класса дополнительно сохраняем его исходник. И когда нам потребуется сделать наследование от 2 и более классов, мы просто прогоним заранее сохраненную строку через EVALUATE Просто, дешево и сердито |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |