Примечание от переводчика: типично пятничная статья во вторник утром… почему бы и нет?
Большинство людей — визуалы. Они используют изображения, чтобы вникнуть в суть проблемы. А вот мэйнстримные языки программирования, напротив, основаны на текстовом представлении. Возникающую пропасть между текстом и графикой заполняют ASCII-изображения, нарисованные с помощью текстовых символов и вставленные в исходный код программы. Я их обожаю! Как-то раз я кинул клич в Twitter и мне прислали гораздо больше примеров, чем я ожидал. Спасибо всем участвовавшим. В этой теме попалось несколько прекрасных примеров, которые я собрал и разложил на категории. Для каждого изображения дается ссылка на соответствующий репозиторий.
Структуры данных
Одно из самых распространенных применений ASCII-арта в коде — наглядно показать структуру данных.
Первый пример из исходного кода LLVM:
Расположение полей в структуре данных в Jikes RVM:
Поворот дерева в Musl:
Двусторонняя очередь в Rust:
Внутренности компилятора Swift:
Расположение элементов в заголовке Malloc:
Конечные автоматы
Профилирование Javascript:
RPC в Cloud Spanner:
Состояния потока ввода-вывода:
Логика предметной области
Поток управления в декомпилируемой программе NWScript:
Внутренности ECC:
Форматирование чисел:
Квантовый контур:
Балансировка задач управления памятью в ядре операционной системы:
Совместимость типов (это особенно впечатляющий случай, потому что здесь ASCII-арт является кодом!)
Формат файла DBF:
Lookup-таблица для обработки изображений:
Форма цветовой функции:
Структура URL:
«Краткая» справка по отмене операций в emacs:
Исходник
Примечание переводчика: по ссылке еще очень много подобных графиков
Геометрия
Контроль высоты в бортовом компьютере Apollo (!!!):
Разбитие изображения на сегменты:
Траектории бумеранга в Nethack:
Отрисовка границ элемента в CSS:
Дерево квадрантов:
Управление скоростью работы станка:
Скроллинг веб-страниц:
Надеюсь, вам понравилось!
Дополнительный пример от переводчика:
График интерполяции значения:
Автор: Андрей