:: Игры Разума
Re: Печать текста программы
Zakharov

Сообщений: 25
Откуда: Киев
Дата регистрации: 09.12.2008
Виноват. Спутал. Когда-то компилятором называлась программа которая переводила код в другой язык. Например Pascal-aspo переводился в Assembler (текстовый). Программа, которая переводила в машинные коды - называлась транслятором.
Конечно-же FOX - интерпретатор!
Ratings: 0 negative/0 positive
Re: Печать текста программы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Да это элементарная задача - причём практически для ЛЮБОГО языка. Вот только фоксовой реализации пока не могу найти не одной увы И не надо искать в памяти исходник!


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Печать текста программы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Вот подробности в википедии про этот тип программ:
ru.wikipedia.org


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Печать текста программы
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Igor Korolyov
Да это элементарная задача - причём практически для ЛЮБОГО языка. Вот только фоксовой реализации пока не могу найти не одной увы И не надо искать в памяти исходник!
А кто-то предлагал искать? Если рчь про меня, о всего лишь говорил про наличие текста в памяти.
Приведенная ссылка всего лишь подтвердила мои подозрения о немного разном понимании условий задачи. Я, по наивности, обдумывал "честный" вариант, а не вывод под видом исходника копии исходника(главное в этой копии не ошибиться )


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Печать текста программы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ну не знаю, я под "программой печатающей саму себя" всегда понимал именно такой тип программ - а не нечто ищущее на диске или в памяти исходный текст


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Печать текста программы
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Igor Korolyov
Ну не знаю, я под "программой печатающей саму себя" всегда понимал именно такой тип программ - а не нечто ищущее на диске или в памяти исходный текст
Еще раз: я про поиск ничего не говорил!


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Печать текста программы
Zakharov

Сообщений: 25
Откуда: Киев
Дата регистрации: 09.12.2008
Спасибо! Идею понял! А то не мог сообразить[sm016]
Ratings: 0 negative/0 positive
Re: Печать текста программы
Goodwin

Сообщений: 3539
Откуда: Омск
Дата регистрации: 03.05.2006
Писал такое на С.
На фоксе, вроде, проще должно быть.
Надо попробовать...


------------------
Что мы знаем о лисе?
Ничего. И то не все.
(С)Б. Заходер
Ratings: 0 negative/0 positive
Re: Печать текста программы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
ssa
Похоже, условия задачи некорректны для компилируемых языков. Интерпретируемые языки оставляют шансы использовать какие-нибудь особенности интерпертатора, его обработчика ошибок и т.п., использующие факт наличия неоткомпилированного кода в памяти в момент исполнения.
Вот эта цитата имелась в виду.
Во-первых задача решается для компилируемых языков. Её условия конечно сформулированы не то чтобы кристально чётко, но вполне понятно.
Во-вторых для интерпретируемых языков она решается БЕЗ использования "особенностей интерпретатора" и независимо от "факта наличия неоткомпилированного кода в памяти в момент исполнения".
Я именно про это говорил.

А красивого примера для фокса так и не нашёл, пришлось адаптировать паскалевский...

s="s=?substr(s,1,2)+CHR(34)+s+CHR(34)+CHR(13)+CHR(10)+substr(s,3)"
?substr(s,1,2)+CHR(34)+s+CHR(34)+CHR(13)+CHR(10)+substr(s,3)


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Печать текста программы
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Igor Korolyov
ssa
Похоже, условия задачи некорректны для компилируемых языков. Интерпретируемые языки оставляют шансы использовать какие-нибудь особенности интерпертатора, его обработчика ошибок и т.п., использующие факт наличия неоткомпилированного кода в памяти в момент исполнения.
Вот эта цитата имелась в виду.
Во-первых задача решается для компилируемых языков.
При условии наличия копии исходника.
Цитата:
Её условия конечно сформулированы не то чтобы кристально чётко, но вполне понятно.
Тем не менее допускают двоякое толкование.
Цитата:
Во-вторых для интерпретируемых языков она решается БЕЗ использования "особенностей интерпретатора" и независимо от "факта наличия неоткомпилированного кода в памяти в момент исполнения".
Я именно про это говорил.
Все примеры как раз основаны на "факта наличия неоткомпилированного кода в памяти в момент исполнения". Копия исходника в строке как раз это и обеспечивает.

А уж пример на Бейсике ну никак не основан на особенностях интерпертатора?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Печать текста программы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Э-э-э где ты там в строке увидел копию исходника? Там некоторые "кусочки текста похожие на исходник", но никак не копия, плюс некоторая обработка-размножение этих кусочков - т.к. не может нечто содержать "само себя плюс ещё что-то непустое".
Вполне можно скомпилировать этот код, удалить prg и запустить - будет работать - хотя формально ни в памяти, ни на диске уже не существует исходника - в его "полном и цельном" виде.
Я встречал вариант с макро - он, как мне помнится, содержит ещё меньше "куска исходника в виде литерала"...

Да, в википедии действительно есть несколько не совсем корректных примеров, как бейсиковский LIST... Не надо на них ориентироваться


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Печать текста программы
ry
Автор

Сообщений: 2113
Дата регистрации: 24.09.2007
Igor Korolyov
А красивого примера для фокса так и не нашёл, пришлось адаптировать паскалевский...

s="s=?substr(s,1,2)+CHR(34)+s+CHR(34)+CHR(13)+CHR(10)+substr(s,3)"
?substr(s,1,2)+CHR(34)+s+CHR(34)+CHR(13)+CHR(10)+substr(s,3)
Работает и чуть более короткий вариант:
s="s=?left(s,2)+chr(34)+s+chr(34)+chr(10)+substr(s,3)"
?left(s,2)+chr(34)+s+chr(34)+chr(10)+substr(s,3)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 5 (Гостей: 5)

© 2000-2024 Fox Club 
Яндекс.Метрика