Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 23, 2024 14:40

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 209 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 14  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 20, 2006 16:38 
Не в сети

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

Код:
REQUIRE   { ~mak\locals1.f
: NOTFOUND { a u -- ... }
  STATE @ 0= IF a u NOTFOUND EXIT THEN
a u ['] NOTFOUND CATCH
  IF 2DROP a u POSTPONE SLITERAL POSTPONE EVALUATE THEN
;

: XXX YYY ;
: YYY ." ZZZ" ;
XXX


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Mihail писал(а):
Из языка написанном на Си нет доступа к средствам самого Си компилятора.

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

Mihail писал(а):
Комуто может и интересно. Может быть есть возможность сделать Си расширяемым
в рантайме.

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

... и мы приходим к ShellExecute. Где тут Форт-то? И сейчас можно вызвать компилятор Си, заставить его сделать dll, и обратиться к этой dll. Зачем обязательно набрать весь код транслятора Си на Форте?


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

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


Код:

REQUIRE { ~mak\locals1.f
: NOTFOUND { a u -- ... }
STATE @ 0= IF a u NOTFOUND EXIT THEN
a u ['] NOTFOUND CATCH
IF 2DROP a u POSTPONE SLITERAL POSTPONE EVALUATE THEN
;

: XXX YYY ;
: YYY ." ZZZ" ;
XXX

Почему-то в консоли после трансляции нового NOTFOUND печатается @@@, а так
вроде работает. Вроде, потому, что неясно будут-ли побочные эффекты.

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


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

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


Это я в devel\~mak\locals1.f забыл убрать ." @@@"


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Mihail писал(а):
Это я в devel\~mak\locals1.f забыл убрать ." @@@"

Спасибо - нашел и убрал.

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


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

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

Однако в режиме отладки таблица символов и вообще исходный текст программы на Си вполне доступны.


Не понял что за таблица символов и о каком тексте программы на Си идет речь.
Какая задача решается?
Цитата:
И написать компилятор Си на Си можно без каких-то принципиальных проблем.


Ближе всего, что я имею ввиду, это использование исходного текста компилятора Си
в качестве библиотеки подпрограмм. Однако, хоть я и загнал LCC в SPF я не могу
сказать что разобрался с тем как LCC работает и тем-более что-то использовать
для других задач. Типа того, как я в Форте использую INCLUDED для обработки текстового
файла с подменой INTERPRET.

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

... и мы приходим к ShellExecute. Где тут Форт-то?


В режиме Си компилятора есть возможность делать Форт вставки. Выйдя из
Си компилятора, все процедуры/функции определенные режиме Си компилятора
доступны как обычные форт-определения, причем, в том-же тексте где определены.

Цитата:
И сейчас можно вызвать компилятор Си, заставить его сделать dll, и обратиться к этой dll. Зачем обязательно набрать весь код транслятора Си на Форте?


Чтобы избавится от внешнего транслятора Си вместе с dll и за одно, повысить
платформонезависимость. Из внешнего Си компилятора затруднительно иметь доступ
к ресурсам Форта, тем более, делать Форт-вставки. Си в рамках форта может
быть интерпретатором и компилятором в зависимости от переменной STATE,
может участвовать в управлении компиляции (из программы на Си вызывать типа COMPILE,)
и т.д.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Mihail писал(а):
Си в рамках форта может
быть интерпретатором и компилятором в зависимости от переменной STATE,
может участвовать в управлении компиляции

Подобное, по-моему, уже пытались сделать в фирме Инфо-форт(сейчас Технофорт).
Надо бы узнать чем это закончилось.

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


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

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


Живьем я их Си не видел. Они меня приглашали, чтобы я оживил их Си
под утерянный Форт, но я несправился.


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

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

Это как понять?

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


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

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

Это как понять?


Форт-систему модифицировали модифицировали и
незаметели, что старые программы не идут.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Mihail писал(а):
Не понял что за таблица символов и о каком тексте программы на Си идет речь.
Какая задача решается?


Открываем отладчик и начинаем выполнять программу на Си по шагам. При этом мы имеем возможность смотреть переменные по их именам. Компилятор для сопоставления имен и их размещения в памяти имеет таблицу символов.

Mihail писал(а):
Ближе всего, что я имею ввиду, это использование исходного текста компилятора Си
в качестве библиотеки подпрограмм. Однако, хоть я и загнал LCC в SPF я не могу
сказать что разобрался с тем как LCC работает и тем-более что-то использовать
для других задач. Типа того, как я в Форте использую INCLUDED для обработки текстового
файла с подменой INTERPRET.

Ну и зачем так делать? LCC завтра будет другой версии, и опять придется вручную перебивать все на Форте? В конце концов, если уж поставить перед собой задачу разобраться с трансляцией си-подобных языков, то это все можно освоить за приемлемое время. Уже есть и литература, и примеры, и вообще психологический барьер в целом пройден. На человека, который разрабатывает компилятор, уже не смотрят как на неграмотного прожектера, который сам не понимает, во что ввязался. Если действительно надо, можно вести свою ветку разработки. Но просто ради того, "чтобы в Форте был Си" - не знаю, не знаю... :?
Mihail писал(а):
В режиме Си компилятора есть возможность делать Форт вставки. Выйдя из
Си компилятора, все процедуры/функции определенные режиме Си компилятора
доступны как обычные форт-определения, причем, в том-же тексте где определены.

Хм. Мне видится как раз наоборот - определения Форта, гибко "склеивающие" Си-функции в процессе работы программы, вызываются из скомпилированного кода. Си используется здесь как эффективный транслятор, способный сгенерировать быстрый код и дать доступ к библиотекам, Форт - как мощный интерпретирующий язык с возможностью докомпиляции управляющих скриптов в рантайме. Зачем может понадобиться вызов Си из Форта за пределами заранее отправленных в Форт примитивов?
Mihail писал(а):
Чтобы избавится от внешнего транслятора Си вместе с dll и за одно, повысить
платформонезависимость.

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


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

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


В рамках Форта это тоже можно организовать. Однако, возможность
вызвать отдельную функцию из командной строки не помешает.

Цитата:
Mihail писал(а):
Ближе всего, что я имею ввиду, это использование исходного текста компилятора Си
в качестве библиотеки подпрограмм. Однако, хоть я и загнал LCC в SPF я не могу
сказать что разобрался с тем как LCC работает и тем-более что-то использовать
для других задач. Типа того, как я в Форте использую INCLUDED для обработки текстового
файла с подменой INTERPRET.

Ну и зачем так делать? LCC завтра будет другой версии, и опять придется вручную перебивать все на Форте?


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

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


Лично мне, плевать на Си и не хочу я с ним разбираться. Реализовать
типы и инфиксную запись в Форте, можно гораздо более простым способом.
Однако, нужно считаться с действительностью.
Для того, чтобы загнать императивный язык в Форт, особо не нужно с ним разбираться.
Один из способов:
Найти где происходит запись в древовидную структуру, как правило, это и будет промежуточное форт-представление. Заменив эту запись на выдачу мнемонических имен мы получаем конвертор в Форт. За тем просто, тупо перевести исходный текст языка на форт.

Цитата:
Хм. Мне видится как раз наоборот - определения Форта, гибко "склеивающие" Си-функции в


И так и этак и как угодно.

Цитата:
Ну хорошо, у нас на машине остался Форт, только Форт, и ничего кроме Форта. Чем это помогает само по себе?


Одним словом: унификация.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Mihail писал(а):
Для того, чтобы загнать императивный язык в Форт, особо не нужно с ним разбираться.
Один из способов:
Найти где происходит запись в древовидную структуру, как правило, это и будет промежуточное форт-представление.

Это что - часть описания работы Си-компилятора?

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


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

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

Это что - часть описания работы Си-компилятора?


Это то, что я проделал с LCC для получения CinF.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Mihail писал(а):
Я предлагаю Форт в качестве библиотеки для Си. Именно как набор ресурсов я Форт и рассматриваю, а средствами какого языка к ним будет осуществлятся доступ не имеет значения(с точки зрения использования Форта).

Это называется виртуальной Форт-машиной. Оно уже предложено, и реализовано только на моей памяти раз пять. Это максимум расширенная лабораторная работа. Вот адаптация под конкретный проект может оказаться сложнее, но я с этого и начал, когда говорил, что внимание нужно уделять применению, а не мыслям, какое бы еще слово ввести.

Mihail писал(а):
Для того, чтобы загнать императивный язык в Форт, особо не нужно с ним разбираться.
Один из способов:
Найти где происходит запись в древовидную структуру, как правило, это и будет промежуточное форт-представление. Заменив эту запись на выдачу мнемонических имен мы получаем конвертор в Форт. За тем просто, тупо перевести исходный текст языка на форт.

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

Mihail писал(а):
Одним словом: унификация.

Я могу клятвенно уверить, что унификация, проведенная умозрительно, без громадного опыта работы - чистой воды самообман. Не будет это пригодно к использованию. Можно годами работать в одном направлении, и все равно узнать, что "унифицированное" решение содержит неточности, ошибки, и концептуальные недостатки, которые не позволяют применять его в целом ряде важных задач.


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

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


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

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


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

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