Piet

Nov 23, 2017 00:45

Piet -- это язык программирования. Казалось бы, чего тут особенного, мало ли языков на свете. Но Piet -- особенный. Программы на нем пишутся не в традиционном алфавите, и даже не в нетрадиционном, как, например, в языке APL. Программы на Пиете рисуются и напоминают абстрактные картины. Например, вот это -- программа "Hello, world!".


Read more... )

computer science, программирование

Leave a comment

Comments 8

whiteferz November 23 2017, 09:31:20 UTC
Непонятно, почему Piet, а не GraFuck и не EyeFuck.

Reply

ushastyi November 23 2017, 09:45:58 UTC
Потому что названо в честь художника-абстракциониста Пита Мондриана (https://ru.wikipedia.org/wiki/Мондриан,_Пит). Программы на Piet похожи на его картины.

Reply

whiteferz November 23 2017, 12:59:20 UTC
Понятно. Всё это примерно так же красиво и осмысленно, как скармливать экзешник mp3-проигрывателю или, наоборот, запускать на исполнение аудиофайлы.

(Творчества Модриана, догадываюсь, это тоже касается.)

Reply


fat_crocodile November 28 2017, 01:31:07 UTC
Крутая штука! А ты разобрался, как он устроен?
Я расковырял их пример с Фибоначчи, даже почти сошлось (у меня там одна лишняя команда получается, но наверное это я обсчитался).

Reply

ushastyi November 28 2017, 07:49:26 UTC
Ну я принцип посмотрел, что это похоже на двумерную машину Тьюринга, только команда задается не содержанием ячейки, а изменением цвета при переходе между блоками. Собственно, "рисовать" позволяют блоки, которые можно достаточно произвольно модифицировать, не меняя сути программы.

Reply

fat_crocodile November 28 2017, 10:22:41 UTC
Нуу, двумерной МТ я бы это не назвал, у МТ характерный признак это лента, на которую она пишет и с которой она же читает. Двумерная МТ это что-то такое: https://ru.wikipedia.org/wiki/Муравей_Лэнгтона Она будет рисовать в процессе работы ( ... )

Reply

ushastyi November 28 2017, 10:45:13 UTC
Да, возможность входить в один и тот же блок с разных сторон, и как это можно было бы использовать, это интересная особенность.

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

Reply


Leave a comment

Up