AsciiDots — язык, подобный гоночной трассе


Это выглядит иначе — искусство ASCII, которое вычисляет! AsciiDots — это забавный язык, на котором может быть что-то интересное, что можно нам показать.

AsciiDots

Основной сущностью в AsciiDots является точка . что, грубо говоря, является переменной, которая мчится по дорожке, состоящей из | и -. Вы также можете использовать \ и /, чтобы сделать углы и+, чтобы дорожки пересекались без взаимодействия.  Символы ><^V соединяют T с точкой, движущейся в направлении, в котором символы указывают на T.

Так, например:    

    /--------->-------
    |      |
    \------/

это петля. Точка, которая входит справа, обходит петлю и выходит так, как она вошла. Программа начинается с точки и заканчивается, когда она выходит из дорожки или когда она проходит над &.

Точка начинается с идентификатора по умолчанию и нулевого значения, и когда она мчится по дорожке, она встречает операторов, которые изменяют значение или идентификатор.

AsciiDots

Например: # задает значение, а @ задает идентификатор.

Так:

---#7---

устанавливает значение точки равным семи, когда она проходит.

Оператор $ выводит строку на консоль, когда точка проходит, так что, наконец, «Hello World» в AsciiDots:

.-$"Hello, World!"

Обратите внимание, что программы не должны идти слева направо и сверху вниз. Вы можете запустить программу из любого места, и точка будет следовать по дорожке. Это беспокоит большинство программистов.

Это? является приглашением для ввода и используется только после # или @. Вы также можете использовать ( и ) для отражения точек туда, откуда они пришли. Имейте в виду, что * не является умножением в обычном смысле, вместо этого он дублирует точку и отправляет копии по альтернативным путям.

А как насчет условных условий?

Язык не может быть полным по Тьюрингу без условных обозначений, и у AsciiDots есть очень простое условное обозначение — тильда ~. Это перенаправляет точку, проходящую через него горизонтально вверх, если точка ниже равна нулю. Вы можете превратить это в «не ноль», поставив восклицательный знак под тильдой. Итак, используя пример из руководства:

  /-$"The value is not equal to zero"
  |
.-~-$"The value is equal to zero"
  |
  ?
  #
  |
  .

Это запрашивает у пользователя значение и выводит соответствующее сообщение.

Есть много других операторов, которые вы можете использовать для изменения значения точки, и вы можете узнать о них в руководстве. Ключевая идея заключается в том, что точка будет ждать другую точку у оператора. Например, чтобы сложить два значения вместе:

.-#?-{+}-$#
      |
.-#?--/

Есть некоторые расширенные функции, такие как искажения и библиотеки, но это суть языка.

Есть одна важная вещь, которую нужно прояснить — у вас может быть несколько точек, движущихся по дорожкам одновременно, и точка будет ждать другую точку, когда она встретится с оператором.

Так весело, но зачем беспокоиться?

Хорошо играть с языками, независимо от того, насколько это странно, — хороший способ выяснить, что может сработать, а что нет. Asciidot также является примером языка потока данных, в котором данные передаются через сеть операций с максимальной скоростью. Это хороший способ реализовать параллельную обработку. Наконец, вы можете увидеть поток управления в Asciidot, и это может быть хорошим способом для начинающих.

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

AsciiDots — это программа с открытым исходным кодом, и вы можете попробовать ее в Интернете.

AsciiDots

Добавить комментарий