Как стать автором
Обновить

Комментарии 35

Замечательная новость, достойная современного Хабра!

/пишу, в чем не согласен/ Эзотерика в программировании - это интересно, и чем упоротее, тем лучше. Мозги надо периодически взбивать, как подушку ;)

не гадю ;)

В связи с чем-то плюсик стоит, не помню уже...

Да, эзотерика - это классно, но когда она не столь примитивная. Кто-то уместил операционную систему в один килобайт - это круто, это новость. А код, как будто написанный на уроке информатики в седьмом классе - это не новость.

эзотерика - это классно, но когда она не столь примитивная

Красота в глазах смотрящего, как и крутость. Мне идея понравилась.

Offtopic:

На HN в комментариях люди делятся тем, что получилось нарисовать. На Хабре - пишут КГ/АМ. Интересное отличие в менталитете.

Жаль, что вы не потрудились раскрыть свою мысль.

Эзотерика интересна когда она раскрыта. Пример расписан и объяснён. В чем фишка показаны.

А не просто "вот еще один недоязык по фану".

Пожалуйста, привидите пример раскрытия в этом конкретном случае.

Набор команд и принцип работы обозначены. Пример работы приведён. Это - новость, а не статья-разбор.

Что такое "блок"? Почему n вложенных друг в друга блоков дают прямоугольник именно таких размеров?

Как именно работает смена цвета?

Хочется раскрытия этих тем прямо в статье, иначе статья преаращается в одну ссылку на документацию.

Хочется раскрытия этих тем прямо в статье

Так это не статья, а новость. Обозначены основные моменты.

Ну т.е. параметризации вообще никакой? Чтобы нарисовать (аппроксимировать) две окружности разного размера, нужн описать две разные программы? Как-то грустно.

Вы правы. Язык минималистичный (читай ограниченный). Интересно, как бы вы добавили параметризацию?

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

Так автор и говорит о том, что вдохновлялся языком Logo.

Точно-точно! Всё это уж было в симпсонах~ черепашке из комплекта учебных миров (кумир )))

MoveTo(x, y)
LineTo(x, y, color)

Две команды.

Pixel(x,y,color)

всего одна

Слишком много параметров.

^  // инкрементируем цветовой код текущей ячейки сетки
+  // инкрементируем позицию текущей ячейки сетки
// rgb компоненты пикселя представлены тремя последовательными ячейками в сетке

Тут проблема с длиной строки, если сетка неизвестного размера по горизонтали, то картинка не воспроизведётся. Нужна третья команда. Либо перевод строки, либо задать длину строки либо что-то ещё...

Сетка может сразу фиксированной быть. Ну или перед началом секции рисования можно сделать секцию заголовка, где количество + обозначает ширину и завершается первой ^.

Фиксированная сетка это плохо. Секция заголовка решает проблему, но это уже не так изящно, к сожалению. Проще тогда задать длину строки и всё

Я предлагаю такое решение - инкрементация позиции в сетке происходит по спирали. Тогда размер сетки не важен.

6789

501

432

либо уголком

0136

247

58

9

Спиральная схема самая классная.Так рисунок в любой момент близок к квадратному, и сам способ веет эзотеричностью.

Если есть два смежных края, то можно идти по диагоналям на бесконечной сетке:

(0, 0)

(0, 1), (1, 0)

(0, 2), (1, 1), (2, 0)

и так далее.

Да, я там выше предложил, по спирали и уголком...

RunJSCode(code).

1 команда, 1 параметр + сделать можно много чего.

RunJSCode

eval же.

Напоминает «черепашку» для 6-7 классов :) поднять перо/опустить перо :) там тоже сокращения и ограничения

Язык Logo, которым вдохнавлялся автор - это оно и есть.

Так он даже не Тьюринг-полный. В отличии от P'', кстати. Язык, в котором нет условного выполнения кода - это и не язык программирования, в принципе.

С таким подходом, языком можно назвать и RLE, например. Или даже BMP - там вообще одна "команда" - "задать цвет пикселя в текущей точке и передвинуть виртуальный курсор на следующую".

Ваше утверждение верно, но CFR[] назван не языком программирования, а языком для рисования.

Э. Они изобрели brainfuck? Который в силу тьюринг-полноты может всё, но реально используют его (в силу сложности, поскольку ассемблер по сравнению с ним - просто Copilot) именно для такого вот рисования.

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

Мои руководители могут уложиться в одну команду сделать заебись

Эх, помню на Yamaha MSX в Бейсике команда DRAW была, примерно с таким же синтаксисом. Конец 80ых прошлого века.

RR[FCCF[CCC]]FFCCF[CCC][FCCFF[CCC]]FF[FRR]CCF[CCC][FCCFF[CCC]]FCCFF[CCC][FCCF[CCC]][F[RRR]][FFCCF[CCC]][FCCFF[CCC]]FCCF[CCC][FRR]CCF[CCC][FCCFF[CCC]]FCCFF[CCC][FCCF[CCC]][F[RRR]]CCF[CCC]FCCF[[CCC]FFCCF][CCC]FFCCF[CCC]FFF

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории