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

12

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

В семействе языков C много слов с «очевидным» произношением. Некоторые из них просто английские слова: for, break, case, defaultи т.д. Некоторые аббревиатуры, как int, однозначны. И тогда есть char.

Я всегда говорю это (и слышу это в своей голове), как первый слог «уголь». Мне было неприятно, когда я впервые говорил о коде с кем-то, кто произносил его как «автомобиль», что на самом деле имеет больше смысла, потому что charна самом деле это аббревиатура слова «характер», поэтому ясно, что его следует произносить одинаково. Но даже зная об этом, уголь как уголь кажется мне более правильным.

И тогда есть заявления, как foo = bar ? *(++baz) : zardoz.

Кто-нибудь выпускал документ, диктующий правильный (по их мнению) способ прочитать код вслух? Либо для конкретного языка или, может быть, код в целом?

benzado
источник
9
Чтение Perl вслух ... <о боли>
Ладья
4
Просто для любопытства, почему вы читаете код вслух? Я думаю, что никогда не делал этого
Vitor Py
1
Это также было бы полезно для диктовки программ во время поездок на работу. К счастью, будучи программой Delphi, я мог бы диктовать только с чрезвычайной элегантностью.
Питер Тернер
2
@Peter: Просто из любопытства, как вы произносите :=?
Мейсон Уилер
2
@ Мейсон К счастью, Колон
Питер Тернер

Ответы:

15

Быстрый комбинезон: прочитайте эту замечательную статью в Coding Horror

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

«Если bar истинно, увеличьте указатель 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".

Если вы скажете «hash bang bin bash» или «shebang bash», почти каждый будет знать, что означает «#! / Bin / bash». Если они этого не сделают, они скажут: «А?», И вы уйдете на ступеньку внизу «В верхней части файла: знак фунта, восклицательный знак, косая черта, корзина, косая черта, удар, новая строка». Если они по-прежнему не получают его, вы еще раз понижаете его: «Видите эту клавиатуру перед собой? Видите клавишу« 3 »? Эта метка вверху, когда вы нажимаете клавишу shift, является знаком фунта».

Нижняя линия:

  • не переживайте об этом слишком сильно, вы ошибетесь, все с этим справятся
  • это слишком конкретно для того, что вы делаете
  • всегда носите полотенце
  • Прочитайте статью в Coding Horror
unpythonic
источник
Я согласен. Я почти никогда не читаю код «слово в слово», я просто объясняю, что он делает.
1
Ваша цель состоит в том, чтобы объяснить, что происходит, или позволить им скопировать это дословно?
Работа
1
@Job - Если вы на самом деле читаете код, а не просто объясняете модули, классы, блоки, подпрограммы и т. Д., То вам нужна определенная степень конкретности. Но я бы никогда не попытался напечатать это своим языком. Подумайте, как трудно сказать кому-то адрес электронной почты или номер телефона вслух. Если это действительно сводится к тому, чтобы излагать их по буквам, то это полностью зависит от вашей аудитории. Если тильда должна называться «волнистой», пусть будет так.
unpythonic
Марк, я согласен с тем, что вы написали (имеется в виду, что зачастую он выше буквальной точности), но на самом деле это не решает мой вопрос, который на самом деле касается процесса согласования таких вопросов, как то, что называть «а» #или «а» !. Вы даже не говорите, почему обсуждаете код по телефону. Поскольку у вас есть наибольшее количество голосов, не могли бы вы конкретизировать свой ответ еще?
Бензадо
Я принял ваш ответ, поскольку помимо того, что он потратил время на его обновление, вы связались с блогом Джеффа Этвуда, который, в свою очередь, ссылается на запись для «ASCII» в «Словаре нового хакера», что довольно много Я искал. Благодарность!
Бензадо
3

Я никогда не сталкивался с какими-либо стандартами вслух говорящего на языке синтаксиса. Я натолкнулся на небольшие фрагменты, где кто-то выразил свое личное предпочтение, например, ссылаясь на «#! / Bin / sh» как «Слэш-слэш бина хеш-бэнг», а не как «Восклицательный знак слеш-бин БИХ слеш-слэш» «последний может предположить, что слушатель менее знаком с конструкцией.

Существует также большое несоответствие между количеством языков, доступных для чтения вслух. Возьмем, к примеру, различия между Python, который легче говорить вслух, чем, скажем, Perl, который требует, чтобы вы либо произвели много знаков препинания, либо перевели с «$ var [20]» на «двадцатый элемент массива var».

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

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

Когда я пытаюсь заставить кого-то набрать точную строку кода C в редакторе (например, я смотрю через плечо младшего программиста и вижу, как исправить строку их кода), я часто заканчиваю тем, что говорю код в ключевых словах и символах, таких как «if space open-paren null double-equals p close-paren ...» Тот же самый обмен с более старшим разработчиком может начаться больше как «вам нужно проверить, что p здесь null ... "

Джон Гейнс младший
источник
1

Разговор о коде - один из тех случаев, когда псевдокод становится чрезвычайно удобным.

Если кто-то начнет давать мне код от персонажа, то я просто скажу, чтобы он отправил мне его по электронной почте, и я сообщу им, что я думаю.


источник
0

Короткий ответ

Ближе всего к стандартному руководству по произношению представляется запись "ASCII" в словаре хакера (он же The Jargon File ). Он содержит таблицу, основанную на «редакции 2.3 Руководства по произношению USCET ASCII», которую больше нельзя легко найти в Интернете. В мае-июне 1991 года существует соответствующая дискуссионная ветка « Назовите этого персонажа! » comp.misc, В которой Маартен Литмат считает автором оригинального документа. В ветке отмечается, что «более умные» имена, такие как «Дональд Дак» для «&», были опущены в новом документе.

benzado
источник