Стандарти читання коду вголос?


12

Хтось визначив стандарт для читання коду вголос для будь-якої мови? Я думаю, що це важливо для програмного забезпечення, як читачі екрану, для людей із вадами зору. Така річ також з’являється, коли ви обговорюєте код з ким-небудь, переглядаєте його в групі або викладаєте клас.

У сімействі мов С є багато слів з "очевидною" вимовою. Деякі з них просто англійські слова: for, break, case, defaultі т.д. Деякі абревіатури, як int, однозначні. А тут є char.

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

А далі є заяви на кшталт foo = bar ? *(++baz) : zardoz.

Хто-небудь створив документ, який диктує правильний спосіб (на їхню думку), як читати код вголос? Або для певної мови, або, можливо, код взагалі?


9
Читання Perl вголос ... <ох біль>
Rook

4
Для цікавості, чому ви читаєте код вголос? Я думаю, я ніколи цього не робив
Vitor Py

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

2
@Peter: Лише з цікавості, як вимовляється :=?
Мейсон Уілер

Відповіді:


15

Швидкий комбінезон: прочитайте цю чудову статтю у програмі Кодування жахів

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

"Якщо смужка вірна, збільшуйте вказівник baz і призначте значення цієї адреси foo. Інакше встановіть foo на zardoz."

Я працював штатним телекомунікатором з середини 90-х, тому практично всі мої взаємодії з колегами проходили по телефону або іншим непрямим засобом. Дуже часто ми ділимося або екраном (терміналом), або сеансом VNC (X). Окрім звичайної товариства, ми проводимо цілий день, розмовляючи про код, дизайн, планування тощо.

Коли ми говоримо про код, ми використовуємо жаргон, який глибоко пов'язаний з типом проекту, який працює. Однією з (багатьох) причин, щоб новий член групи став так довго функціонувати, - це те, що вони, по суті, вивчають нову мову кожного разу, коли вони приєднуються до нового відділу / компанії.

Як я вже говорив вище, і, як уже говорили інші, ми намагаємось говорити на такому високому рівні, як годиться для будь-якої дискусії. Але іноді вам доводиться просто комусь сказати: "Наберіть це"

Як ти це кажеш? Ну, ми могли б просто перерахувати, як ...

~  tilde
`  backtick
'  single quote
"  quote (or double quote)
/  slash, \ is backslash
#  pound or hash
!  bang (or exclamation mark)
@  at
$  dollar
%  percent or mod
^  caret or xor
&  and or bitwise and
&& and or logical and
|  pipe or 'or' or bitwise or
|| 'or'
*  value of, times, glob, multiplied by
() parens, open paren, close paren
{} braces, curlies, open stash, close stash
[] brackets, square brackets, at & sub (for subscript) (for C-ish arrays)
...

Ось так ми говоримо цих персонажів "ми". Щоб отримати уявлення про весь діапазон висловів "#", перегляньте сторінку вікі для #

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

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

SELECT COUNT(*) INTO x FROM ...   (SQL)
X IS Y + 1                        (Prolog)
(setq x 40)                       (Emacs lisp)
/def x 40                         (PostScript)
x = 40                            (C)
$x = 40                           (Perl)

Кожен із них мав на увазі просто кажучи "Встановити X на ..." у відповідному контексті. Чи не навіть , щоб я почав на те , що код читається як «є рядок X дорівнює рядку Y».

Якщо ви скажете "хеш-банг-бен-баш" або "шебанг-баш", майже всі будуть знати, що означає "#! / Bin / bash". Якщо вони цього не роблять, вони скажуть "А?", І ви відступите на ній "У верхній частині файлу: знак фунта, знак оклику, коса риса, біш, коса риса, баш, нова лінія". Якщо вони все ще не отримують її, ви знову відмовляєтесь від неї: "Бачите цю клавіатуру перед собою? Дивіться клавішу" 3 "? Позначка вгорі, коли ви натискаєте shift, - це знак фунта."

Нижня лінія:

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

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

1
Ваша мета полягає в тому, щоб пояснити, що відбувається, або дозволити їх копіювати це дослівно?
Робота

1
@Job - Якщо ви насправді читаєте код, а не просто пояснюєте модулі, класи, блоки, підрозділи тощо, вам потрібна певна кількість специфіки. Але я б ніколи не намагався набрати його мовою. Подумайте, як важко сказати комусь електронну адресу чи номер телефону вголос. Якщо це дійсно зводиться до того, щоб окреслити його персонажем за персонажем, то це повністю залежить від вашої аудиторії. Якщо тильду треба називати "викруткою", то так і має бути.
непітонічний

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

Я прийняв вашу відповідь, оскільки ви, крім того, що витратили час на її оновлення, ви зв’язали з блогом Джеффа Етвуда, який, у свою чергу, посилається на запис для "ASCII" у словнику "Нового хакера", що в значній мірі подібне до речі Я шукав. Дякую!
бензадо

3

Я ніколи не стикався з будь-якими стандартами для синтаксису розмовної мови вголос. Я натрапив на маленькі фрагменти, де хтось висловив власні особисті переваги, наприклад, посилаючись на "#! / Bin / sh" як на "Hash-bang slash blash slash SH", на відміну від "фунта вигуку вперед-косу рису BIN вперед-косу рису SH" "пізніші можуть припустити, що слухач менше знайомий з конструкцією.

Існує також велика невідповідність у кількості, до якої різні мови читаються вголос. Візьмемо для прикладу відмінності між Python, який, як правило, простіше говорити вголос проти скажіть Perl, який вимагає або сказати багато пунктуації, або перекласти з "$ var [20]" на "двадцятий елемент масиву var".

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

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

Коли я намагаюсь змусити когось ввести точний рядок коду С у редактор (наприклад, я переглядаю плече молодого програміста і бачу, як виправити рядок їх коду), я часто закінчую розмову коду у ключових словах та символах, таких як "якщо пробіл з відкритим паролем null подвійно дорівнює p close-paren ..." Цей самий взаємозамін з старшим розробником може починатися більше на кшталт "вам потрібно перевірити, чи p тут нульовим ... "


1

Якщо говорити про код, це один із тих часів, коли псевдо-код стає надзвичайно зручним.

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


0

Коротка відповідь

Найбільш близьким до стандартного посібника з вимовою є запис "ASCII" у словнику Хакера (він же "Файл жаргону" ). Він містить таблицю, отриману з "версії 2.3 Посібника з вимови Usenet ASCII", яку вже не легко знайти в Інтернеті. У травні-червні 1991 р. Є відповідна тема дискусії « Назвіть цього персонажа! » comp.misc, Яка приписує Maarten Litmath як підтримку оригіналу документа. Нитка зазначає, що "розумніші" назви, такі як "Дональд Дак" для "&", були вилучені з нового документа.

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