Посібник з набору коду для непрограмістів


13

Фон

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

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

Питання

Я шукаю ресурс, який:

  • пояснює основи введення коду,
  • орієнтована на набірники без досвіду програмування.

Складність з цим полягає в тому, що це залежить від мови та умов, які використовуються, тому питання досить широке, навіть якщо відповіді просто пов'язують ресурс
Zach Saucier,

2
@Scott Ну, що стосується цитат, пробілів, символів - насправді можна досить добре узагальнити: їх треба зберегти.
Михайло V

1
@MikhailV Я просто вважаю, що багато мов коду мають більше спільного з іноземними мовами, ніж просто настанови. Впевнені, що ви можете приблизно визначити, де слід розміщувати пробіли та канали рядків, але щоб бути точним, вам дійсно потрібно зрозуміти мову, яку ви коректуєте. Так, ви можете сказати редакторам / коректорам залишити "як є", це не означає, що в кінцевому підсумку все-таки буде правильно.
Скотт

1
@Wrzlprmft Прикольна річ, не можна скопіювати вставити формат PDF python, не втративши всі попередні пробіли у програмі acrobat або acrobat. Це "розумно" їх видаляє. Точно так само, якщо ви вставите код у багато редакторів WYSIWYG, як word або INdesign, вони замінять лапки цитатами типографів (якщо ви не відключите таку функцію), але для коду, який дійсно є BAD. Крім того, в idesign ви дійсно не можете правильно набрати код без введення іншого символу для розриву рядків, що може стати поганою справою, якщо ви коли-небудь копіюєте код назад.
joojaa

1
@ usr2564301: Перш за все, це запитання зараз знайдеться деякими пошуковими системами, тому більш імовірно, що будь-який набір інструментів, що мають ті ж проблеми, що і мій, може знайти потенційну відповідь (і якщо вони не будуть, я міг би бути належним чином переправити про це). По-друге, так, я б включив посилання у відповідь на свої докази, оскільки це може запобігти ще не допущені помилки у другому раунді доказів. Також не завадить мати посилання, якщо набір впертих. Нарешті, це журнал / видавець, який рідко стикається з кодом, тому він дещо відрізняється від сценаріїв, які ви зображуєте.
Wrzlprmft

Відповіді:


7

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

  • Вкладки повинні бути шириною 4 або 8 пробілів (чотири - найпоширеніші)
  • Шрифт повинен бути шрифтом фіксованої ширини. І майже повсюдно має бути.
  • Переконайтесь, що ваша заявка не проводить жодних підстановок!

    Це означає, що немає лігатур.

    Також багато програм (наприклад, Word та InDesign) змінюють прямі цитати на пари типографів. Переконайтеся, що такі параметри вимкнено, перш ніж вставити код у свій документ.

  • Не дозволяйте коду автоматично перетікати з одного рядка в інший. Не чіпайте код, ви не експерт!

Код не є основним текстом, він не відповідає жодним друкарським умовам. Запитайте себе, чи вводили ви текст на ілюстрації?

Якщо ви експерт

Якщо ви є експертом і знаєте мову, про яку йдеться, застосовується наступне.

Примітка . Не здогадуйтесь і не робіть висновку, прочитайте сказане. Багато мов виглядають однаково, і код може бути якоюсь псевдомовою, схожою на реальний код. Тоді ви можете:

  • Займайтеся редактором, як розфарбування / розмальовування / італізація ключових слів, якщо і лише якщо ваша заміна має однакову фіксовану ширину. Найкраще дозвольте редактору зробити це за вас (такі редактори, як скажімо, scintilla можуть експортувати відформатований код). Пам'ятайте, що редактору потрібно знати мову, можливо, також і бібліотеки.

    Зверніть увагу, якщо ви робите це неправильно, це приносить більше шкоди, ніж користі.

Якщо ви експерт з домену. Як відомо в мові та бібліотеці та розумієте код, про який йде мова:

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

    Тест лакмусу - це ви могли б написати код, про який йдеться. Якщо ні, то не можна судити. Запитайте автора.

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

Але тоді ви все це знали, зрештою ви були експертом. Краще нехай автор редагує код.

Номери рядків?

Деякі мови програмування та випадки використання можуть скористатися номерами рядків. Але будьте обережні тут, оскільки це є фальшивим пасом для деяких мов.

Проблеми.

Будьте в курсі, що незалежно від того, чим займаєтесь, ви насправді не можете протистояти неможливим технічним перешкодам. Код насправді не слід набирати, він повинен бути просто неформатованим текстом. Це призводить до дивних проблем.

Наприклад: такі мови, як Python, не можуть обробляти багато глядачів PDF, наприклад Adobe Acrobat. Якщо вставити код з файлу PDF, редактор вирішує не включати попереднє пробіл під час копіювання вставлення. Це знищує можливість вставлення коду з PDF у редактор. Дійсно не існує хорошого способу впоратися з цим!


@ usr2564301 ага так правда
joojaa

1
@ usr2564301 Зроблено, все-таки я думаю, що читабельний вибір шрифту - це те, що типограф повинен розуміти. У будь-якому випадку, який також відрізняє малі регістри i без крапки (так, ми налагодили один шматок кодового коду протягом місяця, тому що ми не знали, що малі регістри 'я' є різними великими літерами «Я» у турецькій мові) утворюють 1 теж
joojaa

"Не дозволяйте коду переходити з одного рядка в інший" - це хороша теоретична порада. Але якщо ви вводите стандартний формат друку 6x9 і у вас є рядок коду з 600 символами, вам буде важко прислухатися до цього.
Жак Янус Бахс Жак

1
Код @JanusBahsJacquet зазвичай пишеться менше 80 символів на рядок. Тож якщо ви отримаєте щось подібне, то, можливо, ваші вказівки щодо подання заявки відстійні. Програмісти знають про вказівки щодо подання, адже це те, що таке кодові бази. Річ полягає в тому, що, порушуючи рядки, ви можете закінчити зміну значення коду.
joojaa

1
@JanusBahsJacquet Ось чому ви запитаєте автора, ви оновлюєте інструкції, тому вам не потрібно робити це занадто часто. добре в будь-якому випадку, якщо код не може бути розділений на довгі рядки, тоді і набірний інструмент не може нічого з цим робити. До речі, що зробила б набір машин для занадто широкої картини, яка не може змінити розмір чи обрізати? У будь-якому випадку я передбачу, що подання коду буде більш поширеним у майбутньому
joojaa

4

Відповідь, звичайно, може залежати від багатьох факторів, але якщо ми почнемо з правильного, добре відформатованого простого текстового коду , то тут можна більш-менш узагальнити речі.

Початковим "форматуванням" у вихідному тексті буде: новий рядок , пробіл та символи вкладки . Зауважте, що новий розрив і ручний розрив рядків (як у програмному забезпеченні DTP) - це не те саме, і навпаки, деякі рідкісні мови можуть дозволити інші символи форматування, хоча я ніколи про таке не чув.

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

Деякі основи щодо початкового форматування простого тексту добре знати. Наприклад, для Python є посібник зі стилю PEP8 . Цей посібник із форматування, створений для Python, може використовуватися як орієнтир для основних мов, таких як C / C ++ та Java. Розгляд різних прикладних проектів може допомогти при сумніві.

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

  • На жодній сцені не відбувається автоматична заміна символів .
  • Не вноситься жодних змін до тексту (якщо ви не впевнені на 100%).
  • Не відображаються обгортання ліній.
  • Відступи зберігаються візуально та є послідовними (приблизно чотири х  ширини на рівень відступу).
  • Початковий (нульовий) рівень відступу має бути видимим.
  • Визначені стилі не руйнують форматування синтаксису (якщо використовується підсвічування синтаксису).
  • Майте резервну копію джерела в простому тексті, щоб мати можливість повторно перевірити оригінальне форматування або почати заново.
  • Номери рядків, якщо вони є, повинні бути неушкодженими, особливо якщо вони посилаються на пояснення.

Насправді, якщо початкове джерело відформатовано належним чином, взагалі не повинно бути загортання рядків. Якщо загорнуті лінії все-таки з’являються і неминучі, найпоширенішим рішенням є однорівневий висячий відступ (див. Вище зв'язаний PEP). Якщо потрібне переривання рядків - краще зверніться до керівництва зі стилем або до автора.

Однак деякі незначні символи «пробілу» можуть потребувати заміни. Оскільки джерело може включати символи вкладок, це означає, що, набір інструментів повинен забезпечити відповідність усіх вкладок на початку кожного рядка, тобто вкладені відступи зберігаються візуально, і кожен наступний рівень відступу має однакову ширину (приблизно чотири х  ширини на один рівень відступу).

В ідеалі відступи, зроблені пробілами або змішаними пробілами та вкладками, повинні бути замінені на таблицю (або з тим, що програмне забезпечення DTP може зробити краще для вкладених відступів), тому, якщо потрібно, коригування відступів може бути простішим.
Звичайно, можна залишати пробіли, але може бути складніше керувати їх шириною при зміні шрифту і важче вирівняти внутрішні відступи, як у стовпцях таблиці.

Монорозміщений шрифт + пробіли

Зауважте, що якщо джерело відформатовано пробілами навмисно і призначене для читання лише односхилим шрифтом (наприклад, ASCII-діаграми або ASCII-арт), то слід зберігати пробіли повністю незмінними , але це рішення слід приймати з самого початку. Шрифт "Courier New" є найбільш поширеним для цього випадку. Однак, якщо це не дуже потрібно, я раджу проти монстроскопії, тому що все менше нових людей вибирають моношироку для кодування сьогодні, а у випадку коректури пропорційні шрифти дадуть кращий досвід читання.

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

Я думаю, що тут можна провести лінію, і якщо вищезгадане буде зроблено, то на 99% ймовірність того, що все повинно бути добре, принаймні для простого блоку коду з одним шрифтом без кольорів.


Інструменти та розширене форматування

Крім того, вигляд можна значно покращити, використовуючи підсвічування синтаксису.

  • кольоровий друк або перегляд екрану: у повнокольоровому макеті можна використовувати будь-яку особливість виділення, тому це найкращий сценарій, але друк може змінити колір.

  • відтінки сірого чи чорно-білого шрифту: тут, звичайно, можна використовувати жирний шрифт (наприклад, ключові слова) або курсив (наприклад, коментарі), але зауважте, що кольори перетворяться на сірий з усіма наслідками. Наприклад, сірі коментарі можуть виглядати чудово на дисплеї, але можуть стати занадто блідими на папері.

Найважливіше питання - чи виробник макетів має інструменти, які можуть представляти код у читаній формі. На щастя, існує безліч безкоштовних інструментів для редагування коду, найбільш відомими (для Windows) є: Notepad ++, VSCode, Visual Studio . Але пам’ятайте про можливі неявні автоматичні перетворення вкладок у пробіли.

У Notepad ++ є можливість експорту коду у вигляді RTF , що збереже все форматування та підсвічування синтаксису джерела.

Якщо макет не потребує зміни потоку тексту у поданні коду, можна безпосередньо використовувати зображення (скріншоти) - він не такий гнучкий, як текст, але збереже 100% форматування та нумерацію рядків і може заощадити багато часу. Наприклад, номери рядків можуть бути складно зберегти у текстовій формі. Також експорт у PDF - хороша альтернатива - але не все програмне забезпечення DTP може вбудовувати PDF-файли, а деякі форматування можуть бути втрачені при друку в PDF.

Наприклад, моє налаштування коду Python у Блокноті ++ виглядає так:
введіть тут опис зображення

Це лише для того, щоб проілюструвати, що можна безпосередньо використовувати скріншоти, і це, власне, може бути найпростішим методом. Існують різні інструменти, які можуть допомогти в зйомці екрана - можливо, вам знадобиться "зшивання" екранів для зображення з більшою роздільною здатністю.

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

Додаткові інструменти / плагіни для визначення користувальницької мови також поширені, але для них потрібні знання синтаксису.


Це чудова і ретельно продумана відповідь. Але скріншоти можуть бути недостатньо оптимальними, якщо ви плануєте друкувати це через роздільну здатність. Щось мати на увазі.
Джеремі Карлсон

1
@JeremyCarlson в Np ++ також можна відрегулювати розмір шрифту / міжрядковий інтервал - тому в теорії немає обмеження для роздільної здатності екрана, але це буде складніше створити, особливо на невеликому екрані. Можливо, навіть є якась хитрість використовувати віртуальний дисплей та налаштувати дуже великий розмір вікна
Михайло V

тому що сьогодні все менше нових людей обирають одноразове для кодування - Це може бути, але одноразове використання все ще використовується переважною більшістю. Ви не можете просто перевести звичайні умови набору тексту в код. Наприклад, розділові знаки важливіші, ніж у звичайних текстах (більшість аргументів з цієї моєї відповіді перекладаються на це). Немоноспеціальний шрифт коду значно відрізнятиметься від звичайного тексту. Крім того, ви часто хочете, щоб певні подібні структури були горизонтально вирівняні, наприклад a[i][j] = 1a[m][n] = 2.
Wrzlprmft

@Wrzlprmft дякую за зміни. І так, не так багато хороших шрифтів, оптимізованих для коду та математики (з Verdana нормально). Дійсно, у Times є невеликий період, двокрапка та деякі інші проблеми, але я використовую це до кінця - «користь переважає витрати»
Михайло V

-5

У HTML є набір тегів <code> ... </code>, який повідомляє читачеві / перекладачу ставитися до вмісту абсолютно буквально. також <pre> ... </pre> робить те саме. Як людина, якій часто доводилося вводити формули, рівняння та код для публікації, я також виступаю за використання IMAGES для цього ... зробити проблемний елемент у форматі .gif або .jpg або .png.

Ще один фактор полягає в тому, що код традиційно надається в монопросторі кур’єра чи іншому односхилому шрифті, оскільки він семафорує або телеграфує читачеві, що це не текст тексту. Я підписуюся на цей вибір стилю, я думаю, що це має багато сенсу.

У більшості "застарілих" систем набору тексту математичні рівняння досить високої складності були вибагливими за трудомісткі ... і загрожують помилками.


Зрозуміло, зображення не вирізати 'не можна вставити!
dwoz

3
Я не розумію, як це відповідає на запитання, яке взагалі задають
Зах Сосьє,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.