Семантичний перенесення рядків

Від перекладача:
Деякий час тому на Хабре публікувався переклад статті під назвою "Мистецтво командного рядка". Серед іншого, у статті було рекомендовано освоїти vim. Джерело статті, викладений на Гитхаб, за іронією долі, виявився абсолютно непридатним до редагування саме цим редактором, так як в ньому на один параграф припадала рівно один рядок.
Я тоді висловив своє здивування автору і попросив його вирівняти текст на 80 символів. Але після нетривалої дискусії в коментарях дали посилання на опис форматування джерел літературних текстів за семантичним принципом. Ідея, закладена в цьому принципі загалом досить проста, але я був вражений її глибиною, якої, нехай і з запізненням, хочу поділитися з оточуючими.
Хочу попередити, що не всі посилання у статті працездатні, але я вирішив залишити їх як є — мало що.
Отже, стаття.
Семантичний перенесення рядків
На щорічному лікнепі Sphinx проводився в рамках PyCon я регулярно даю одну пораду. Вдячний слухач запитав, де я сам почерпнув ці знання. Я провів археологічні вишукування і тепер у мене є відповідь на це питання. Дозвольте розповісти вам про «семантичні переноси рядків», а потім я відкрию джерело цього знання — яке, як з'ясовується, було явлено світові коли мені було всього кілька місяців від народження!
На лекції я задаю запитання — чи передбачається, що Sphinx файли будуть доступні для читання кінцевому користувачеві. Якщо ні, то я закликаю слухачів розглядати файли як «вихідний», який можна форматувати семантично. Замість метушні з рядками кожного параграфа з метою підігнати їх до однакової ширини, можна закінчувати рядок в будь-якому місці, що розділяє дві думки.
Результат може виявитися чудовим.
Якщо починати кожне речення з нового рядка і ділити самі пропозиції на висловлювання, текстові файли стає набагато простіше редагувати і зберігати в системі контролю версій. Текстові редактори відмінно вміють працювати з рядками тому якщо кожна пропозиція представлена блоком послідовних рядків, ваш редактор раптово виявляється надзвичайно потужним інструментом для швидкої перестановки висловлювань і думок.
До того ж, ваша система контролю версій буде просто в захваті від семантичних переносів рядків. Чи траплялося у вас, щоб після зміни кількох слів на початку параграфа, виявлялося, що система контролю версій тепер вважає зміненим весь текст?
Пишність рішення в тому, що тепер, якщо ви
-передумаєте щодо того, як повинен виглядати
-параграф можна змінити форматування виводу
-простим зміною визначення ".PP" і
-перезапуском форматтера.
+Краса рішення в тому, що тепер, якщо ви
+передумаєте щодо того, як повинен виглядати
+параграф можна змінити форматування виводу
+простим зміною визначення ".PP" і
+перезапуском форматтера.

Якщо кожне речення і висловлювання починати з нового рядка, ви можете провести ті ж самі зміни в тому ж самому параграфі не змінюючи більшу його частину.
Пишність рішення в тому,
+Краса рішення в тому,
що тепер, якщо ви передумаєте щодо того,
як повинен виглядати параграф 
можна змінити форматування виводу
простим зміною визначення ".PP" 
і перезапуском форматтера.

«Семантичні переноси рядків,» як я їх називаю, полегшують мені життя вже більше двадцяти років, і диктують пристрій моїх текстових файлів під капотом незалежно від використовуваної розмітки, будь то HTML, TeX,RST, або поважний
troff
.
Звідки ж я дізнався про цій штуці?
Довгий час я думав, що моїм джерелом було Керівництво інструментарію для створення UNIX документації. Інструментарій був спробою AT&T просунути на ринок операційну систему, яка стала культовою серед інженерів Bell Labs, шляхом додавання в систему найпотужніших інструментів офомлению тексту. Спроба звичайно провалилася — кажуть, що AT&T з маркетингом все було просто жахливо, також як і в Xerox, де поняття не мали що робити з ідеями бурлившими в PARC в 1970-x — але мій батько працював в Bell Labs і у нього вдома був примірник документації до Інструментарію. (В інтернеті я копії знайти не зміг — може бути, всі доступні копії були знищені під час руйнівної війни за копірайт яка абсолютно заслужено призвела SCO до краху?)
Але в результаті ретельних пошуків, я обраружил більш ранній джерело і з радістю дізнався, що джерело мого натхнення не хто інший, як Брайен Ст. Керниган!
Він опублікував «UNIX для початківців» в якості технічного меморандуму Bell Labs 74-1273-18 29 жовтня 1974 року. У ньому описана набагато більш проста версія операційної системи, ніж його більш відомою і широкодоступною «UNIX для початківців — Друге Видання» 1978 року. В результаті довгих пошуків я виявив самотню копію, посилання на яку наведено вище, розміщену на маловідомому японському сайті, присвяченому UNIX 6th Edition. У розділі «Поради по підготовці документів» Керниган ділиться своєю мудрістю:
Поради щодо підготовки документів

Більшість документів встигає змінити кілька версій (завжди більше, ніж здається на початку) перед тим, як робота над ними буде завершена. Відповідно, слід робити все можливе для полегшення внесення змін.

Насамперед, коли ви займаєтеся чисто механічним набором тексту, набирайте так, щоб полегшити подальше редагування. Починайте кожне речення з нового рядка. Робіть рядка короткими і закінчуйте рядка природним чином придатних для цього місцях, таких як коми і крапки з комою, а не де доведеться. Так як у більшості людей правки складаються з переписування фраз і додавання, видалення, а також перестановки пропозицій, ці заходи спрощують яку подальшу редактуру.

— Брайен Ст. Керниган, 1974
Зауважте, як питонически звучить його раду — він замінює вигадки про документи написаних «раз-і-назавжди» реалістичним підходом — написанням тексту, який просто редагувати надалі.
Я, мабуть, прочитав це коли вперше вивчав UNIX і проніс крізь всі ці роки. Той факт, що рада даний в 1974 році, і спочатку орієнтований на полегшення редагування тексту в жахливо обмеженому редакторі
ed
можна з тим же успіхом застосувати в сучасному світі різнобарвних повноекранних редакторів, таких, як Emacs і Vim і розподілених систем контролю версій, абсолютно немислимих в 1970-х, дуже багато говорить про мощі юниксового підходу.
Якщо вас цікавить рання документація до UNIX — в тому числі Друге Видання Посібника для Початківців Кернигана — подивіться на 7th Edition manuals благородно викладене Bell Labs в мережу у вигляді PDF файлів а також у вигляді текстових файлів, з розміткою для
troff
. Зверніть увагу — з
troff
файлів і по сей день можна зібрати готовий документ, який можна переглядати сучасними засобами — спробуйте-но провернути фокус з форматованим текстом з будь-яких інших редакторів 1970-х!
Післямова від перекладача:
Чому я дозрів опублікувати цей переклад тільки зараз? Все в загальному просто. На Хабре нещодавно з'явилася підтримка формату Markdown, чому я був невимовно радий. Тільки от з'ясувалося, що рядки Хабр чомусь не склеює, хоча Markdown не повинен склеювати рядки якщо тільки вони закінчуються двома висячими пробілами.
І виходить, що я не можу писати статті в улюбленому редакторі, зберігати їх в улюбленій системі контролю версій, а потім просто копіпаст на Хабр. Хабр! Як так? Чому? Зроби, будь ласка рядки склеювалися! Бачиш, сам Керниган сказав, що це правильно!
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.