Petrovich — эзотерический язык программирования, созданный Дэвидом Морган-Маром и основанный на применении условных рефлексов. Назван в честь Ивана Петровича Павлова, который занимался изучением условных рефлексов у собак.
Более того, это не просто язык программирования, это цел
ая операционная система с собственной средой разработки приложений.
Основные принципы языка
- Разработка операционной системы и языка программирования, которые смогут улучшать свои умения в естественной форме;
- Организовать диалог человек-компьютер в максимально естественной форме.
Концепция языка
Petrovich предоставляет два инструмента для изменения своего поведения: поощрения и наказания.
Когда Petrovich делает что-то, что пользователю не нужно, то он может наказать его. И наоборот, если Petrovich сделал что-то полезное, то его нужно похвалить. В процессе диалога с пользователем Petrovich адаптирует свое поведение так, чтобы избегать наказаний и получать больше поощрений.
Команды
Petrovich очень прост в использовании, и имеет всего четыре команды. Эти команды вводятся в интерактивном режиме. Существует и скриптовая версия, но неопытным пользователям ее использовать крайне не рекомендуется.
- do something
Заставляет Petrovich сделать что-нибудь. - do something with <file>
Заставляет Petrovich сделать что-нибудь с указанным файлом. - reward
Хвалит Petrovich. - punish
Наказывает Petrovich.
Примеры
Чтобы понять как работает Petrovich, рассмотрим несколько примеров:
Petrovich> do something
11:15:23 11 June 2005
Petrovich> reward
Petrovich>
Пользователь попросил Petrovich сделать что-нибудь, и Petrovich выдал текущее время. Это оказалось полезным для пользователя, и он похвалил Petrovich.
Petrovich> do something with data_run_20050711.txt
plotting data to printer
Petrovich> punish
Petrovich> do something with data_run_20050711.txt
performing Fast Fourier Transform...
saving result to data_FFT_20050711.txt
Petrovich> reward
Petrovich>
Пользователь попросил Petrovich сделать что-нибудь с некоторым файлом. Petrovich отправил его на печать.Пользователю это не было нужно, и он наказал Petrovich и повторил комманду. Во избежание повторного наказания Petrovich попытался выполнить с файлом трансформацию Фурье, и на этот раз угодил пользователю. Пользователь за это похвалил Petrovich.
Petrovich> do something with HalleBerry001.jpg
file deleted
Petrovich> punish
Petrovich> do something with HalleBerry002.jpg
searching web for similar images...
downloading...
Petrovich> reward
Petrovich>
Пользователь попросил Petrovich сделать что-нибудь с нецензурным изображением, и Petrovich удалил его. Пользователь не хотел этого, и наказал Petrovich. Затем пользователь попросил Petrovich сделать что-нибудь с другим файлом. На этот раз напуганный наказанием Petrovich попытался произвести поиск похожих картинок, чтобы пополнить коллекцию пользователя. Пользователь похвалил Petrovich.
Из этих примеров видно, что Petrovich — невероятно мощный инструмент, который способен разработать программы для любых операций с данными.
Если Вы думаете, что это все шутка, то представьте себе прослойку Petrovich над операционной системой MS Windows. Каждый раз, когда Windows сделает что-то, что Вам не нравится, вы накажете ее, и она больше никогда этого не повторит.
Почему мы не слышим о каких-то серьезных проектах на этом языке? Когда он был разработан?
Проведу небольшой ликбез :)
Эзотерические языки программирования — вид языков программирования, не предназначенных для практического применения. Образец компьютерного юмора.
Эзотерические языки придумываются для развлечения, часто они пародируют «настоящие» или являются абсурдным воплощением «серьёзных» концепций программирования. Некоторые эзотерические языки нарочно ограничены, другие — универсальны и обладают тьюринговой полнотой.
В то время, как разработчики «реальных» языков программирования стараются сделать синтаксис максимально понятным, а программирование — удобным, создатели эзотерических языков обычно ставят перед собой иные задачи.
В целом такие языки бесполезны, однако, программирование на некоторых из них является неплохой тренировкой. Эзотерические языки нередко включают в список разрешённых языков на конкурсах по программированию.
Так понимаю, формальное представление обучающейся системы)
Он реализован чисто теоретически?
Создатель дальше теории пока не пошел, но свою миссию выполнил — дал пищу для размышления для других :)
Для бетаверсии можно ввести массив объектов, массив команд для них и функцию рандомайза.
Ну а дальше, потихоньку обучаться по нейронно-сетевой схеме навешивая веса на выполненные команды и преобразуя рандомайз.
Но это уже совсем другая история…
Отличная статья!