Привет, Хабр! Автор недавней статьи рассказал о разновидности ASCII-арта, которая вроде как и не совсем «арт», т.е., искусство. Ибо служит практическим целям: показать небольшой эскиз, график, электрическую или иную схему… Решил и я вспомнить на эту тему что-нибудь.

WA1-o-o-+VD1-o-+
    | |      | |
    L C      C R<-+
    1 1      2 1  |
    | |      | |  |
  |-o-o------o-+  |
+-----------------+ +--R3--+C6--|
|                   |
o--C3+-o-|4      8|-o-C7+-o-BA1-Vcc
       | |  DA1   |       |
+------+ |  К174  |       |
|        |  УН4   |       |
o-C4+-R2-|2      6|-------+
         |        |
|--C5+---|5      7|-Vcc
         |        |
|--------|9       |

Когда-то IDE для ПЛК работали так же, как и большинство других серьёзных программ того времени — в текстовом режиме. Программист мог вглядываться во что-то вроде этого (взято отсюда):

| (N.C. physical   (N.C. physical                             |
|   Switch)          Switch)                                  |
|   Low Level       High Level                Fill Valve      |
|------[ ]------|------[ ]----------------------(OUT)---------|
|               |                                             |
|               |                                             |
|               |                                             |
|   Fill Valve  |                                             |
|------[ ]------|                                             |
|                                                             |
|                                                             |

Те современные ПЛК, которые снабжены встроенными дисплеями на HD44780, и сегодня так могут.

Но даже оказавшись за компьютером, где графический режим — единственный и безальтернативный (например, БК), составитель инструкции или справочника мог по инерции сбацать такое (фрагмент структурной схемы микропроцессора К1801ВМ1, отсюда):

    1          34        30    29    35    31    32    33
    |           |         |     |     |     |     |     |
 CLC|           |     ACLO| DCLO| VIRQ| IRQ1| IRQ2| IRQ3|
    |       INIT|         |     |     |     |     |     |
   \|/          |        \|/   \|/   \|/   \|/   \|/   \|/
    |          \|/        |     |     |     |     |     |
|___|___|      /|\      |_|_____|_____|_____|_____|_____|_|
|схема  |       |       |              Блок               |
|такти- |       |       |           Прерываний            |
|рования|       |       |_______________|_________________|
|___|___|       |                       |
    |           |                      /|   /|\          |                       |
    |           |                       |

Инерция продолжалась и в девяностых, и даже в начале нулевых. Вот, например, эскиз, сделанный в 1997 году:

              __________________________
             /                         /            |                         |  |
           |    SOUP CAN             |    |
           |                         |    |
          |                         |      |
          |                         |  __  |
RUBBER    |                         | (  ) |
SHEET __\ |                         | (__) |      
        / |                         |      | /__ WITH
          |                         |      | \   HOLE
           |                         |    |
           |                         |    |
            |                         |  |
             \_________________________\/

Это знакомый многим генератор вихревых колец (отсюда): с одной стороны мембрана, с другой — стенка с отверстием.

Могли и электрическую схему так изобразить. Если при этом брали псевдографические символы из второй части кодовой таблицы, получалась привязка к кодировке. Из КОИ-8Р в 866 и обратно перевести ещё можно, а в 1251, где таких символов нет — уже проблема. При пользовании дополнительными возможностями редакторов, например, Vortex (для БК) или «Слово и дело», получалась вообще привязка к определённому редактору. Vortex был вообще удобнейшей штукой: не сразу поймёшь, в каком редакторе выполнена схема, в текстовом или графическом. Зато отказ от всего этого обеспечивал настоящую кроссплатформенность. Можно было составить схему, например, на «Амиге», а посмотреть на «Корвете». Вот преобразователь полярности из +5В в -5В, полезная вещь для экспериментирующих с КР580ВМ80, диоды анодами вверх, отсюда:

           +V
           ^
           |
   +-------+---+
   |       |   |                  -V Output
  R1       |8  |4        +----+--->    
   |    7 -------        |    |            Parts List:
   +-----|       |      D2    |            IC1 = 555
   |  +--|       |  +    |    |             R1 = 1.5K
  R2  | 6|  IC1  |---C1--+    |             R2 = 10K
   |  |  |       |3      |    |             C1 = 10uF,16V
   +--+--|       |      D1   C2             C2 = 22uF,16V
   |    2|       |       |    |+            C3 = 1500pF
   |      -------        |    |          D1,D2 = 1N4001 diodes
  C3         |1          |    |
   |         |           |    |
   +---------+-----------+----+
             |
            ===
           (GND)
 

Какого-либо стандарта на ASCII-схемы не было. Особенно в отношении того, как обозначать пересечения проводников без соединения, а как с соединением. Одни предпочитали такой способ:

 |
-+- соединение
 |

 |       |
--- или -|- пересечение
 |       |

Другие — такой:

 |       |
-o- или -*- соединение
 |       |

 |
-+- пересечение
 |

В обоих случаях быстро сориентироваться было несложно. А разбивка схемы на фрагменты позволяла практически избавиться от пересечений.

Почему так продолжали делать, когда практически у всех были видеокарты VGA и выше? Причин несколько.

  1. Формат подходил для групп новостей и Фидонета.
  2. Текст (или HTML) и набор иллюстраций в ASCII — это один файл, и он — не архив. На текстовые редакторы, позволяющие объединить в один файл текст и графику (один из них — снова 'Слово и дело"), единого стандарта ещё не было. В общем-то, и сейчас нет, но современные офисные пакеты хоть как-то импортируют форматы друг друга, а тогда… Да и привязка к определённому редактору, опять же, не всем нравилась.
  3. Не меньший «зоопарк» имел место и в мире графических форматов. К нынешнему стандарту де факто «PNG, GIF, JPEG» пришли не сразу. Были BMP, PCX и прочие. Потом, конечно, придумали многоформатные просмотрщики, такие, как PV.
  4. Не всегда были и площадки со встроенными фотохостингами, такие, как «Хабр» или «У Самоделкина». Сторонние фотохостинги сносили изображения за давностью лет или из-за отсутствия просмотров.
  5. Старые VGA-карты в графическом режиме обеспечивали меньшую частоту кадров. Когда у всех были ЭЛТ-мониторы, это имело значение. А матричные принтеры печатали текст в режиме Draft очень резво.

Ну а зачем теперь всё это? Во-первых, ностальгия. Пишут ведь биперную музыку, хотя сегодня даже кнопочный телефон за 400 рублей проигрывает MP3. Во-вторых, фрагменты схем, поясняющие, что куда подключать, в ASCII-формате удобно помещать прямо в скетчи. Вот так (взято отсюда) можно сэкономить выводы Arduino, подключив к нему индикаторы через счётчики:



Пользуйтесь этим приёмом и вы, и тому, кто решит повторить вашу конструкцию, вы сэкономите лишние телодвижения. Если он скачал скетч давно, и забыл, откуда — не придётся вспоминать или искать.

Комментарии (12)


  1. keydon2
    23.02.2019 15:46

    Тяжело редактировать.


    1. tormozedison Автор
      23.02.2019 16:05

      Было тяжело, пока пытался изобразить всю сложную схему целиком. «Простыня» не влезала в стандартные тогда 80 символов по горизонтали, а ещё чтобы что-нибудь подвинуть, требовалось каждую строку редактировать отдельно. Как понял, что надо схему на фрагменты разбивать, полегчало сразу.


      1. sim2q
        23.02.2019 20:06

        да в редакторе надо было другом, который произвольное место сразу позволяет сам добивая пробелы


    1. AngReload
      24.02.2019 07:47
      +1

      Особенно если про overtype забыл.


  1. artskep
    23.02.2019 16:15
    +1

    Ну, дабы не плодить статьи с примерами диаграмм в ascii, порекомендую тем, кто еще не видел, почитать rfc, где это обыденность.
    Ну, а особенно мой любимый https://tools.ietf.org/html/rfc2549


  1. ser-mk
    23.02.2019 16:38

    я так понимаю никакого удобного инструмента для рисования подобных схем нет?


    1. VT100
      23.02.2019 17:04

      AACircuit, например. «Утка» даёт две ссылки на Гитхаб.


    1. vladkorotnev
      24.02.2019 08:24

      AsciiFlow, например — судя по всему, им пользуется, к примеру, Apple в исходниках Swift'а


  1. teakettle
    24.02.2019 02:18
    +1

    Вспомнилось знаменитое письмо про «Наш ответ пользователям» с отсылкой «см. рисунок 1» — он тоже был ASCII-артный :)


  1. FTOH
    24.02.2019 10:20

    Есть инструмент svgbob, который умеет рендерить ascii art в svg рисунки.
    Вот такая схема

         +10-15V           ___0,047R
          *------o------o-|___|-o--o---------o----o-------.
                 |      |       |  |         |    |       |
                ---     |       | .+.        |    |       |
          470uF ###     |       | | | 2k2    |    |       |
                 | +    |       | | |        |    |      .+.
          *------o      '--.    | '+'       .+.   |      '-'
                 |         |6   |7 |8    1k | |   |       |
                GND      .-+----+--+--.     | |   |       |
                         |            |     '+'   |       |
                         |            |1     |  |/  BC    |
                         |            +------o--+   547   |
                         |            |      |  |`>       |
                         |            |     ,+.   |       |
                         |            | 220R| |   o----||-+  IRF9Z34
                         |            |     | |   |    |+->
                         |  MC34063   |     `+'   |    ||-+
                         |            |      |    |       |  BYV29     -12V6
                         |            |      '----'       o--|<-o----o--X OUT
                         |            |2                  |     |    |
                         |            |--o                C|    |    |
                         |            | GND         30uH  C|    |   --- 470
                         |            |3      1nF         C|    |   ###  uF
                         |            |-------||--.       |     |    | +
                         '-----+----+-'           |      GND    |   GND
                              5|   4|             |             |
                               |    '-------------o-------------o
                               |                           ___  |
                               '------/\/\/------------o--|___|-'
                                                       |       1k0
                                                      .+.
                                                      | | 5k6 + 3k3
                                                      | | in Serie
                                                      '+'
                                                       |
                                                      GND
    

    превращается в


    Прогнал арты из статьи с небольшими изменениями (т.к. инструмент содержит ошибки):
    Скрытый текст
    1)
    Измененый арт
     WA1 -o-o-+VD1 -o-+
          | |       | |
          L C       C R <-+
          1 1       2 1   |
          | |       | |   |
       +--o-o-------o-+   |
     +-+------------------+ +--R3 -+C6 -|
     |                      |
     o--C3+ -o--¬4       8--o-C7+ -o-BA1 --Vcc
             |  |   DA1   |        |
     +-------+  |   К174  |        |
     |          |   УН4   |        |
     o-C4+ --R2-|2       6|--------+
                |         |
     |---C5+ ---|5       7|--Vcc
                |         |
     |----------|9        |
    


    1. tormozedison Автор
      24.02.2019 11:51

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


  1. Dinxor
    24.02.2019 11:48
    +1

    Довелось работать с ПЛК Omron из середины 90-х, там в софте была возможность вывести всю программу в виде такого ASCII-арта. Оказалось очень удобно — можно сравнивать версии программы с размазанными по разным блокам изменениями, все диффы сразу видно.