Padrões para leitura de código em voz alta?

12

Alguém definiu um padrão para a leitura de código em voz alta, em qualquer idioma? Imagino que isso seja importante para softwares como leitores de tela para deficientes visuais. Esse tipo de coisa também surge quando você está discutindo código com alguém, revendo-o em um grupo ou ensinando uma classe.

Na família de idiomas C, há muitas palavras com pronúncias "óbvias". Alguns são simplesmente palavras em inglês: for, break, case, default, etc. Algumas abreviaturas, como int, são inequívocos. E depois tem char.

Eu sempre tendem a dizer (e ouvir na minha cabeça) como a primeira sílaba do "carvão". Foi chocante para mim a primeira vez que conversei sobre código com alguém que o pronunciou como "carro", o que realmente faz mais sentido, porque charé realmente uma abreviação da palavra "caractere"; portanto, claramente deve ser pronunciado da mesma forma. Mas mesmo sabendo disso, o carvão como carvão parece mais certo para mim.

E depois há declarações como foo = bar ? *(++baz) : zardoz.

Alguém já produziu um documento ditando a maneira correta (em sua opinião) de ler o código em voz alta? Ou para um idioma específico ou talvez código em geral?

benzado
fonte
9
Reading Perl em voz alta ... <oh a dor>
Rook
4
Só por curiosidade, por que você lê código em voz alta? Eu acho que nunca fiz isso
Vitor Py
1
Isso também seria útil para ditar programas durante o trajeto. Felizmente, sendo um programa Delphi, eu ditaria apenas com extrema elegância.
Peter Turner
2
@ Peter: Por curiosidade, como se pronuncia :=?
Mason Wheeler
2
@Mason Felizmente, Colon Equals #
Peter Turner

Respostas:

15

Macacão rápido: leia este ótimo artigo em Coding Horror

Sempre que estou discutindo código por telefone, nunca o leio literalmente. Você precisa "compilá-lo" para humanos, e se ainda houver confusão do outro lado da linha, você poderá avançar para uma leitura mais literal. Por exemplo, eu leria seu exemplo como

"Se bar for verdadeira, aumente o ponteiro baz e atribua o valor nesse endereço a foo. Caso contrário, defina foo como zardoz."

Sou teletrabalhador em tempo integral desde meados dos anos 90, de modo que praticamente todas as minhas interações com meus colegas acontecem por telefone ou por outros meios indiretos. Muitas vezes, compartilhamos uma sessão de tela (terminal) ou VNC (X). Além da camaradagem regular, passamos o dia todo conversando sobre código, design, planejamento etc.

Quando falamos de código, usamos jargões profundamente ligados ao tipo de projeto que está sendo trabalhado. Uma das (muitas) razões pelas quais um novo membro do grupo leva tanto tempo para se tornar totalmente funcional é porque ele está essencialmente aprendendo um novo idioma toda vez que ingressa em um novo departamento / empresa.

Como eu disse acima, e como outros disseram, tentamos conversar em um nível tão alto quanto apropriado para qualquer discussão. Mas, às vezes, você realmente precisa apenas dizer a alguém: "Digite isso"

Como você diz isso? Bem, poderíamos apenas dar uma enumeração como ...

~  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)
...

É assim que "nós" dizemos esses caracteres. Para ter uma idéia de todo o intervalo de dizer "#", dê uma olhada na página wiki de #

Portanto, há muita variabilidade. Tem que ser específico para o idioma em que você está codificando (assim como estou digitando isso em inglês para nossa comunicação humana).

Sem o contexto da linguagem, você precisaria constantemente reverter para caractere por ortografia. Portanto, a maioria das pessoas que conheço recorre ao que o padrão de linguagem chama de coisas.

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)

Cada um deles estaria implícito apenas dizendo "Defina X como ..." dentro do contexto apropriado. Não até mesmo se me com o que o código é lido como "é String X igual a seqüência de Y".

Se você disser "hash bang bin bash" ou "shebang bash", quase todo mundo saberá que isso significa "#! / Bin / bash". Caso contrário, eles dirão "Huh?", E você descerá um ponto "No topo do arquivo: Libra, ponto de exclamação, barra, lixeira, barra, barra, nova linha". Se eles ainda não entenderem, você desce mais uma vez: "Veja o teclado à sua frente? Veja a tecla" 3 "? Essa marca no topo quando você pressiona shift é um sinal de libra, isso."

Bottom line:

  • não se preocupe muito, você estará errado, todo mundo vai superar
  • é muito específico exatamente para o que você faz
  • sempre leve uma toalha
  • leia o artigo em Coding Horror
antitônico
fonte
Concordo. Eu quase nunca leio o código "palavra por palavra", apenas explico o que está fazendo.
1
Seu objetivo seria explicar o que está acontecendo ou deixá-los copiá-lo literalmente?
Job
1
@ Job - Se você está realmente lendo código, e não apenas explicando módulos, classes, blocos, subs, etc, precisa de uma certa especificidade. Mas nunca tentaria digitar com a língua. Pense no quão difícil é dizer a alguém um endereço de e-mail ou número de telefone em voz alta. Se realmente se resume a caractere por caractere, isso depende completamente do seu público. Se o til tiver que ser chamado de "ondulado", que assim seja.
Unpythonic
Mark, eu concordo com o que você escreveu (o que geralmente supera a precisão literal), mas isso realmente não aborda minha pergunta, que é realmente sobre o processo de concordar com questões como o que chamar de a #ou a !. Você nem diz por que discute o código por telefone. Já que você obteve o maior número de votos, você poderia responder mais um pouco?
benzado
Aceitei sua resposta, já que, além de reservar um tempo para atualizá-la, você vinculou ao blog de Jeff Atwood, que por sua vez vincula a entrada "ASCII" no The New Hacker's Dictionary, que é praticamente o tipo de coisa Eu estava procurando. Obrigado!
benzado
3

Nunca encontrei nenhum padrão para falar a sintaxe da linguagem em voz alta. Encontrei pequenos trechos em que alguém expressou sua preferência pessoal, por exemplo, referindo-se a "#! / Bin / sh" como "barra Hash-bang barra SH" em oposição a "barra exclamação libra barra B-SH SH "o posterior pode assumir que o ouvinte tem menos familiaridade com a construção.

Há também uma grande disparidade na quantidade de idiomas diferentes que podem ser lidos em voz alta. Tomemos, por exemplo, as diferenças entre o Python, que tendem a ser mais fáceis de falar em voz alta do que dizer o Perl, que exige que você faça muita pontuação ou traduza de "$ var [20]" para "o vigésimo elemento do array var".

Minha própria experiência é que é muito contextual, com base no motivo pelo qual eu preciso ler o código em voz alta, no nível de conhecimento do ouvinte e no idioma em questão.

No caso de revisões de código, é mais provável que eu explique uma declaração do que tente lê-la em voz alta, pois geralmente é mais importante transmitir o significado ou o processo de pensamento do que apenas ler o código bruto para o (s) ouvinte (s).

Quando estou tentando convencer alguém a digitar uma linha exata do código C em um editor (por exemplo, estou olhando por cima do ombro de um programador júnior e ver como corrigir uma linha do código), muitas vezes acabo falando o código em palavras-chave e símbolos como "se o espaço aberto paren nulo for igual a p perto paren ..." Esse mesmo intercâmbio com um desenvolvedor mais sênior pode começar mais como "você precisa verificar se p é nulo aqui ... "

John Gaines Jr.
fonte
1

Falar sobre código é um daqueles momentos em que o pseudo-código se torna extremamente útil.

Se alguém começar a me dar o código pelo personagem, então eu direi a eles para enviá-lo por e-mail e informarei o que penso.


fonte
0

Resposta curta

A coisa mais próxima de um guia de pronúncia padrão parece ser a entrada para "ASCII" no The Hacker's Dictionary (também conhecido como The Jargon File ). Ele contém uma tabela derivada da "revisão 2.3 do guia de pronúncia da Usenet ASCII", que não é mais facilmente detectável online. Existe um tópico de discussão relevante, " Dê um nome a esse personagem! " comp.misc, Entre maio e junho de 1991, que credita a Maarten Litmath a manutenção do documento original. O tópico observa que nomes "mais inteligentes" como "Pato Donald" para "&" foram omitidos no documento mais recente.

benzado
fonte