¿Estándares para leer el código en voz alta?


12

¿Alguien ha definido un estándar para leer el código en voz alta, para cualquier idioma? Me imagino que esto es importante para software como lectores de pantalla para personas con discapacidad visual. Este tipo de cosas también surgen cuando estás discutiendo el código con alguien, revisándolo en un grupo o enseñando una clase.

En la familia de lenguajes C, hay muchas palabras con pronunciaciones "obvias". Algunos son simplemente palabras en inglés: for, break, case, default, etc Algunas abreviaturas, como int, no son ambiguas. Y luego está char.

Siempre tiendo a decirlo (y escucharlo en mi cabeza) como la primera sílaba del "carbón". Fue desagradable para mí la primera vez que estaba hablando del código con alguien que lo pronunció como "automóvil", lo que en realidad tiene más sentido porque chares realmente una abreviatura de la palabra "personaje", por lo que claramente debería pronunciarse igual. Pero incluso sabiendo eso, char-as-in-coal me parece más correcto.

Y luego hay declaraciones como foo = bar ? *(++baz) : zardoz.

¿Alguien ha producido un documento que dicta la forma correcta (en su opinión) de cómo leer el código en voz alta? ¿Ya sea para un idioma específico o tal vez código en general?


99
Leyendo a Perl en voz alta ... <oh, el dolor>
Rook

44
Solo por curiosidad, ¿por qué lees el código en voz alta? Creo que nunca lo hice
Vitor Py

1
Esto también sería útil para dictar programas durante el viaje. Afortunadamente, al ser un programa de Delphi, solo dictaría con extrema elegancia.
Peter Turner

2
@ Peter: Solo por curiosidad, ¿cómo se pronuncia :=?
Mason Wheeler

2
@Mason Afortunadamente, Colon es igual
Peter Turner

Respuestas:


15

Overol rápido: lea este excelente artículo en Coding Horror

Cada vez que estoy discutiendo el código por teléfono, nunca lo leo literalmente. Tienes que "compilarlo" para humanos, y si todavía hay confusión en el otro extremo de la línea, puedes avanzar hacia una lectura más literal. Por ejemplo, leería tu ejemplo como

"Si la barra es verdadera, incremente el puntero baz y asigne el valor en esa dirección a foo. De lo contrario, configure foo en zardoz".

He trabajado a tiempo completo desde mediados de los 90, por lo que prácticamente todas mis interacciones con mis colegas han sido por teléfono u otros medios indirectos. Muy a menudo compartimos una sesión de pantalla (terminal) o VNC (X). Además de la camaradería habitual, pasamos todo el día hablando de código, diseño, planificación, etc.

Cuando hablamos de código, usamos jerga que está profundamente vinculada al tipo de proyecto que se está trabajando. Una de las (muchas) razones por las que un nuevo miembro del grupo tarda tanto en ser completamente funcional es porque esencialmente están aprendiendo un nuevo idioma cada vez que se unen a un nuevo departamento / empresa.

Como dije anteriormente, y como han dicho otros, tratamos de hablar al nivel más alto que sea apropiado para cualquier discusión. Pero a veces, realmente tienes que decirle a alguien: "Escribe esto"

¿Como lo dices? Bueno, podríamos dar una enumeración 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)
...

Así es como "nosotros" decimos estos personajes. Para tener una idea del rango completo de decir "#", mire la página wiki para #

Entonces hay demasiada variabilidad. Tiene que ser específico para el idioma en el que está codificando (al igual que estoy escribiendo esto en inglés para nuestra comunicación humana).

Sin el contexto del lenguaje, tendrías que volver constantemente al carácter por la ortografía de los caracteres. Así que la mayoría de las personas que conozco recurren a lo que el estándar de lenguaje llama cosas.

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 uno de ellos estaría implícito simplemente diciendo "Establecer X para ..." dentro del contexto apropiado. Ni siquiera me hagas comenzar con el código que se lee como "es la cadena X igual a la cadena Y".

Si dice "hash bang bin bash" o "shebang bash", casi todos sabrán que significa "#! / Bin / bash". Si no lo hacen, dirán "¿Eh?", Y lo bajarán un escalón "En la parte superior del archivo: signo de libra, signo de exclamación, barra oblicua, bin, barra oblicua, bash, nueva línea". Si todavía no lo entienden, lo baja una vez más: "¿Ve ese teclado frente a usted? ¿Ve la tecla" 3 "? Esa marca en la parte superior cuando presiona shift es un signo de libra, eso".

Línea de fondo:

  • no te preocupes demasiado, te equivocarás, todos lo superarán
  • es demasiado específico para exactamente lo que haces
  • siempre lleve una toalla
  • lea el artículo en Coding Horror

Estoy de acuerdo. Casi nunca leo el código "palabra por palabra", solo explico lo que está haciendo.

1
¿Su objetivo sería explicar lo que está sucediendo o dejar que lo copien literalmente?
Trabajo

1
@ Job: si en realidad estás leyendo código, y no solo explicando módulos, clases, bloques, subs, etc., entonces necesitas una cierta cantidad de especificidad. Pero nunca trataría de escribirlo con la lengua. Solo piense lo difícil que es decirle a alguien una dirección de correo electrónico o un número de teléfono en voz alta. Si realmente se reduce a deletrear personaje por personaje, entonces depende completamente de tu audiencia. Si la tilde tiene que ser referida como "ondulada", entonces que así sea.
antipático el

Mark, estoy de acuerdo con lo que escribiste (lo que significa a menudo triunfa sobre la precisión literal), pero en realidad no aborda mi pregunta, que realmente trata sobre el proceso de acordar asuntos como cómo llamar a #o a !. Ni siquiera dice por qué discute el código por teléfono. Ya que tienes la mayoría de los votos, ¿podrías dar más respuesta a tu respuesta?
benzado

He aceptado su respuesta, ya que además de tomarse el tiempo para actualizarla, se vinculó al blog de Jeff Atwood, que a su vez enlaza con la entrada para "ASCII" en The New Hacker's Dictionary, que es más o menos el tipo de cosas Estaba buscando. ¡Gracias!
benzado

3

Nunca me he encontrado con ningún estándar para hablar en sintaxis de idiomas en voz alta. Me he encontrado con pequeños fragmentos en los que alguien ha expresado su propia preferencia personal, por ejemplo refiriéndose a "#! / Bin / sh" como "Hash-bang slash bin slash SH" en lugar de "libra exclamación forward-slash BIN forward-slash SH "el último podría suponer que el oyente tiene menos familiaridad con la construcción.

También hay una gran disparidad en la cantidad de idiomas diferentes que se pueden leer en voz alta. Tomemos, por ejemplo, las diferencias entre Python, que tiende a ser más fácil de hablar en voz alta que decir Perl, que requiere que digas muchos signos de puntuación o que traduzcas de "$ var [20]" al "vigésimo elemento de array var".

Mi propia experiencia es que es muy contextual según la razón por la que necesito leer el código en voz alta, el nivel de conocimiento del oyente y el idioma en cuestión.

En el caso de las revisiones de código, es más probable que explique una declaración que intente leerla en voz alta, ya que generalmente es más importante transmitir el significado o el proceso de pensamiento que simplemente leer el código sin formato al o los oyentes.

Cuando intento que alguien escriba una línea exacta de código C en un editor (por ejemplo, estoy mirando por encima del hombro de un programador junior y veo cómo arreglar una línea de su código), a menudo termino hablando código en palabras clave y símbolos como "si el espacio open-paren null es igual a p close-paren ..." Ese mismo intercambio con un desarrollador más senior podría comenzar más como "necesita verificar que p sea nulo aquí ... "


1

Hablar de código es uno de esos momentos en los que el pseudocódigo se vuelve extremadamente útil.

Si alguien comienza a darme el código del personaje, entonces les diré que me lo envíen por correo electrónico y les haré saber lo que pienso.


0

Respuesta corta

Lo más parecido a una guía de pronunciación estándar parece ser la entrada para "ASCII" en The Hacker's Dictionary (también conocido como The Jargon File ). Contiene una tabla derivada de la "revisión 2.3 de la guía de pronunciación ASCII de Usenet" que ya no se puede descubrir fácilmente en línea. Hay un hilo de discusión relevante, "¡ Nombre ese personaje! " comp.miscEn mayo-junio de 1991, que acredita a Maarten Litmath por mantener el documento original. El hilo señala que los nombres "más inteligentes" como "Pato Donald" para "&" se omitieron del documento más reciente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.