Эзотерические Языки Программирования, Такие как BraunF*ck, BeFunge... |
Здравствуйте, гость ( Вход | Регистрация )
Youtube | Vkontakte | KubaLibre | Shareman | Down-House |
Эзотерические Языки Программирования, Такие как BraunF*ck, BeFunge... |
Astynax84 |
9.1.2007, 21:38
Сообщение
#1
|
Опытный Домовой Группа: Домовые Сообщений: 270 Регистрация: 28.11.2006 Живет: РФ, РТ, Казань Пол: Мужской Репутация: 0 |
Всем привет!
Давайте поговорим о нестандартных языках программирования. Например, есть такой язык - BrainF*ck На нем теоретически можно написать абсолютно всё! И при этом у него всего 8 операторов! Язык оперирует данными, записанными в ячейки (1 ячейка = 1 байт), расположенные последовательно на некоей "ленте" (как машина Тьюринга). Интерпретатор всегда находится над одной из ячеек и может читать/изменять значение в ней. Также он может перемещаться вдоль ленты. Плюс - присутствует ввод/вывод "наружу" (например на клавиатуру/экран). Операторы языка: < - сдвиг влево по ленте на 1 шаг > - сдвиг вправо на 1 шаг + - увеличение значения в текущей ячейке - - уменьшение значения в текущей ячейке [ - начало блока. Проверяется значение в текущей ячейке - если "0", то переходим к оператору, следующему после конца блока. ] - конец блока - возврат к началу блока и следующая проверка на "0" . - вывод символа с кодом, равным значению в текущей ячейке , - ввод значения в текущую ячейку. Значение = код введенного символа Вот программа "Hello World!" на BrainF*ck'е: Код ++++++++++[>+++++++>++++++++++>+++>+< <<<-]>++.>+.+++++++..+++.>++.<<++++++ +++++++++.>.+++.------.--------.>+.>. -------------------- aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев) |
Ap}{@HrE/l |
10.1.2007, 0:03
Сообщение
#2
|
Мастер Домовой Группа: Домовые Сообщений: 868 Регистрация: 12.10.2006 Живет: в Раю Пол: Мужской Репутация: 0 |
Всем привет! Давайте поговорим о нестандартных языках программирования. Например, есть такой язык - BrainF*ck На нем теоретически можно написать абсолютно всё! И при этом у него всего 8 операторов! Ну это ты погорячился по поводу абсолютного всё я сам на ВМК учюсь и знаю что на данном языке можно реализовать только вычислимые функции (есть такая теорема что если функция вычислима по тюрингу то она вычислима), также можно рассмотреть теорию частично рекурсивных функций (теорема Класс частично рекурсивных функций совпадает с классом функций вычислимых по тюрингу) также давно доказано что класс функций который можно реализоать на (С, паскале) можно реализовать на машине тюринга и наоборот(я не говорю про всякие там классы и потоки в данном смысле я говорю про чисто алгоритмические задачи операции со строками математика.). Вобщем прикольно неожидал тут увидеть тему из Дискретной математики приятно удивлён |
Astynax84 |
10.1.2007, 6:54
Сообщение
#3
|
Опытный Домовой Группа: Домовые Сообщений: 270 Регистрация: 28.11.2006 Живет: РФ, РТ, Казань Пол: Мужской Репутация: 0 |
Ну это ты погорячился по поводу абсолютного всё... Пример - исползуем вместо ленты всю "память" машины, т.е. и регистры, и служебные адреса, и видеопамять - и вот тебе низкоуровневый ввод/вывод откуда и куда угодно - главное знать, что делаешь Ассемблер тоже с "памятью" только работает - а на нем можно написать все А BF - он, да, Тьюринг-полный Есть его реализация, где все 8 операторов закодированы 0/1 - вот это супер. Только "слова" разной длины - чтобы небыло избыточности, но и разных толкований тоже не было. Получается Байт-код! Причем написанный вручную ;) А ты не сталкивался с языками Funge-семейства? BeFunge, вот, - двухмерный: у него программа это не строка, а таблица И по таблице он двигается в зависимости от содержания, а вместо условий - развилки (по условию) в прямом смысле! -------------------- aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев) |
Ap}{@HrE/l |
10.1.2007, 10:09
Сообщение
#4
|
Мастер Домовой Группа: Домовые Сообщений: 868 Регистрация: 12.10.2006 Живет: в Раю Пол: Мужской Репутация: 0 |
Пример - исползуем вместо ленты всю "память" машины, т.е. и регистры, и служебные адреса, и видеопамять - и вот тебе низкоуровневый ввод/вывод откуда и куда угодно - главное знать, что делаешь Ассемблер тоже с "памятью" только работает - а на нем можно написать все А ты не сталкивался с языками Funge-семейства? BeFunge, вот, - двухмерный: у него программа это не строка, а таблица И по таблице он двигается в зависимости от содержания, а вместо условий - развилки (по условию) в прямом смысле! Я же говорю что на наших языках программирования можно реализовать только вычислимые функции. По поводу языков Funge-семейства нет несталкивался но слышал в принцыпе это теоретические языки с помощью которых можно ставить задачи и доказывать теоремы может гдето в базах данных использовать можно но sql есть. |
Astynax84 |
10.1.2007, 10:25
Сообщение
#5
|
Опытный Домовой Группа: Домовые Сообщений: 270 Регистрация: 28.11.2006 Живет: РФ, РТ, Казань Пол: Мужской Репутация: 0 |
... можно реализовать только вычислимые функции ... Давай так. Тьюринг-машина работает с памятью, правильно? Предоставляем ей адресное пространство, отображающее фрейм на диске + ячейку(ячейки) смещения окна + ячейку команд. Скажем блок ячеек данных отображает фрейм, равный сразу 1 сектору диска. - Пишем в ячейку адреса номер сектора, - сдвигаемся на ячейки фрейма, - пишем новые данные для сектора, - передвигаемся на ячейку команд, даем команду "запись", - ждем пока не появится отклик - код возврата дисковой операции. Это вывод на диск. Ввод аналогичен. Вывод на экран - другие адреса фрейма/смещения/команды Вот уже имеем BIOS (БСВВ) - базовую систему ввода/вывода Далее разрабатываем файловую систему. Пишем загрузчик ОС, командный интерпретатор с интерфейсом командной строки ... графическую ОС ... Браузер ... сидим в Нете из под своей ОС ;) -------------------- aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев) |
daniil |
10.1.2007, 11:43
Сообщение
#6
|
Мастер Домовой Группа: Домовые Сообщений: 597 Регистрация: 20.12.2006 Пол: Мужской Репутация: 22 |
Надо ище придумать, как из этой оси в контру по сетке гамать :lol: (Open GL, Direct X).
Есть хорошее описание эзотерических языков в каком-то номере Мир ПК, вот оно, 0.5 метра примерно, пдф (файлообмен), я почитал, прикольно Самое корявое (эзотерическое), наверно - Malbolge и WhiteSpace. |
Astynax84 |
10.1.2007, 11:50
Сообщение
#7
|
Опытный Домовой Группа: Домовые Сообщений: 270 Регистрация: 28.11.2006 Живет: РФ, РТ, Казань Пол: Мужской Репутация: 0 |
Надо ище придумать, как из этой оси в контру по сетке гамать :lol: (Open GL, Direct X). Есть хорошее описание эзотерических языков в каком-то номере Мир ПК, вот оно, 0.5 метра примерно, пдф (файлообмен), я почитал, прикольно Самое корявое (эзотерическое), наверно - Malbolge и WhiteSpace. Вот ещё интересная статейка - про то же, но с картинками При запуске может ругаться по поводу скриптов - отвечать на вопрос можно и "да" и "нет" - без разницы... А Малболг - это супер! А самая круть это написать программу, которая выводит свой листинг! -------------------- aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев) |
Ghost |
25.1.2007, 16:48
Сообщение
#8
|
Где Я?! Группа: Пользователи Сообщений: 2 Регистрация: 25.1.2007 Пол: Домовой Репутация: 0 |
Самое главное придумать такой компутер
И тады все пойдет на ура. ТАк как наш комп по сути уже не может реализовать на прямую все то что ты написал PS: Я замучился какая-то фигня у меня к сообщению добавляется :( Я чего-то не пойму. Почему? Может вирус? |
Astynax84 |
26.1.2007, 12:48
Сообщение
#9
|
Опытный Домовой Группа: Домовые Сообщений: 270 Регистрация: 28.11.2006 Живет: РФ, РТ, Казань Пол: Мужской Репутация: 0 |
Самое главное придумать такой компутер И тады все пойдет на ура. ТАк как наш комп по сути уже не может реализовать на прямую все то что ты написал PS: Я замучился какая-то фигня у меня к сообщению добавляется :( Я чего-то не пойму. Почему? Может вирус? Простые BF-компы есть - на микроконтроллерах ;) А можно написать эмулятор такой машины, точнее интерпретатор с реализацией нужной структуры памяти - чтение/запись в "области устройств" будет транслироваться на програмном уровне в стандартные операции ввода/вывода в память/диск... Но это уже не то, конечно ;) Лучше на контроллере AVR'овском собрать. Вместо диска использовать энергонезависимую RAM - небольшой объем, но зато встроена уже. Ещё можно замутить самопрограммирование - возможность то есть - и датчики поставить для анализа внешней среды. Глядишь, до терминатора самообучится -------------------- aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев) |
Текстовая версия | Сейчас: 28.4.2024, 10:15 |