?

Log in

No account? Create an account

Единая система программной документации - Общество дровосеков Бердичева по изучению Мишны

Oct. 28th, 2016

02:29 pm - Единая система программной документации

Previous Entry Share Next Entry

Есть набор ГОСТов, как бы регулирующих правила подготовки программной документации, ноги у которых растут из ЕСКД (единая система конструкторской документации), т.е. чем сильнее похоже на чертёж, тем лучше.
В былые времена (лет, скажем, 20 назад) с этим делом было строго, но чертить и писать чертежным шрифтом уже никому не хотелось, и документация готовилась с помощью форматирующих программ (одна из них, например, называлась СИПРОД - видимо, что-то типа "СИстема ПРОграммной Документации"), а входной язык выглядел примерно так:

*RED                                                                               
*0STA*RG*NN*1RL*0MCS1 67                                                           
*ST4 35 42 67                                                                      
 1)*MDCOГЛACOBAHO                                                                  
*MDПPEДCTABИTEЛЬ ЗAKAЗЧИKA N2272                                                   
*/*10C А.Б.ПЕТРОВ*/                                                           
 2)*MDУTBEPЖДAЮ                                                                    
*MDPУKOBOДИTEЛЬ ПPEДПPИЯTИЯ                                                        
*/*10C В.Г.ВАСЕЧКИН*/                                                                 
$                                                                                  
*0MCS5 63                                                                          
*3/                                           
...
*P*0RL*0MCS1 67                                                                    
*2/*D.-----------------------------------------------------------------.           
*/*DI                    ЛИCT PEГИCTPAЦИИ ИЗMEHEHИЙ                   I            
*/*DI-----------------------------------------------------------------I            
*/*DI   IHOMEPA ЛИCTOB (CTPAHИЦ)IBCEГO I        I          I      I   I            
*/*DI И I-----------------------IЛИCTOBI        I BXOДЯЩИЙ I      I   I            
*/*DI З I ИЗ- I ЗA- I     IAHHУ-I(CTP.)I HOMEP  I   HOMEP  I ПOД- I Д I            
*/*DI M I ME- I ME- I HO- IЛИPO-I  B   I ДOKУ-  ICOПPOBOДИ-I ПИCЬ I A I            
*/*DI . I HEH-I HEH-I BЫX IBAH- IДOKУ- I MEHTA  I TEЛЬHOГO I      I T I            
*/*DI   I HЫX I HЫX I     IHЫX  IMEHTE I        IДOKУMEHTA I      I A I            
*SL1 5 11 17 23 29 36 45 56 63 67                                                  
 1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/                                               
 1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/                                               
 1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/                                               
 1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/                                                     
$                                                                                  
*E                                                                                 
*END

(Люди были серьёзные, до формата вида HTML или markdown не дотумкали.)

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

Originally posted by spamsink at Единая система программной документации

Comments:

[User Picture]
From:kcmamu
Date:October 29th, 2016 12:59 am (UTC)
(Link)
Предположительно:
*0MCS<n1 n2> -- установить начало и конец строк
*ST<n1 n2 ...> -- задать позиции табуляции
*SL<n1 n2 ...> -- задать позиции вертикальной разграфки
*/ -- CR+LF
*<n>/ -- CR + n раз LF
<пробел><n>) -- установить левую границу по n-й позиции табуляции
*D<текст> -- напечатать строку
*MD<текст> -- напечатать строку курсивом
*<n>C -- вывести n пробелов
$ -- сброс всех параметров

Edited at 2016-10-29 01:00 am (UTC)
(Reply) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 01:04 am (UTC)
(Link)
*<n>/ -- CR + n раз LF

Это вряд ли. Каждое
1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/ 1)*2/
по идее печатает одну строку с буквами I в качестве вертикальных отрезков.

(Reply) (Parent) (Thread)
[User Picture]
From:kcmamu
Date:October 29th, 2016 01:53 am (UTC)
(Link)
В моей версии -- шесть пустых строк через два интервала, в которых вертикальные отрезки заданы форматом *SL.

При наличии текста вместо соответствующего

 1)*2/

было бы, видимо,

 1)*D<текст 1-й колонки>
 2)*D<текст 2-й колонки>
...
 n)*D<текст n-й колонки>
*2/
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 02:02 am (UTC)
(Link)
"n)", похоже, инкрементное, раз везде 1) ... 1) ...

В остальном Вы правы, n) *m/ - это n раз <td> и m раз <br>. А когда счетчик полей достигает максимума, заданного в формате таблицы, происходит <tr>.
(Reply) (Parent) (Thread)
[User Picture]
From:kcmamu
Date:October 29th, 2016 02:05 am (UTC)
(Link)
Но палок-то надо ставить не шесть, а одиннадцать.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 02:12 am (UTC)
(Link)
Группировка по строкам, по-моему, red herring. В таблице 10 колонок, так что если если бы "1)*2/" было в общей сложности 20 штук, я бы удовлетворился своей гипотезой. Но их и не 20, и не 22, а 23.
(Reply) (Parent) (Thread)
[User Picture]
From:kcmamu
Date:October 29th, 2016 02:17 am (UTC)
(Link)
9 строк шапки + 23 эти штуки = 32, вполне на число строк на странице похоже.

UPD: $ -- скорее Form Feed.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 02:34 am (UTC)
(Link)
Строк на странице фальцованной бумаги АЦПУ было порядка 60, так что еще +23 горизонтальных разделителя, и получается что надо.
(Reply) (Parent) (Thread)
[User Picture]
From:b0p0h0k
Date:October 29th, 2016 06:37 am (UTC)
(Link)
72.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 08:04 am (UTC)
(Link)
Я про количество строк на странице по ЕСПД.
(Reply) (Parent) (Thread)
[User Picture]
From:b0p0h0k
Date:October 29th, 2016 08:20 am (UTC)
(Link)
"Строк на странице фальцованной бумаги АЦПУ было порядка 60".
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 08:55 am (UTC)
(Link)
Неужели ты думаешь, что я не помню, что их там было 72? Это следует из того простого факта, что высота страницы была ровно фут, а кегль - 12.
(Reply) (Parent) (Thread)
[User Picture]
From:b0p0h0k
Date:October 29th, 2016 10:05 pm (UTC)
(Link)
Да, мне показалось маловероятным чтобы ты такого не помнил, но, согласись, закавыченная фраза не оставляет слишком много места для интерпретации.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 02:30 am (UTC)
(Link)
Или они там хотят аж 23 пустых строки в таблице? Тогда выходит, что каждое n), меньшее или равное предыдущему n) - это <<tr><td colspan=n-1>. Тоже вариант.
(Reply) (Parent) (Thread)
[User Picture]
From:ramlamyammambam
Date:October 29th, 2016 02:46 am (UTC)
(Link)
Я когда-то решал подобную задачу форматирования документов в формате АСПИД.
Методом проб и ошибок получился достаточно небольшой скрипт на Питоне: https://app.assembla.com/spaces/vak-opensource/subversion/source/HEAD/trunk/languages/python/aspid.py
(Reply) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 08:05 am (UTC)
(Link)
Показывает пустую страницу.
(Reply) (Parent) (Thread)
[User Picture]
From:ramlamyammambam
Date:October 29th, 2016 07:00 pm (UTC)
(Link)
Что-то там у них сломалось. Вообще этот ассембловский хостинг не радует в последнее время. Перетащу я всё хозяйство на гитхаб, пожалуй.

Смотри здесь: https://github.com/sergev/vak-opensource/blob/master/languages/python/aspid.py

Edited at 2016-10-29 07:38 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 30th, 2016 12:24 am (UTC)
(Link)
Сипрод посложнее будет.
(Reply) (Parent) (Thread)
[User Picture]
From:fatoff
Date:October 29th, 2016 03:46 am (UTC)
(Link)
Люди были серьёзные, до формата вида HTML или markdown не дотумкали.

Интересно, был ли HTML лучшей альтернативой с точки зрения использование вычислительных ресурсов тех времён.
(Reply) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 08:57 am (UTC)
(Link)
Не был. Обработка формата со стеком тегов и автоматической коррекцией ошибок могла быть дороговата по сравнению с более простой альтернативой. А markdown мог быть.

(Reply) (Parent) (Thread)
[User Picture]
From:janatem
Date:October 29th, 2016 09:05 am (UTC)
(Link)
А где и в какое время это использовалось? Могло ли использоваться в ИПМ? Я бы мог в понедельник порыться в одном шкафу, где много всяких смешных названий типа ДИМОН, АСПИД...
(Reply) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 02:37 pm (UTC)
(Link)
В конце 80-х - начале 90-х, а то и до середины как минимум.
В принципе могло - зависит от того, были ли договоры с "заказчиками номер такой-то", требующими документацию в данной форме.

Если есть, то где-то рядом с АСПИДом (Автоматизированная Система Подготовки Инженерной Документации, ЕМНИП) оно должно быть. В этом шкафу, наверное, только документация, или какие-нибудь чудом сохранившиеся распечатки исходников или ленточки, может, тоже лежат? Смею ли просить об одолжении обзорного фото титульных листов?
(Reply) (Parent) (Thread)
[User Picture]
From:janatem
Date:October 29th, 2016 04:52 pm (UTC)
(Link)
По-хорошему, надо этим систематически заниматься, и, возможно, уже кто-то катологизировал всё хозяйство. Если нет, то будет очень непросто собрать ленты и перегнать в электронную цифру (я даже не знаю, если потребная аппаратура для этого). А фото корешков или избранных титульных листов — не проблема.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 29th, 2016 05:01 pm (UTC)
(Link)
Спасибо!
(Reply) (Parent) (Thread)
[User Picture]
From:janatem
Date:October 31st, 2016 04:57 pm (UTC)
(Link)
Оказалось не так просто: там после переезда еще не разложили по шкафам, поэтому к некоторым стопкам просто не добраться. Кроме того, я ожидал, что у этих препринтов есть корешки, так что можно было бы быстро просмотреть полку, ничего не вытаскивая, но это воспоминание оказалось ложным (действительно, препринты ведь обычно бывают совсем тонкими книжечками).

Потом пришла мысль обратиться к интернетам, оказалось, что препринты ИПМ собраны и доступны, правда полнота, особенно для ранних лет, вызывает сомнение (здесь про сам архив). Этот раздел, похоже, индексируется поисковиками, поэтому если бы оно был, то нашлось бы.
(Reply) (Parent) (Thread)
[User Picture]
From:spamsink
Date:October 31st, 2016 05:44 pm (UTC)
(Link)
Жаль; на сайте, действительно, маловато будет.
(Reply) (Parent) (Thread)