Версия для печати темы
Форум «Всё о Паскале» _ Свободное общение _ Путеводитель автостопщика по потаенным знаниям
Автор: Altair 8.01.2007 15:45
Рекомендую к прочтения статью http://www.rsdn.ru/article/philosophy/languages.xml
Автор: Archon 8.01.2007 17:32
Altair, респект! Кажется у меня новая мания...
[Ушёл выпадать из реальности, к обеду не ждать]
Автор: volvo 8.01.2007 17:38
Цитата
//типы данных:
х: сомнительное целое;
а: мало_похоже_на массив [x..y а_может_быть z] каких_нибудь символов;
L: безнадежно_поврежденный список слишком_маленьких целых;
//присвоение значения переменной:
x ТОЧНО 3;
x ЧЕСТНОЕ_СЛОВО 3;
x МАМОЙ_КЛЯНУСЬ 3;
//условия:
ЕСЛИ y ЧТО_ТО_ОКОЛО 8 ...
ПРИ_МАЛЕЙШЕМ_ПОДОЗРЕНИИ_ЧТО x < 100...
//вызов процедуры:
СБЕГАЙ_КА_ПОИЩИ имяпроцедуры;
А это идея... Надо взять на вооружение...
Автор: Archon 8.01.2007 19:52
В оригинале интереснее : http://paul.merton.ox.ac.uk/computing/paranoid-programming-language.html
Цитата
#distrust(procedure)
to put extra suspicion on a procedure,
#ignore(procedure)
to totally forget about any calls to a procedure,
#blame(procedure)
to pin the blame on this procedure whenever something dies
#hide(procedure)
to forget that a procedure ever existed.
Это бы пригодилось
Автор: Altair 9.01.2007 3:56
Цитата
lol.gif А это идея... Надо взять на вооружение...
Во-во! Мне тоже понравилось
главное, программист сразу избавляется от стольких проблемм - такой язык частенько совпадает с его мыслями
Автор: Archon 9.01.2007 4:29
Чёрт! Уже час бьюсь над созданием самовыводящейся программы на BrainF*ck'е. Кто-нибудь знает, это возможно? Если да, не подсказывать как!
Автор: volvo 9.01.2007 4:38
Возможно
Автор: klem4 9.01.2007 4:41
Подсказывать не будем, но если что http://forum.pascal.net.ru/index.php?showtopic=5535
Автор: xds 9.01.2007 12:18
Кстати, BF можно использовать в качестве микрокода CPU - будет полезнее, чем просто "native BF CPU". Т. е. BF CPU с интерпретатором основной системы команд в качестве программы. Полезность, естественно, в основном академическая (есть свободная EPM3064, аж попробовать хочется - синдром маньяка с новой бензопилой)
Автор: Archon 9.01.2007 15:01
@#$%! По ходу, из за ошибки переполнения невозможно корректно выводить строки длиннее 1024 символов, а моя программа вышла 1693 . Можно, конечно, заморочиться с ентерами, но сократить программу - интереснее. Как сократить на ~350 символов я кажется придумал, ещё столько же и можно пить шампанское.
Автор: Altair 9.01.2007 15:25
Покажешь потом код?
Кстати о философии - каким требованиям должен отвечать язык, что бы на нем можно было написать программу, выводящую саму себя на экран?
Или таких требований нет?
Понятно, что должны быть операторы вывода например, но я имею ввиду требования к конструкциям, которые могут быть реализованы на языке...
Автор: Archon 9.01.2007 20:44
Вот! Мозг дал трещину но выдал код:
Код
>>++++++>>++++>>+++>>+>>+++>>+>>+++>>+>>+>>+++++++>>+++>>+>>++++++>>++++>>+++>>+
++>>+>>++++>>+++>>+>>+>>++++++>>++++++>>++>>+>>++++++>>+++>>+++>>+++>>+++>>+++++
+>>++++>>+++>>+>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>
+>>++++>>+>>++++>>+>>++++>>+++>>+++>>+>>++++++>>++++++>>++>>+>>++++>>+>>++++>>+>
>++++>>+++>>+>>++++++>>++++>>+>>++++++>>++++++>>++>>+++>>+>>++++++>>++>>+++>>+>>
++++++>>++++>>+++>>+++>>+++>>+++>>++++++>>++++>>+++>>+++>>+++>>+++>>+>>+++++++>>
+++>>+>>+++>>+>>+++>>+>>+>>++++>>+++>>+++>>+>>++++++>>++++++>>++>>+++>>+++>>+++>
>+++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>+++++
+>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>
+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>+++++++>>+>>+++++++>>+
>>++++>>+>>++++>>+++>>+>>+++>>+>>+++>>+>>++++++>>++++>>+++>>+++>>+++>>+++>>+++>>
+++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+++>>+>>+++>>+>>+++>>
+>>+>>++++++>>++++++>>++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>
+>>++++>>+>>++++>>+>>++++>>+>>++++>>+++>>+++>>++++++>>++>>+++>>+++>>+++>>+++>>++
++++>>++++>>+++>>+>>+++>>+>>++++++>>++[<<]>>[>++++++++++[-<<<++++++>>>]<<<++..--
----------------->>[->+<<<.>>]>>]<[<[-]<+++[->++++++++++<]>>-[-<+>]<.<<<]
В приципе, программу можно сократить раза в полтора, я сейчас этим занимаюсь. Дело в том, что здесь я одну команду кодирую в 2 ячейках памяти, а мне вот по ходу в голову пришло как можно 1-ой!
Цитата
Кстати о философии - каким требованиям должен отвечать язык, что бы на нем можно было написать программу, выводящую саму себя на экран?
Да, мне тоже интересно! Если кто знает, поделитесь мыслями.
Автор: Malice 9.01.2007 20:52
Цитата(Altair @ 9.01.2007 11:25)
Кстати о философии - каким требованиям должен отвечать язык, что бы на нем можно было написать программу, выводящую саму себя на экран?
Делал когда-то давно и на паскале и на С и на ассемблере. Главное (имхо) уметь представить символ ковычек любым другим способом (#39 например)..
Автор: Archon 10.01.2007 2:15
Цитата
Главное (имхо) уметь представить символ ковычек любым другим способом (#39 например)..
На паскале точно видел другим способом. Поищу...
Добавлено:
По ссылке выше есть примеры.
PS Глянул решения на BF... Марьванна! Я не списывал! Чесна...
Автор: Altair 10.01.2007 4:03
Цитата
Главное (имхо) уметь представить символ ковычек любым другим способом (#39 например).. smile.gif
Вот тебе язык:
Алфавит{"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","w","v","x","y","z", "0","1","2","3","4","5","6","7","8","9", "#", "(", ")", "'",":","="}
Операторыblockначало блока или программы
endbконец блока или программы.
writeln(x1,x2, ... , xn)выводит на экран аргументы x1, x2 ... до xn независимо от их типа и количества.
;разделитель операторов
# оператор возвращает ASCII символ
:=Оператор присвоения
типы данных отсутствуют (компилятор сам выбирает)
Переменные могут состоять только из символов, не совпадать с зарезервированными словами (это все операторы)
пример программы:
Цитата
block;writeln(#32;#65;#65);endb;
еще пример
Цитата
block;var1:=#32;var2:=#45;var3:=var1;writeln(var3);endb;
На таком языке составишь программу которая выведет себя?
Автор: Archon 10.01.2007 4:33
Ой, сейчас составлю! Жди... (добавлено: ) Вероятно, до завтра... ;)
(добавлено: )
Который раз убеждаюсь, что для решения нетривиальной задачи достаточно (и, почему-то, необходимо) полчасика помедитировать перед сном ;).
Код
block;a:='write(#2;#12;#15;#3;#11;#43;#1;#41;#42;#40;a;#40;#43;a;#5;#14;#4;#2;#43);';write(#2;#12;#15;#3;#11;#43;#1;#41;#42;#40;a;#40;#43;a;#5;#14;#4;#2;#43);endb;
Номера символов взяты из алфавита. Символ ";" ты забыл, я присвоил ему номер 43. Небольшие непонятки с разделителем внутри write'а. Если чего не так, сам исправишь.
Автор: Altair 10.01.2007 15:37
Да, все верно
В алфавит ты верно добавил ";" и
разделители в writeln тоже верно понял...
хех.
т.к. компилятора нет, проверил на глазок...
Автор: SKVOZNJAK 11.01.2007 16:34
Цитата(Altair @ 9.01.2007 8:25)
Покажешь потом код?
Кстати о философии - каким требованиям должен отвечать язык, что бы на нем можно было написать программу, выводящую саму себя на экран?
Или таких требований нет?
Понятно, что должны быть операторы вывода например, но я имею ввиду требования к конструкциям, которые могут быть реализованы на языке...
На спектрум бейсике такое работало, если не ошибаюсь List 0 Все строки в обязательном порядке пронумерованы, номера идут по порядку. Никаких процедур и функкций. только подпрограммы на Gosub имя строки и Return. Вот там то и постигаешь всю красоту и мощь оператора Goto. К сожалению сабж по GOTO++ не на русском