Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср окт 23, 2019 15:24

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: локальные фреймы данных
СообщениеДобавлено: Ср мар 28, 2012 20:39 
Wlad писал(а):
Если брать семантический уровень реализации модели, то как вы "переход к словам, минуя структуры" обоснуете с точки зрения к атрибутам объектов? ОСОБЕННО, при их изменениисо стороны внешних воздействий?
Прошу прощения, перестал регулярно посещать этот Форум (уж очень, как-то, со всеми не согласен). Поэтому, с опозданием...
Что касаемо атрибутов... Хотелось бы написать, что подобные идеи Forth противопоказаны, с его-то концепцией слово-действие. Но... Сам Мур в своей давнишей книге предложил что-то вроде объектов - поля. С методами... Интересно, это действительно писалось в 70-м году? Мне, все же, кажется, что если Вам нужны атрибуты, их нужно запихнуть внутрь Вашей версии ядра: что-то вроде SmallTalk или словарные статьи ориентированные не на действия, а на параметры. В рамках же стандарта "по Броуди": класс == словарь.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: локальные фреймы данных
СообщениеДобавлено: Ср мар 28, 2012 20:43 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
gudleifr писал(а):
Что касаемо атрибутов... Хотелось бы написать, что подобные идеи Forth противопоказаны, с его-то концепцией слово-действие.

Я уже говорил, что у вас странный взгляд на Форт ?
В форке все кроме lfa cчитается атрибутом и потенциально может быть изменено.
Какого-либо противоречия с Фортом я не вижу, более того, считаю более логичным выбранный подход 8)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: локальные фреймы данных
СообщениеДобавлено: Ср мар 28, 2012 20:53 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
gudleifr писал(а):
С теми же локалсами. Да, используя их, можно писать почти как на C. Но, зачем писать "как на C"? Покажите мне реально полезную программу, которая после добавления локалсов стала красивее и лучше, чем без них. Докажите, что подобных результатов нельзя добиться используя другие, традиционные для Forth средства.

Да можно, можно, только бывает удобнее и так и этак.
Не всегда пишется качественная продуманная программа, иногда "набросок на коленке" гораздо полезнее и удобнее.

Wlad писал(а):
Например в Обероне-07 вообще запрещён синтаксически доступ к переменной из другого модуля напрямую. Читать - читай! А писать - только через вызов процедуры или метода.

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: локальные фреймы данных
СообщениеДобавлено: Ср мар 28, 2012 22:05 
gudleifr писал(а):
В рамках же стандарта "по Броуди": класс == словарь.

Если продолжить эту аналогию, то: методы и свойства класса == элементы словаря (слова).
Но, что будет поставлено в соответствие "объекту" (экземпляру класса)? И, как он создается?

Другая возможная аналогия: словарь ? объект.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: локальные фреймы данных
СообщениеДобавлено: Ср мар 28, 2012 22:36 
Wlad писал(а):
gudleifr писал(а):
Простой и надежный механизм структур, унаследованный от C. Так, нет же, поощряется создание специальных методов (т.е. слов) для доступа к отдельным полям. И даже в С некоторые пытаются так делать. А в Forth можно сразу перейти к нужным словам, минуя структуры...
Wlad писал(а):
Если брать семантический уровень реализации модели, то как вы "переход к словам, минуя структуры" обоснуете с точки зрения к атрибутам объектов? ОСОБЕННО, при их изменениисо стороны внешних воздействий?


\ "структура"
0
CELL -- A
CELL -- B
CELL -- C
CONSTANT /struct

\ "доступ к отдельным полям"
: getA ( object -- x ) A @ ;
: setA ( x object -- ) A ! ;

\ "перейти к нужным словам, минуя структуры"
WORDLIST CONSTANT object ALSO object CONTEXT ! DEFINITIONS
VARIABLE A VARIABLE B VARIABLE C
: getA ( -- x ) A @ ;
: setA ( x -- ) A ! ;
PREVIOUS DEFINITIONS

\ "изменение со стороны внешних воздействий"
123 object::setA
123 `setA object send-message


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: локальные фреймы данных
СообщениеДобавлено: Ср мар 28, 2012 23:16 
spf писал(а):
...
Нет, рабское подражание нам не нужно. См., например, у Броуди про зеленые и красные яблоки...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: локальные фреймы данных
СообщениеДобавлено: Чт мар 29, 2012 13:57 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Wlad писал(а):
Вот мне очень бы хотелось глянуть, как это сделано!

Все выглядит очень просто:
Код:
: m1 a) a @ IF 1 ELSE 2 THEN . ;  \ определяем первый модуль с локальной для этого модуля переменной a
+: m2 b) 1 a ! m1 0 a ! m1 ;                       \ определяем второй модуль
                                                                  \ во втором модуле пишем в переменную a первого модуля
m2  ( 1 2 ) \ результат работы второго модуля с включением первого

ps. Идея состоит в том, что локальный словарь первого модуля "растягиваем" на второй модуль, определяемый сразу после первого модуля. Растяжка делается с помощью слова +:
Если бы вместо +: было : , то для второго модуля был бы создан свой локальный словарь, а старый лок. словарь для определения
первого модуля в части имен слов был бы удален. В итоге к переменной а не будет доступа ниоткуда кроме как из модулей 1 и 2.

_________________
С уважением, chess


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

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


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

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


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

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