Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср окт 28, 2020 11:50

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 158 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 14:43 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
WingLion писал(а):
Т.е. заставить программу тупо тормозить, проверяя, "а что там за операнды?"


Проверку типов можно осуществлять на этапе компиляции. Во время исполнения на это время не уходит.
Моя реализация http://d14-435-04.rtc.ru:8888/f-pl1.rar


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 14:54 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Mihail писал(а):
Проверку типов можно осуществлять на этапе компиляции. Во время исполнения на это время не уходит.
Моя реализация http://d14-435-04.rtc.ru:8888/f-pl1.rar

Ну вот. Уже что-то. Посмотреть надо.

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
А во время компиляции типы данных могут быть принципиально неизвестны!

Вот написал я слово:
: N^2 DUP * ;

Откуда парсер знает, какое именно число я в квадрат возводить собрался, если '*' - "универсальное" на всех? И DUP должнно быть тогда универсальным, знать, что же оно дупит во время работы...
A это значит - проверка на каждом шагу - Тормозззззаааааа....

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 15:17 
Введение типов, в какой то степени тормозит программиста:)
когда по ходу разработки программы можешь спутать одну переменную
с другой. При этом компилятор укажет на ошибку.
Далее ее исправляешь и опять запускаешь компиляцию....
На выяснение типа переменной тоже уходит некоторое время.

В сравнении с фортом введение типовых операций над конкретными
типами позволяет легче следить за кодом без необходимости
типизирования переменных.

P.S. Резюмируя.
Проблема одна, а подходы к ее решению разные


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 15:24 
вопрос писал(а):
(реально - что полезного делает dup ? :dmad; )


Реальное назначение DUP SWAP OVER
решить элегантно проблему локальных переменных
без их именования в коротких определениях.
Да и улучшить эффективност алгоритма!

P.S. Конечно без их злоупотребления.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 15:48 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
WingLion писал(а):
А во время компиляции типы данных могут быть принципиально неизвестны!

Вот написал я слово:
: N^2 DUP * ;


В F-PL типы данных указываются в переключателе в режим с типами.
: N^2 M1_{ WRD WRD } DUP * { WRD }RETURN ; соответвует : N^2 DUP * ;
: FN^2 M1_{ FLT FLT } DUP * { FLT }RETURN ; соответвует : FN^2 FDUP F* ;

Я задумал сделать определения внутри режима с типами - макросами, но не реализовал.


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Mihail писал(а):
: N^2 M1_{ WRD WRD } DUP * { WRD }RETURN ; соответвует : N^2 DUP * ;
: FN^2 M1_{ FLT FLT } DUP * { FLT }RETURN ; соответвует : FN^2 FDUP F* ;

Это ж удавиться легче, чем так писать программы! :(

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 16:40 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
WingLion писал(а):
Вот написал я слово:
: N^2 DUP * ;

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 16:54 
Не в сети
Аватара пользователя

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

В Си, Паскале и многих других, например, так и пишут и что-то массового суицида не замечено :o .

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 16:57 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
WingLion писал(а):
Mihail писал(а):
: N^2 M1_{ WRD WRD } DUP * { WRD }RETURN ; соответвует : N^2 DUP * ;
: FN^2 M1_{ FLT FLT } DUP * { FLT }RETURN ; соответвует : FN^2 FDUP F* ;

Это ж удавиться легче, чем так писать программы! :(


Преимущество от применения режима с типами может проявится только для значительно больших программ.
Для программ типа DUP * кононический форт вообще вне конкуренции.


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
chess писал(а):
В Си, Паскале и многих других, например, так и пишут и что-то массового суицида не замечено Surprised .

А я то недоумеваю, почему я на Си и Паскале ничего не пишу!
А оно вон как...
:shuffle;

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 18:54 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Приведение в порядок - убирание лишних сущностей. Упорядочить стековые манипуляции, арифметику и логику, ввести возможность писать программы и сверху-вниз тоже - это только повышение удобства работы.
Увеличить мощность Форта - все же это главная задача. Мне видится, что это можно сделать путем введения контекстной зависимости в синтаксис Форта. По крайней мере в Форт-компиляторе, который я разработал
я это использую - тексты получаются компактнее, код тоже стал более компактным и быстрым. Правда
структура словарей претерпела некоторые изменения и кодофайл тоже по-другому формируется.
Короче понятие контекстной зависимости у меня сформировано еще не полностью(сырое) и найти отражение проекте нового стандарта в теперешнем виде быть не может. Но кое-что уже сказать можно.
Кратко - поведение слова в тексте программы зависит от контекста. Под контекстом понимается слово которое стоит перед ним или после него. Поведение слова может являться функцией от предыдущего слова или от последующего слова. То есть зависимости может и не быть. Если слово в тексте программы определяется второй раз и при этом указан begin-контекст, то в слово добавляется действие, которое будет выполняться если перед словом будет слово=begin-контекст. Если end-контекст, то новое действие будет выполняться если после слова стоит слово=end-контекст. Пока только так.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 28, 2006 19:44 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
chess писал(а):
По крайней мере в Форт-компиляторе, который я разработал
я это использую - тексты получаются компактнее, код тоже стал более компактным и быстрым.


Или выкладывай или неупоминай. Иначе, толку никакого.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 29, 2006 14:37 
Не в сети
Аватара пользователя

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

Как-то выложил свой целевой компилятор на forth.org.ru, а потом его оттуда убрали - сейчас желание выкладывать
пропало. Да и толку - никто чужих текстов не смотрит(кроме тебя наверно :) ).
Обмен мнениями на уровне идей считаю для форума достаточным.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 03, 2006 13:09 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
О способах задания контекстной зависимости слов.
Контекстную зависимость исполнения слов можно задавать как на этапе компиляции, так и в рантайме.
Первый вариант предпочтительнее, так как он не скажется на скорости исполнения кода программы.
Контекст исполнения можно задать через системную переменную типа VALUE. Назовем ее для конкретики EVENT. Исходно она установлена в 0.
Пусть определено слово Word2 в первый раз ( : Word2 ... 0 TO EVENT ; ).
Для введения его контекстно-зависимого исполнения от слова Word1, которое в тексте программы будет стоять перед ним, в определении слова Word1 устанавливаем 1 TO EVENT.
При определении слова Word2 во второй раз создается новое слово Word2(Event1) для EVENT=1, после завершения создания которого Event снова устанавливается в 0.
При определении слова Word2 в третий раз создается новое слово Word2(Event2) для EVENT=2, после завершения создания которого Event снова устанавливается в 0. И т.д. и т.п.
При необходимости слово Word2 берет из слова Word1 нужные ему параметры, которые слово Word2 использует также взависимости от контекста. Такой подход ориентирован на отсутствие словарей в выходном коде(целевая компиляция без словарей в выходном коде), поэтому оптимальность реализации словарей для инструментальной системы особого значения не имеет. Например значение контекста может быть смещением для таблицы адресов вариантов кода для Word2.
Допустимы случаи и с общими частями кода в вариантах кода Word2.

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


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

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


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

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


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

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