Standard per la lettura ad alta voce del codice?


12

Qualcuno ha definito uno standard per la lettura ad alta voce del codice, per qualsiasi lingua? Immagino che questo sia importante per software come gli screen reader per i non vedenti. Questo genere di cose emerge anche quando si discute del codice con qualcuno, lo si esamina in un gruppo o si insegna a una classe.

Nella famiglia di lingue C, ci sono molte parole con pronunce "ovvie". Alcuni sono semplicemente parole inglesi: for, break, case, default, ecc Alcuni abbreviazioni, come int, sono inequivocabili. E poi c'è char.

Tendo sempre a dirlo (e sentirlo nella mia testa) come la prima sillaba di "carbone". La prima volta che parlavo di codice con qualcuno che lo pronunciava come "macchina" mi dava fastidio, il che in realtà ha più senso perché in charrealtà è un'abbreviazione della parola "carattere", quindi chiaramente dovrebbe essere pronunciato lo stesso. Ma pur sapendo che, carbone-come-in-carbone mi sembra più giusto.

E poi ci sono dichiarazioni come foo = bar ? *(++baz) : zardoz.

Qualcuno ha prodotto un documento che detta il modo corretto (secondo loro) come leggere ad alta voce il codice? O per una lingua specifica o forse un codice in generale?


9
Leggendo Perl ad alta voce ... <oh the pain>
Rook

4
Solo per curiosità, perché leggi ad alta voce il codice? Penso di non averlo mai fatto
Vitor Py il

1
Ciò sarebbe utile anche per dettare programmi durante il tragitto giornaliero. Fortunatamente, essendo un programma Delphi, detterei solo con estrema eleganza.
Peter Turner,

2
@Peter: Solo per curiosità, come si pronuncia :=?
Mason Wheeler,

2
@Mason Fortunatamente, Colon è
Peter Turner,

Risposte:


15

Tuta veloce: leggi questo fantastico articolo su Coding Horror

Ogni volta che sto discutendo il codice al telefono, non l'ho mai letto alla lettera. Devi "compilarlo" in umano, e se c'è ancora confusione all'altra estremità della linea, puoi spostarti verso una lettura più letterale. Ad esempio, avrei letto il tuo esempio come

"Se la barra è vera, incrementa il puntatore baz e assegna il valore a quell'indirizzo su foo. Altrimenti imposta foo su zardoz."

Sono un telelavoratore a tempo pieno dalla metà degli anni '90, quindi praticamente tutte le mie interazioni con i miei colleghi sono state al telefono o altri mezzi indiretti. Molto spesso condividiamo una sessione di schermo (terminale) o VNC (X). Oltre al normale cameratismo, passiamo tutto il giorno a parlare di codice, design, pianificazione, ecc.

Quando parliamo di codice, usiamo un gergo che è profondamente legato al tipo di progetto in fase di elaborazione. Una delle (molte) ragioni per cui un nuovo membro del gruppo impiega così tanto tempo a diventare pienamente funzionale è perché stanno essenzialmente imparando una nuova lingua ogni volta che si uniscono a un nuovo dipartimento / azienda.

Come ho detto sopra, e come altri hanno già detto, proviamo a parlare al livello più alto appropriato per qualsiasi discussione. Ma a volte, devi solo dire a qualcuno: "Digita questo"

Come si dice? Bene, potremmo solo dare un elenco come ...

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

Questo è il modo in cui "noi" diciamo questi personaggi. Per avere un'idea dell'intera gamma di dire "#" dai un'occhiata alla pagina wiki per #

Quindi c'è troppa variabilità. Deve essere specifico per la lingua in cui stai codificando (proprio come sto scrivendo questo in inglese per la nostra comunicazione umana).

Senza il contesto del linguaggio dovresti costantemente tornare al carattere mediante l'ortografia dei personaggi. Quindi la maggior parte delle persone che conosco ricorrono a qualunque cosa lo standard linguistico chiami cose.

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)

Ognuno di questi sarebbe implicito semplicemente dicendo "Imposta X su ..." nel contesto appropriato. Non farmi nemmeno iniziare su quale codice viene letto come "la stringa X è uguale alla stringa Y".

Se dici "hash bang bin bash" o "shebang bash", quasi tutti sapranno che significa "#! / Bin / bash". In caso contrario, diranno "Eh?", E lo abbasserai di un gradino "Nella parte superiore del file: cancelletto, punto esclamativo, barra, cestino, barra, bash, newline". Se ancora non lo capiscono, lo abbassi ancora una volta: "Vedi quella tastiera di fronte a te? Vedi il tasto" 3 "? Quel segno in alto quando premi maiusc è un cancelletto, quello."

Linea di fondo:

  • non ti preoccupare troppo, ti sbaglierai, tutti lo supereranno
  • è troppo specifico per quello che fai
  • porta sempre un asciugamano
  • leggi l'articolo su Coding Horror

Sono d'accordo. Non leggo quasi mai il codice "parola per parola", spiego semplicemente cosa sta facendo.

1
Il tuo obiettivo sarebbe quello di spiegare cosa sta succedendo o di lasciarlo copiare alla lettera?
Giobbe

1
@Job - Se stai effettivamente leggendo il codice e non spiegando semplicemente moduli, classi, blocchi, sottotitoli, ecc., Allora hai bisogno di una certa specificità. Ma non proverei mai a scriverlo con la mia lingua. Pensa quanto sia difficile dire a qualcuno un indirizzo e-mail o un numero di telefono ad alta voce. Se davvero si tratta di spiegarlo carattere per carattere, allora dipende completamente dal tuo pubblico. Se la tilde deve essere indicata come una "risatina", così sia.
unpythonic il

Mark, sono d'accordo con quello che hai scritto (che significa spesso supera l'accuratezza letterale), ma in realtà non affronta la mia domanda, che riguarda davvero il processo di accordo su questioni come cosa chiamare a #o a !. Non si dice nemmeno perché si discute di codice al telefono. Dato che hai ottenuto il maggior numero di voti, potresti approfondire un po 'di più la tua risposta?
benzado,

Ho accettato la tua risposta, poiché oltre a prenderti il ​​tempo per aggiornarlo, ti sei collegato al blog di Jeff Atwood, che a sua volta si collega alla voce "ASCII" nel Dizionario del nuovo hacker, che è praticamente il genere di cose Stavo cercando. Grazie!
benzado,

3

Non ho mai incontrato standard per parlare la sintassi della lingua ad alta voce. Mi sono imbattuto in piccoli frammenti in cui qualcuno ha espresso le proprie preferenze personali, ad esempio riferendosi a "#! / Bin / sh" come "Hash-bang slash bin slash SH" anziché "libbra esclamazione forward-slash BIN forward-slash SH "il successivo potrebbe supporre che l'ascoltatore abbia meno familiarità con il costrutto.

C'è anche una grande disparità nella quantità in cui le diverse lingue sono leggibili ad alta voce. Prendiamo ad esempio le differenze tra Python che tende ad essere più facile parlare ad alta voce rispetto a dire Perl che richiede di dire molta punteggiatura o di tradurre da "$ var [20]" a "il ventesimo elemento di array var".

La mia esperienza personale è che è molto contestuale in base al motivo per cui ho bisogno di leggere ad alta voce il codice, il livello di conoscenza dell'ascoltatore e la lingua in questione.

Nel caso delle revisioni del codice, è più probabile che spieghi un'istruzione piuttosto che provare a leggerla ad alta voce, poiché di solito è più importante ottenere il significato o il processo di pensiero piuttosto che leggere il codice non elaborato per gli ascoltatori.

Quando sto cercando di convincere qualcuno a digitare una riga esatta di codice C in un editor (ad esempio sto guardando da una spalla del programmatore junior e vedo come correggere una riga del loro codice), finisco spesso per pronunciare il codice in parole chiave e simboli come "se lo spazio open-paren null null equivale p close-paren ..." Lo stesso interscambio con uno sviluppatore più senior potrebbe iniziare più come "devi controllare che p sia null qui ... "


1

Parlare di codice è una di quelle volte in cui lo pseudo-codice diventa estremamente utile.

Se qualcuno inizia a darmi il codice per il personaggio, allora gli dirò semplicemente di inviarmelo via email e gli farò sapere cosa ne penso.


0

Risposta breve

La cosa più vicina a una guida alla pronuncia standard sembra essere la voce per "ASCII" nel Dizionario di The Hacker (aka The Jargon File ). Contiene una tabella derivata dalla "revisione 2.3 della guida alla pronuncia ASCII di Usenet" che non è più facilmente individuabile online. C'è un argomento di discussione pertinente, " Dai un nome a quel personaggio! " comp.miscNel maggio-giugno del 1991, che attribuisce a Maarten Litmath il mantenimento del documento originale. Il thread osserva che i nomi "più intelligenti" come "Paperino" per "&" sono stati omessi dal nuovo documento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.