Forth
http://fforum.winglion.ru/

ООП в форте как он должен выглядеть?
http://fforum.winglion.ru/viewtopic.php?f=4&t=3233
Страница 2 из 2

Автор:  Victor__v [ Вт апр 23, 2019 10:19 ]
Заголовок сообщения:  Re: ООП в форте как он должен выглядеть?

Hishnik писал(а):
А сопоставление словарей и объектов уже было?

Лично автор этого сообщения пилит свою реализацию ООП, которая уже облегчает по мнению автора процесс написания программ так или иначе работающих с объектами.
Поэтому смысл Вашего сообщения несколько ускользает от моего понимания.
Проще говоря, что имеется ввиду?

Автор:  Hishnik [ Вт апр 23, 2019 23:30 ]
Заголовок сообщения:  Re: ООП в форте как он должен выглядеть?

Victor__v писал(а):
Проще говоря, что имеется ввиду?

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

Тем не менее, попытки сделать ООП в Форте возникают достаточно регулярно. У меня даже возникло соображение, что дело может быть и не в ООП как таковом, а в реализации определенного стиля программирования, или просто разработке удобного синтаксиса. Потому что регулярное появление у разных разработчиков схожих идей свидетельствует скорее о наличии объективной потребности в чем-то похожем на объекты.

Автор:  Victor__v [ Вт апр 23, 2019 23:51 ]
Заголовок сообщения:  Re: ООП в форте как он должен выглядеть?

Как я дошёл до такой жизни.

Объект суть структура отражающая ту или иную программную сущность (масло масленное).
И должны быть слова, которые могут работать с этими структурами.
И получается, что как-то напряжно каждый раз передавать доп. параметром указатель на эту самую структуру, особенно в служебных словах.
Если его как-то завуалировать, то процесс идёт проще (я сделал черел лок. переменную как в СПФ-ской либе, микроклассов).
Да и синтаксис можно упростить.
К примеру, вместо того, чтобы писать что-то вроде file-strut-sizem men-struct-size и пр.
Писать SIZE-OBJ: file SIZE-OBJ: men
Меньше путаницы.

Автор:  reijii [ Сб апр 27, 2019 20:35 ]
Заголовок сообщения:  Re: ООП в форте как он должен выглядеть?

Цитата:
И получается, что как-то напряжно каждый раз передавать доп. параметром указатель на эту самую структуру, особенно в служебных словах.


Да, так удобно записывать. Только вот на низком уровне эти параметры всё равно передаются, скрытно. В "крестах" (C++) this передаётся в ECX (в 32 битном варианте).

Это удобство стоИт на абстракции которой в форте нет. Имитация её в форте приведёт к ограничениям. Вот это вот мне и чешет мозг больше всего. Ограничение голой машины Тьюринга (чем форт по-сути является) до уровня си-подобной абстракции.

Типа на тебе костыли - на них безопаснее. И пофиг, что без костылей ты можешь бегать и прыгать, а на костылях нет.

Автор:  Victor__v [ Сб апр 27, 2019 21:10 ]
Заголовок сообщения:  Re: ООП в форте как он должен выглядеть?

reijii писал(а):
Цитата:
И получается, что как-то напряжно каждый раз передавать доп. параметром указатель на эту самую структуру, особенно в служебных словах.


Да, так удобно записывать. Только вот на низком уровне эти параметры всё равно передаются, скрытно. В "крестах" (C++) this передаётся в ECX (в 32 битном варианте).

Да ладно (тут мем "лицо Якубовича")
Я и не знал :))

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

Автор:  Ethereal [ Сб апр 27, 2019 22:36 ]
Заголовок сообщения:  Re: ООП в форте как он должен выглядеть?

Victor__v писал(а):
Объект суть структура отражающая ту или иную программную сущность (масло масленное). И должны быть слова, которые могут работать с этими структурами.
сущность, структура, все это можно представить как запись. А слово для создания записей в спф-форте можно подсмотреть. Это слово -- суть прибавление смещения от начала структуры. И больше ведь ничего не надо.

0 \ Определение объекта :
...
CЕLL -- Имя_метода
...
CONSTANT Размер_объекта

Имя_экземпляра_объекта CREATE Размер_объекта ALLOT

' Метод Имя_экземпляра_объекта Имя_метода ! \ Инициализация виртуального метода

<параметры> Имя_экземпляра_объекта Имя_метода EXECUTE

Victor__v писал(а):
Это тупо повышает понятность кода.
Интуитивная понятность кода хороша пока не начнешь ловить ошибки. А тогда нужна не интуитивная, а абсолютная понятность. А она достигается минимумом сущностей. Ведь мне чтобы отловить ошибку придется пол твоей Новы разгребать, чтобы уяснить что это за объекты ты там наклепал, как они работают и не там ли косяк зарылся. Вот если ты пишешь Нову только для себя, то и понятность нужна только для тебя. Тогда конечно можно наворотить что угодно.

Мысль - не надо добавлять сущностей, которые принципиально нового не дают и лишь следуют моде. Ведь какой огород ни городи все равно все сведется к
<параметры> Имя_экземпляра_объекта Имя_метода EXECUTE
и менимальнее не сделать. А это достигается добавлением единственного
: -- ( n1 n2 -- n1+n2 ) CREATE OVER , + DOES> @ + ;

Страница 2 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/