2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4
 
 Re: Получила ли программа свой же код на вход?
Сообщение17.09.2014, 20:07 
Заслуженный участник


27/04/09
28128

(Оффтоп)

joke-100 в сообщении #908836 писал(а):
Тем более странно, что множество так называемых "ученых" столько жужжат про эти квайны, научные теории строят. Просто бред.
Понял. Они вам спать не дают, через стенку орут.

 Профиль  
                  
 
 Re: Получила ли программа свой же код на вход?
Сообщение16.10.2014, 15:42 


01/12/11

1047
Программа на Delphi/Паскаль
var s:string='var s:string=;begin insert(#39+s+#39,s,14);write(s)end.'; begin insert(#39+s+#39,s,14);write(s)end.
печатает var s:string=;begin insert(#39+s+#39,s,14);write(s)end., но это только часть программы. Где остальной текст, выделенный чёрный цветом?
Это программа начального этапа изучения программирования. Называть её программа печатающая свой текст - это непонимание, что такое программа.
С таким же усрехом переменной string можно присвоить текст доказательства теоремы Пифагора, и сказать: "Вот программа, доказывающая теорему Пифагора".

 Профиль  
                  
 
 Re: Получила ли программа свой же код на вход?
Сообщение16.10.2014, 15:56 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Skeptic в сообщении #919550 писал(а):
Программа на Delphi/Паскаль
var s:string='var s:string=;begin insert(#39+s+#39,s,14);write(s)end.'; begin insert(#39+s+#39,s,14);write(s)end.
печатает var s:string=;begin insert(#39+s+#39,s,14);write(s)end.
Нет, программа печатает не это. Вы ее запускали?

 Профиль  
                  
 
 Re: Получила ли программа свой же код на вход?
Сообщение16.10.2014, 18:56 


01/12/11

1047
Xaositect в сообщении #919557 писал(а):
Нет, программа печатает не это. Вы ее запускали?
Xaositect, к чему лишние вопросы? Если вы знаете, что напечатает программ, то напишите. Всего-то делов.

 Профиль  
                  
 
 Re: Получила ли программа свой же код на вход?
Сообщение16.10.2014, 21:53 
Заслуженный участник


12/07/07
4522
Skeptic, следует указывать версию диалекта и компилятора.
В Embarcadero XE4, win32 программа
var s:string='var s:string=;begin insert(#39+s+#39,s,14); write(s)end.';
begin
insert(#39+s+#39,s,14);
write(s)
end.

выведет на экран: var s:string='var s:string=;begin insert(#39+s+#39,s,14); write(s)end.';begin insert(#39+s+#39,s,14); write(s)end.

В ранних версиях BP программа не будет скомпилирована, поскольку инициализированные переменные в этих диалектах должны были описываться как константы (const).

-- Thu 16.10.2014 21:26:26 --

(Первоначально ошибся. Ошибочный текст был удалён 16.10.2014.)
В Delphi 5 программа выведет:
var s:string='var s:string=;begin insert(#39+s+#39,s,14); write(s)end.';begin insert(#39+s+#39,s,14); write(s)end.

 Профиль  
                  
 
 Re: Получила ли программа свой же код на вход?
Сообщение17.10.2014, 08:09 


01/12/11

1047
Вы ещё проверьте разные версии компилятора с Паскаля.
Программа взята статьи "Куайн" в Википелии.
Неужели не понятно, что эта детсадовская программа печатает не свой текст, а то, что ей подсунут в переменной $s$?

 Профиль  
                  
 
 Re: Получила ли программа свой же код на вход?
Сообщение17.10.2014, 08:33 
Заслуженный участник


28/04/09
1933
Skeptic
Skeptic в сообщении #919805 писал(а):
Неужели не понятно, что эта детсадовская программа печатает не свой текст, а то, что ей подсунут в переменной $s$?
Как ни странно, Вы не правы. В интернете можно встретить мириады онлайн-компиляторов, с которыми проверка подобных утверждений $\text{---}$ дело пары секунд.

 Профиль  
                  
 
 Re: Получила ли программа свой же код на вход?
Сообщение17.10.2014, 11:55 
Заслуженный участник


12/07/07
4522
Skeptic, можно сказать, что изначально в переменную s заносится исходный текст программы «без значения, которое присваивается этой переменной». В теле программы в эту переменную вставляется её же значение, обрамлённое символами кавычек (ASCII код этого символа 39) для добавления «изначально отсутствующей части» (insert(#39+s+#39,s,14)). Откомпилированная в двух разных компиляторах (Embarcarero XE4 win32 и Borland Delphi 5) программа выводит на консоль тот текст, который и ожидается, а именно исходный текст программы. Я специально копировал для вставки в предыдущее сообщение выведенные программами тексты.

Я первоначально подумал, что Вы обнаружили компилятор, неправильно генерирующий код. Вы не привели подтверждение словам
Skeptic в сообщении #919550 писал(а):
Программа на Delphi/Паскаль
var s:string='var s:string=;begin insert(#39+s+#39,s,14);write(s)end.'; begin insert(#39+s+#39,s,14);write(s)end.
печатает var s:string=;begin insert(#39+s+#39,s,14);write(s)end., но это только часть программы. Где остальной текст, выделенный чёрный цветом?

Да, конечно, программа выводит [почти] тот текст, который зададут при инициализации переменной s. Если зададут правильный текст, то программа выведет свой исходный текст. Если неправильный, то выведет не свой исходный текст. Это очевидно.

Пожалуйста, заканчивайте разжигать флейм на пустом месте.

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group