IPB

Здравствуйте, гость ( Вход | Регистрация )


Youtube Vkontakte Mail Google KubaLibre Shareman Down-House

Скрыть объявления

Объявления

А у нас появился женский раздел^^ Приглашаем всех к себе в гостиsmile3.gif
С уважением, Ваши девушки flirt.gif

Основные Провайдеры и поставщики Телекоммуникационных услуг г. Казань
Обсуждаем, делимся опытом, решаем текущие вопросы с представителями операторов связи

 
Ответить в эту темуОткрыть новую тему
> Эзотерические Языки Программирования, Такие как BraunF*ck, BeFunge...
Astynax84
сообщение 9.1.2007, 21:38
Сообщение #1


Опытный Домовой
****

Группа: Домовые
Сообщений: 270
Регистрация: 28.11.2006
Живет: РФ, РТ, Казань

Пол: Мужской


Репутация:   0  


Всем привет!

Давайте поговорим о нестандартных языках программирования.

Например, есть такой язык - BrainF*ck smile3.gif
На нем теоретически можно написать абсолютно всё! И при этом у него всего 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  


Цитата(Astynax84 @ 9.1.2007, 21:38) *

Всем привет!

Давайте поговорим о нестандартных языках программирования.

Например, есть такой язык - BrainF*ck smile3.gif
На нем теоретически можно написать абсолютно всё! И при этом у него всего 8 операторов!


Ну это ты погорячился по поводу абсолютного всё я сам на ВМК учюсь и знаю что на данном языке можно реализовать только вычислимые функции (есть такая теорема что если функция вычислима по тюрингу то она вычислима), также можно рассмотреть теорию частично рекурсивных функций (теорема Класс частично рекурсивных функций совпадает с классом функций вычислимых по тюрингу) также давно доказано что класс функций который можно реализоать на (С, паскале) можно реализовать на машине тюринга и наоборот(я не говорю про всякие там классы и потоки в данном смысле я говорю про чисто алгоритмические задачи операции со строками математика.). Вобщем прикольно неожидал тут увидеть тему из Дискретной математики приятно удивлён good.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Astynax84
сообщение 10.1.2007, 6:54
Сообщение #3


Опытный Домовой
****

Группа: Домовые
Сообщений: 270
Регистрация: 28.11.2006
Живет: РФ, РТ, Казань

Пол: Мужской


Репутация:   0  


Цитата(Ap}{@HrE/l @ 10.1.2007, 0:03) *

Ну это ты погорячился по поводу абсолютного всё...


Пример - исползуем вместо ленты всю "память" машины, т.е. и регистры, и служебные адреса, и видеопамять - и вот тебе низкоуровневый ввод/вывод откуда и куда угодно - главное знать, что делаешь smile3.gif
Ассемблер тоже с "памятью" только работает - а на нем можно написать все smile3.gif

А BF - он, да, Тьюринг-полный smile3.gif

Есть его реализация, где все 8 операторов закодированы 0/1 - вот это супер. Только "слова" разной длины - чтобы небыло избыточности, но и разных толкований тоже не было. Получается Байт-код! Причем написанный вручную ;)

А ты не сталкивался с языками Funge-семейства? BeFunge, вот, - двухмерный: у него программа это не строка, а таблица smile3.gif И по таблице он двигается в зависимости от содержания, а вместо условий - развилки (по условию) в прямом смысле!


--------------------
aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Ap}{@HrE/l
сообщение 10.1.2007, 10:09
Сообщение #4


Мастер Домовой
*****

Группа: Домовые
Сообщений: 868
Регистрация: 12.10.2006
Живет: в Раю

Пол: Мужской


Репутация:   0  


Цитата(Astynax84 @ 10.1.2007, 6:54) *

Пример - исползуем вместо ленты всю "память" машины, т.е. и регистры, и служебные адреса, и видеопамять - и вот тебе низкоуровневый ввод/вывод откуда и куда угодно - главное знать, что делаешь smile3.gif
Ассемблер тоже с "памятью" только работает - а на нем можно написать все smile3.gif

А ты не сталкивался с языками Funge-семейства? BeFunge, вот, - двухмерный: у него программа это не строка, а таблица smile3.gif И по таблице он двигается в зависимости от содержания, а вместо условий - развилки (по условию) в прямом смысле!

Я же говорю что на наших языках программирования можно реализовать только вычислимые функции. По поводу языков Funge-семейства нет несталкивался но слышал в принцыпе это теоретические языки с помощью которых можно ставить задачи и доказывать теоремы может гдето в базах данных использовать можно но sql есть.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Astynax84
сообщение 10.1.2007, 10:25
Сообщение #5


Опытный Домовой
****

Группа: Домовые
Сообщений: 270
Регистрация: 28.11.2006
Живет: РФ, РТ, Казань

Пол: Мужской


Репутация:   0  


Цитата(Ap}{@HrE/l @ 10.1.2007, 10:09) *

... можно реализовать только вычислимые функции ...


Давай так. Тьюринг-машина работает с памятью, правильно?
Предоставляем ей адресное пространство, отображающее фрейм на диске + ячейку(ячейки) смещения окна + ячейку команд.
Скажем блок ячеек данных отображает фрейм, равный сразу 1 сектору диска.
- Пишем в ячейку адреса номер сектора,
- сдвигаемся на ячейки фрейма,
- пишем новые данные для сектора,
- передвигаемся на ячейку команд, даем команду "запись",
- ждем пока не появится отклик - код возврата дисковой операции.

Это вывод на диск. Ввод аналогичен. Вывод на экран - другие адреса фрейма/смещения/команды smile3.gif

Вот уже имеем BIOS (БСВВ) - базовую систему ввода/вывода smile3.gif

Далее разрабатываем файловую систему. Пишем загрузчик ОС, командный интерпретатор с интерфейсом командной строки ... графическую ОС ... Браузер ... сидим в Нете из под своей ОС ;)


--------------------
aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
daniil
сообщение 10.1.2007, 11:43
Сообщение #6


Мастер Домовой
*****

Группа: Домовые
Сообщений: 597
Регистрация: 20.12.2006

Пол: Мужской


Репутация:   22  


Надо ище придумать, как из этой оси в контру по сетке гамать :lol: (Open GL, Direct X).

Есть хорошее описание эзотерических языков в каком-то номере Мир ПК, вот оно, 0.5 метра примерно, пдф (файлообмен), я почитал, прикольно smile3.gif Самое корявое (эзотерическое), наверно - Malbolge и WhiteSpace.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Astynax84
сообщение 10.1.2007, 11:50
Сообщение #7


Опытный Домовой
****

Группа: Домовые
Сообщений: 270
Регистрация: 28.11.2006
Живет: РФ, РТ, Казань

Пол: Мужской


Репутация:   0  


Цитата(daniil @ 10.1.2007, 11:43) *

Надо ище придумать, как из этой оси в контру по сетке гамать :lol: (Open GL, Direct X).

Есть хорошее описание эзотерических языков в каком-то номере Мир ПК, вот оно, 0.5 метра примерно, пдф (файлообмен), я почитал, прикольно smile3.gif Самое корявое (эзотерическое), наверно - Malbolge и WhiteSpace.


Вот ещё интересная статейка - про то же, но с картинками smile3.gif
При запуске может ругаться по поводу скриптов - отвечать на вопрос можно и "да" и "нет" - без разницы...

А Малболг - это супер!

А самая круть это написать программу, которая выводит свой листинг!


--------------------
aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Ghost
сообщение 25.1.2007, 16:48
Сообщение #8


Где Я?!


Группа: Пользователи
Сообщений: 2
Регистрация: 25.1.2007

Пол: Домовой


Репутация:   0  


Самое главное придумать такой компутер smile3.gif
И тады все пойдет на ура. ТАк как наш комп по сути уже не может реализовать на прямую все то что ты написал smile3.gif

PS: Я замучился какая-то фигня у меня к сообщению добавляется :( Я чего-то не пойму. Почему? Может вирус?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Astynax84
сообщение 26.1.2007, 12:48
Сообщение #9


Опытный Домовой
****

Группа: Домовые
Сообщений: 270
Регистрация: 28.11.2006
Живет: РФ, РТ, Казань

Пол: Мужской


Репутация:   0  


Цитата(Ghost @ 25.1.2007, 16:48) *

Самое главное придумать такой компутер smile3.gif
И тады все пойдет на ура. ТАк как наш комп по сути уже не может реализовать на прямую все то что ты написал smile3.gif

PS: Я замучился какая-то фигня у меня к сообщению добавляется :( Я чего-то не пойму. Почему? Может вирус?


Простые BF-компы есть smile3.gif - на микроконтроллерах ;)

А можно написать эмулятор такой машины, точнее интерпретатор с реализацией нужной структуры памяти - чтение/запись в "области устройств" будет транслироваться на програмном уровне в стандартные операции ввода/вывода в память/диск...

Но это уже не то, конечно ;) Лучше на контроллере AVR'овском собрать. Вместо диска использовать энергонезависимую RAM - небольшой объем, но зато встроена уже. Ещё можно замутить самопрограммирование - возможность то есть - и датчики поставить для анализа внешней среды. Глядишь, до терминатора самообучится blum.gif


--------------------
aka HS
Я не червонец, чтобы нравиться всем... (Костя Кинчев)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 28.4.2024, 10:15