Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн дек 17, 2018 07:21

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Еще раз о словарях
СообщениеДобавлено: Пт сен 21, 2018 00:06 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 678
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
mOleg писал(а):
ath писал(а):
Идея стека контекста мне нравится. Стандарту она не противоречит.

Важнее, что стек контекста органично вписывается в Форт.


Вот объясните мне молодому почему реализация контекста была изначально в виде списка в стандарте, а не в виде стека?
Или я что-то путаю?

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Каллисто 1.0 для «Электроники МК-161»
СообщениеДобавлено: Пт сен 21, 2018 01:04 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
ath писал(а):
ANS действительно был «однонаправленный и в форме диктата». Тем не менее, оказался полезен и для СПФ. Forth 20xx — намного более открытая система. Если есть «вечные истины» вне западного «междусобойчика», их вполне можно внести в готовящийся стандарт.

В итоге для СПФ кроме пары "флагманских проектов" ничего особо показать не получается. Сценарий удивительно регулярно повторяется - приходит новый фортер с ожиданием, что совместимость со стандартом означает наличие развитой инфраструктуры языка. Вместо этого от него ожидают, что он эту инфраструктуру и начнет обеспечивать, просто потому, что понятие "стандартный Форт" уже занято. Где сейчас Черезов? Вопрос риторический - я знаю, что СПФ он забросил давно, и на Форте по работе не пишет. Интересная такая помощь.
ath писал(а):
У хороших идей сила куда выше юридической.

О чем и речь. Форт во многом понятие из сферы теории программирования. Он реализует определенную модель вычислений и модель грамматики. Придумывать под эти базовые принципы какие-то наборы слов и заявлять, что только так и правильно - либо неграмотность, либо излишние нахрапистые амбиции. Если программист освоил на практике принципы построения форт-системы, за какой такой надобностью ему нужно разрешение от комитета по стандартизации? Сказки о том, что с принятием стандарта сотни программистов объединятся и заживут дружно и богато, рассказывают годами. У этих сказок есть свои выгодоприобретатели - лица, допущенные к редактированию стандарта, которые могут туда вписать что им нравится. Были бы это действительно лидеры рынка, сильно зависящие от реальной эффективности применяемых решений, можно было бы к ним прислушиваться. А на текущий состав комитета без слез не взглянешь. Хочется некоторым леденец на палочке вручить.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Каллисто 1.0 для «Электроники МК-161»
СообщениеДобавлено: Пт сен 21, 2018 01:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Victor__v писал(а):
Вот объясните мне молодому почему реализация контекста была изначально в виде списка в стандарте, а не в виде стека?

Нормальный вариант. Стек же не волшебная вещь, чтобы его применение автоматически превращало все в идеал. Например, иерархия классов вполне представляется в виде списков (с разными точками входа), а попытка класть это все на стек провоцирует ошибки, потому что можно переложить на стек неправильно. Как правило, проектируя словари, программист в целом понимает их структуру. Зачем же там стек? Просто чтобы "по-фортовски"?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Каллисто 1.0 для «Электроники МК-161»
СообщениеДобавлено: Пт сен 21, 2018 09:04 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 678
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Ну а что укладывается в контекст?
Если указатель на структуру, то стек удобнее и проще в реализации
Насчёт иерархии классов не понял.
Наверно, сказываются разные подходы к архитектуре форт-систем :)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Каллисто 1.0 для «Электроники МК-161»
СообщениеДобавлено: Пт сен 21, 2018 10:17 
Не в сети

Зарегистрирован: Вт ноя 07, 2017 20:47
Сообщения: 80
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Стек контекста в Каллисто нужен для эффективности. Массив из списков слов быстрее просматривается, чем список, и занимает меньше места в весьма ограниченной памяти МК-161.

Также я не согласен с тем, что Форт-2012 навязывает список. Если это так, можно ссылку на forth-standard.org ?

Стандарт фиксирует интерфейс, то есть GET-ORDER и SET-ORDER . Их внутренние «потроха» это интимное дело реализации.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Каллисто 1.0 для «Электроники МК-161»
СообщениеДобавлено: Пт сен 21, 2018 21:00 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Victor__v писал(а):
Вот объясните мне молодому почему реализация контекста была изначально в виде списка в стандарте, а не в виде стека?

списка не было. Был один текущий и один контекстный словарь. А словари связывались в древовидную структуру. Т.е. поиск начинался с вершины (контекстного словаря) к корню, что было достаточно просто в реализации но совершенно неуправляемо. Нельзя было перестроить цепочку поиска, можно было лишь оборвать ее. Стек контекста позволил перестраивать порядок поиска, оставлять только нужное, что на мой взгляд является шагом вперед.

Victor__v писал(а):
Но смысл использовать вместо органичного стека список?

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

Victor__v писал(а):
Наверно, сказываются разные подходы к архитектуре форт-систем :)

Имхо, сказывается непонимание архитектуры Форта, желание привнести что-то чужеродное но привычно-знакомое.
Это как с обсуждением скобок в качестве ограничения комментария. Выглядит не очень обоснованно для привычных к сям и там, а фортера вообще не напрягает, потому как привычно, понятно, удобно.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Каллисто 1.0 для «Электроники МК-161»
СообщениеДобавлено: Пт сен 21, 2018 23:23 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Victor__v писал(а):
Насчёт иерархии классов не понял.
Наверно, сказываются разные подходы к архитектуре форт-систем

Как это работает в ООП. Допустим, есть базовый объект "точка". От него строим "окружность", у которого кроме точки есть радиус. От точки строим прямоугольник - точка, ширина, высота. От прямоугольника строим "прямоугольник со скругленными углами" - прямоугольник, радиус скругления. Это все структура, которая не подлежит изменению.

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

Отсюда и вопрос - какая есть практическая необходимость постоянно менять порядок поиска? Причем речь именно о необходимости, потому что аргумент "сейчас придумаем подходящий пример" не образует статистики. То есть пока фанат помнит все нюансы, он будет раз за разом использовать неудобную вещь, потому что использование этой неудобной вещи является "подтверждением эффективности".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Каллисто 1.0 для «Электроники МК-161»
СообщениеДобавлено: Сб сен 22, 2018 15:05 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Hishnik писал(а):
Отсюда и вопрос - какая есть практическая необходимость постоянно менять порядок поиска?

я боюсь, что бесполезно объяснять, уж сколько копий сломано 8(
ну, к примеру, у меня есть параметры, которые я набираю в консоли перед запуском своей программы, ну там всякие: -file -help и т.п., и я не хочу писать еще один интерпретатор ради разбора единственной строки параметров, но, так как я пишу не для себя, я должен скрыть все лишнее, т.е. в контексте должны быть только ключи и не должны, например, распознаваться числа, а должны распознаваться углы,
кроме того у меня есть файл с настройками всякими (some.ini) в котором всякие настройки, и опять мне нужно, чтобы видно было только их, а все остальное должно быть сокрыто.
Что делаю я:

Код:
VOCABULARY INTERFACE
  ALSO INTERFACE DEFINITIONS

: -file ... ;
: -help ... ;

PREVIOUS DEFINITIONS

VOCABULARY INITIAL
ALSO INITIAL DEFINITIONS
: base .. ;
: limit .. ;
: step .. ;
и всякое такое
PREVIOUS DEFINITIONS

я получил два изолированных словаря, которые я могу использовать нужным мне образом.
Дальше во время инициализации я делаю:
ONLY ANGLES ALSO INTERFACE
и разбираю параметры, при этом числа у меня не распознаются, т.к. не нужны.
в следующей фазе я подключаю .ini файл, и перед этим пишу
ONLY INITIAL
и разбираю файл.

И так далее, и тому подобное.

В старом стандарте нет (на сколько я помню и в старых фортах) возможности стандартным путем ограничить поиск до корня словарей, приходилось цепочку словарей обрывать. Когда появился СМАЛ32 с контекстом словарей я вздохнул свободно.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз о словарях
СообщениеДобавлено: Сб сен 22, 2018 18:36 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
mOleg писал(а):
я боюсь, что бесполезно объяснять, уж сколько копий сломано 8(

А "объяснять" тут слишком громкое слово. Может создасться впечатление, что я чего-то не понимаю, и мне начинают "объяснять".
mOleg писал(а):
ну, к примеру, у меня

А вот это именно то, о чем я написал в предыдущем сообщении. Вместо анализа и сравнения с другими подходами используется аргумент "мне надо и я могу привести пример". К этому можно еще добавить отсылку к "мировому сообществу, которое так делает, и теперь надо осознать и заучить новую истину". В итоге обоснованное принятие решения зачем-то предлагается заменить на "мне надо, и все тут!".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз о словарях
СообщениеДобавлено: Вс сен 23, 2018 20:24 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Hishnik писал(а):
А вот это именно то, о чем я написал в предыдущем сообщении. Вместо анализа и сравнения с другими подходами используется аргумент "мне надо и я могу привести пример".

Приведи пример, как реализовать перестройку порядка поиска или выключить лишнее из цепочки поиска в старом варианте.
чисто для сравнения

вернусь чуток назад:
Hishnik писал(а):
Отсюда и вопрос - какая есть практическая необходимость постоянно менять порядок поиска? Причем речь именно о необходимости, потому что аргумент "сейчас придумаем подходящий пример" не образует статистики.

необходимость появляется по ходу решения конкретных задач.
Но, кто сказал, что менять порядок поиска необходимо постоянно? - меняется по мере необходимости, а необходимости менять постоянно пока что не появлялось в моей практике.

Hishnik писал(а):
потому что аргумент "сейчас придумаем подходящий пример" не образует статистики

кстати, пример вполне реальный и работающий (не придуманный).

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз о словарях
СообщениеДобавлено: Вс сен 23, 2018 22:53 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
mOleg писал(а):
Приведи пример, как реализовать перестройку порядка поиска или выключить лишнее из цепочки поиска в старом варианте.

Переписать указатель на словарь-родитель. Это если словари спроектированы так, что таким вообще надо заниматься. Если слово не должно быть найдено, то может быть, дополнительный парсер реализовать? Есть же варианты кроме словарей, зачем тащить в проект технологию, просто чтобы оправдать ее наличие?
mOleg писал(а):
Но, кто сказал, что менять порядок поиска необходимо постоянно? - меняется по мере необходимости, а необходимости менять постоянно пока что не появлялось в моей практике.

То есть пересобирать порядок поиска - это нормально? Даже с учетом того, что ошибка в перечислении словарей чревата проблемами? Тут вопрос не в том, "работают" ли примеры (потому что в большинстве случаев все, что компилируется, что-то да делает), а в том, какие долговременные последствия могут быть от решения. И вопрос бритвы Оккама, который чисто методологический. Вот была какая-то система со словарями - зачем ее надо трогать? Какие конкретные систематические тенденции прошли в программировании вообще (а не конкретно в Форте), что надо поменять принцип организации словарей? Это вопрос уже какой-то сектантский получается - можно просто добавить в стандарт любую глупость и посмотреть на появляющиеся форт-системы, чтобы понять, сколько есть в распоряжении сектантов. Сколько систем эту глупость повторят (и даже попытаются обосновать), столько и сектантов-авторов, которым все равно что, лишь бы как у выбранных для поклонения идолов.

mOleg писал(а):
кстати, пример вполне реальный и работающий (не придуманный).

Я уже писал - "не образует статистики". Когда надо одному - это ни о чем не говорит. Никто не мешает реализовывать в Форте то, что нравится, но в стандарт-то зачем тащить? Чтобы создалось ощущение толпы, помогающее справляться с сомнениями? Если есть более одного варианта решения, фиксация любого из вариантов приведет только к разделению на секты. В языках стандарт описывает десятки ключевых слов, но не сотни прикладных. А в текущем ANS именно что сотни прикладных слов, которые к тому же частично противоречат другим стандартам - к примеру куда более распространенного POSIX.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз о словарях
СообщениеДобавлено: Пн сен 24, 2018 13:48 
Не в сети

Зарегистрирован: Вт ноя 07, 2017 20:47
Сообщения: 80
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Новая (относительно, 1994 год) система из ANS более гибкая и включает старую, как частный случай.

До ALSO/ONLY поиск тоже проходил в нескольких словарях. Но их порядок был жёстко задан разработчиком и не очевиден тому, кто словари использует. Часто это замедляло компиляцию, когда словарь FORTH просматривался дважды — и как контекст, и как текущий. Иногда трижды. :D

При необходимости и сейчас можно вернуться к старому способу, написав слова для перехода в фиксированный набор контекстных словарей:
Код:
: EDITOR   ONLY FORTH ALSO EDITOR-NEW ;


Но также теперь можно и накладывать новые словари-макросы, не меняя сложившийся контекст из списков слов — хоть поверх FORTH , хоть поверх EDITOR , хоть поверх своих библиотек.

Ещё плюс в том, что ассемблер в END-CODE (да и другие макроязыки) может с помощью PREVIOUS возвращаться не сразу в FORTH , а в этот гибкий контекст. Который теперь, повторюсь, задаётся не разработчиками библиотек, а их пользователями.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз о словарях
СообщениеДобавлено: Ср сен 26, 2018 17:55 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 678
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Короче, зря спросил :shuffle;

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз о словарях
СообщениеДобавлено: Ср сен 26, 2018 18:42 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Victor__v писал(а):
Короче, зря спросил

а моего ответа не достаточно?

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз о словарях
СообщениеДобавлено: Чт сен 27, 2018 01:28 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6454
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Victor__v писал(а):
Короче, зря спросил

Слушать можно всех, а решение лучше принимать самому. В Форте вообще, и в словарях в частности.

P.S. Да и в жизни.


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

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


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

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


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

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