Помощь - Поиск - Пользователи - Календарь
Полная версия: Путеводитель автостопщика по потаенным знаниям
Форум «Всё о Паскале» > Другое > Свободное общение
Altair
Рекомендую к прочтения статью http://www.rsdn.ru/article/philosophy/languages.xml
Archon
Altair, респект! Кажется у меня новая мания...

[Ушёл выпадать из реальности, к обеду не ждать]
volvo
Цитата
//типы данных:
х: сомнительное целое;
а: мало_похоже_на массив [x..y а_может_быть z] каких_нибудь символов;
L: безнадежно_поврежденный список слишком_маленьких целых;
//присвоение значения переменной:
x ТОЧНО 3;
x ЧЕСТНОЕ_СЛОВО 3;
x МАМОЙ_КЛЯНУСЬ 3;
//условия:
ЕСЛИ y ЧТО_ТО_ОКОЛО 8 ...
ПРИ_МАЛЕЙШЕМ_ПОДОЗРЕНИИ_ЧТО x < 100...
//вызов процедуры:
СБЕГАЙ_КА_ПОИЩИ имяпроцедуры;
lol.gif А это идея... Надо взять на вооружение...
Archon
В оригинале интереснее lol.gif : paranoid (ссылка из статьи на источник)
Цитата
#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.
Это бы пригодилось smile.gif
Altair
Цитата
lol.gif А это идея... Надо взять на вооружение...

Во-во! Мне тоже понравилось smile.gif главное, программист сразу избавляется от стольких проблемм - такой язык частенько совпадает с его мыслями blum.gif
Archon
Чёрт! Уже час бьюсь над созданием самовыводящейся программы на BrainF*ck'е. Кто-нибудь знает, это возможно? Если да, не подсказывать как!
volvo
Возможно smile.gif
klem4
Подсказывать не будем, но если что Задача Quine

smile.gif
xds
Кстати, BF можно использовать в качестве микрокода CPU - будет полезнее, чем просто "native BF CPU". Т. е. BF CPU с интерпретатором основной системы команд в качестве программы. Полезность, естественно, в основном академическая (есть свободная EPM3064, аж попробовать хочется - синдром маньяка с новой бензопилой) smile.gif
Archon
@#$%! По ходу, из за ошибки переполнения невозможно корректно выводить строки длиннее 1024 символов, а моя программа вышла 1693 sad.gif . Можно, конечно, заморочиться с ентерами, но сократить программу - интереснее. Как сократить на ~350 символов я кажется придумал, ещё столько же и можно пить шампанское. cool.gif
Altair
Покажешь потом код?

Кстати о философии - каким требованиям должен отвечать язык, что бы на нем можно было написать программу, выводящую саму себя на экран?
Или таких требований нет?
Понятно, что должны быть операторы вывода например, но я имею ввиду требования к конструкциям, которые могут быть реализованы на языке...
Archon
Вот! Мозг дал трещину но выдал код:
Код
>>++++++>>++++>>+++>>+>>+++>>+>>+++>>+>>+>>+++++++>>+++>>+>>++++++>>++++>>+++>>+
++>>+>>++++>>+++>>+>>+>>++++++>>++++++>>++>>+>>++++++>>+++>>+++>>+++>>+++>>+++++
+>>++++>>+++>>+>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>
+>>++++>>+>>++++>>+>>++++>>+++>>+++>>+>>++++++>>++++++>>++>>+>>++++>>+>>++++>>+>
>++++>>+++>>+>>++++++>>++++>>+>>++++++>>++++++>>++>>+++>>+>>++++++>>++>>+++>>+>>
++++++>>++++>>+++>>+++>>+++>>+++>>++++++>>++++>>+++>>+++>>+++>>+++>>+>>+++++++>>
+++>>+>>+++>>+>>+++>>+>>+>>++++>>+++>>+++>>+>>++++++>>++++++>>++>>+++>>+++>>+++>
>+++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>+++++
+>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>
+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>++++++>>+>>+++++++>>+>>+++++++>>+
>>++++>>+>>++++>>+++>>+>>+++>>+>>+++>>+>>++++++>>++++>>+++>>+++>>+++>>+++>>+++>>
+++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+++>>+>>+++>>+>>+++>>
+>>+>>++++++>>++++++>>++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>+>>++++>>
+>>++++>>+>>++++>>+>>++++>>+>>++++>>+++>>+++>>++++++>>++>>+++>>+++>>+++>>+++>>++
++++>>++++>>+++>>+>>+++>>+>>++++++>>++[<<]>>[>++++++++++[-<<<++++++>>>]<<<++..--
----------------->>[->+<<<.>>]>>]<[<[-]<+++[->++++++++++<]>>-[-<+>]<.<<<]
В приципе, программу можно сократить раза в полтора, я сейчас этим занимаюсь. Дело в том, что здесь я одну команду кодирую в 2 ячейках памяти, а мне вот по ходу в голову пришло как можно 1-ой!
Цитата
Кстати о философии - каким требованиям должен отвечать язык, что бы на нем можно было написать программу, выводящую саму себя на экран?
Да, мне тоже интересно! Если кто знает, поделитесь мыслями.
Malice
Цитата(Altair @ 9.01.2007 11:25) *

Кстати о философии - каким требованиям должен отвечать язык, что бы на нем можно было написать программу, выводящую саму себя на экран?

Делал когда-то давно и на паскале и на С и на ассемблере. Главное (имхо) уметь представить символ ковычек любым другим способом (#39 например).. smile.gif
Archon
Цитата
Главное (имхо) уметь представить символ ковычек любым другим способом (#39 например)..
На паскале точно видел другим способом. Поищу...

Добавлено:
По ссылке выше есть примеры.

PS Глянул решения на BF... Марьванна! Я не списывал! Чесна... smile.gif
Altair
Цитата
Главное (имхо) уметь представить символ ковычек любым другим способом (#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
Ой, сейчас составлю! applause.gif Жди... (добавлено: ) Вероятно, до завтра... ;)
(добавлено: )
Который раз убеждаюсь, что для решения нетривиальной задачи достаточно (и, почему-то, необходимо) полчасика помедитировать перед сном ;).
Код
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
Да, все верно smile.gif
В алфавит ты верно добавил ";" и
разделители в writeln тоже верно понял...

хех.

т.к. компилятора нет, проверил на глазок...
SKVOZNJAK
Цитата(Altair @ 9.01.2007 8:25) *

Покажешь потом код?

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

На спектрум бейсике такое работало, если не ошибаюсь List 0 Все строки в обязательном порядке пронумерованы, номера идут по порядку. Никаких процедур и функкций. только подпрограммы на Gosub имя строки и Return. Вот там то и постигаешь всю красоту и мощь оператора Goto. К сожалению сабж по GOTO++ не на русском sad.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.