Standards zum Vorlesen von Code?

12

Hat jemand einen Standard für das Vorlesen von Code für jede Sprache definiert? Ich stelle mir vor, dass dies für Software wie Screenreader für Sehbehinderte wichtig ist. Solche Dinge tauchen auch auf, wenn Sie mit jemandem über Code diskutieren, ihn in einer Gruppe überprüfen oder eine Klasse unterrichten.

In der C-Sprachfamilie gibt es viele Wörter mit "offensichtlichen" Aussprachen. Einige sind einfach englische Wörter: for, break, case, default, usw. Einige Abkürzungen, wie int, eindeutig sind. Und dann ist da noch was char.

Ich neige immer dazu, es zu sagen (und es in meinem Kopf zu hören) wie die erste Silbe von "Holzkohle". Es hat mich beunruhigt, als ich das erste Mal mit jemandem über Code gesprochen habe, der ihn wie "Auto" aussprach. Dies charist in Wirklichkeit sinnvoller, da es sich um eine Abkürzung für das Wort "Zeichen" handelt. Aber selbst wenn ich das weiß, fühlt sich Kohle für mich zutreffender an.

Und dann gibt es Aussagen wie foo = bar ? *(++baz) : zardoz.

Hat jemand ein Dokument verfasst, das (seiner Meinung nach) vorschreibt, wie man Code vorliest? Entweder für eine bestimmte Sprache oder für Code im Allgemeinen?

benzado
quelle
9
Perl vorlesen ... <oh the pain>
Rook
4
Warum liest du aus Neugier Code vor? Ich glaube, ich habe es nie getan
Vitor Py
1
Dies wäre auch nützlich, um Programme während des Pendelns zu diktieren. Glücklicherweise würde ich als Delphi-Programm nur mit äußerster Eleganz diktieren.
Peter Turner
2
@ Peter: Wie spricht man aus Neugier aus :=?
Mason Wheeler
2
@Mason Glücklicherweise Colon Equals
Peter Turner

Antworten:

15

Kurzer Overall: Lesen Sie diesen großartigen Artikel bei Coding Horror

Wenn ich telefonisch über Code spreche, lese ich ihn nie wörtlich. Sie müssen es für den Menschen "kompilieren", und wenn am anderen Ende der Zeile noch Verwirrung herrscht, können Sie zu einer wörtlicheren Lesart übergehen. Zum Beispiel würde ich Ihr Beispiel als lesen

"Wenn der Balken wahr ist, erhöhen Sie den Baz-Zeiger und weisen Sie den Wert an dieser Adresse foo zu. Andernfalls setzen Sie foo auf zardoz."

Ich bin seit Mitte der 90er Jahre ein Vollzeit-Telearbeiter. Praktisch alle meine Interaktionen mit meinen Kollegen erfolgten über das Telefon oder auf andere indirekte Weise. Sehr oft teilen wir uns entweder eine Bildschirmsitzung (Terminal) oder eine VNC-Sitzung (X). Neben der normalen Kameradschaft beschäftigen wir uns den ganzen Tag mit Code, Design, Planung usw.

Wenn wir über Code sprechen, verwenden wir eine Fachsprache, die eng mit der Art des Projekts verbunden ist, an dem gearbeitet wird. Einer der (vielen) Gründe, warum es so lange dauert, bis ein neues Gruppenmitglied voll funktionsfähig ist, ist, dass es bei jedem Eintritt in eine neue Abteilung / Firma im Wesentlichen eine neue Sprache lernt.

Wie ich bereits sagte, und wie andere bereits gesagt haben, versuchen wir, so hoch zu sprechen, wie es für eine Diskussion angemessen ist. Aber manchmal muss man wirklich nur zu jemandem sagen: "Tippe das"

Wie sagt man das Nun, wir könnten nur eine Aufzählung geben wie ...

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

So sagen "wir" diese Charaktere. Um einen Überblick über die gesamte Palette der "#" -Sprüche zu erhalten, besuchen Sie die Wiki-Seite für #

Es gibt also zu viel Variabilität. Es muss spezifisch für die Sprache sein, in der Sie programmieren (genau wie ich dies für unsere menschliche Kommunikation auf Englisch schreibe).

Ohne den sprachlichen Kontext müsste man immer wieder Zeichen für Zeichen neu buchstabieren. Die meisten Leute, die ich kenne, greifen auf das zurück, was der Sprachstandard sagt.

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)

Jedes von diesen würde impliziert werden, indem man einfach "Setze X auf ..." im richtigen Kontext sagt. Nicht einmal Sie mich welcher Code als " Zeichenfolge X gleich Zeichenfolge Y" gelesen wird.

Wenn Sie "hash bang bin bash" oder "shebang bash" sagen, weiß fast jeder, dass dies "#! / Bin / bash" bedeutet. Wenn sie es nicht tun, sagen sie "Huh?" Und Sie treten eine Stufe zurück. "Oben in der Datei: Nummernzeichen, Ausrufezeichen, Schrägstrich, Bin, Schrägstrich, Bash, Newline". Wenn sie es immer noch nicht bekommen, treten Sie es noch einmal zurück: "Sehen Sie diese Tastatur vor sich? Sehen Sie die" 3 "-Taste? Diese Markierung oben, wenn Sie die Umschalttaste drücken, ist ein Pfundzeichen, das."

Endeffekt:

  • Mach dir keine allzu großen Sorgen, du wirst dich irren, alle werden darüber hinwegkommen
  • es ist zu spezifisch für genau das, was du tust
  • Tragen Sie immer ein Handtuch
  • Lies den Artikel bei Coding Horror
unpythonisch
quelle
Genau. Ich lese fast nie den Code "Wort für Wort" Ich erkläre nur, was es tut.
1
Wäre es Ihr Ziel, zu erklären, was los ist, oder es wörtlich abschreiben zu lassen?
Job
1
@Job - Wenn Sie tatsächlich Code lesen und nicht nur Module, Klassen, Blöcke, Subs usw. erläutern, benötigen Sie eine gewisse Spezifität. Aber ich würde niemals versuchen, es mit meiner Zunge zu tippen. Denken Sie nur daran, wie schwierig es ist, jemandem eine E-Mail-Adresse oder eine Telefonnummer mitzuteilen. Wenn es wirklich darauf ankommt, es Zeichen für Zeichen zu formulieren, dann hängt es vollständig von Ihrem Publikum ab. Wenn die Tilde als "schnörkelig" bezeichnet werden muss, dann soll es so sein.
unpythonic
Mark, ich stimme mit dem überein, was Sie geschrieben haben (was oft die wörtliche Genauigkeit übertrifft), aber es geht nicht wirklich um meine Frage, sondern um den Prozess der Einigung über Dinge wie das, was man als a #oder a bezeichnen soll !. Sie sagen nicht einmal, warum Sie Code am Telefon besprechen. Könnten Sie, da Sie die meisten Stimmen haben, Ihre Antwort noch etwas präzisieren?
Benzado
Ich habe Ihre Antwort akzeptiert, da Sie sich nicht nur die Zeit genommen haben, sie zu aktualisieren, sondern auch einen Link zu Jeff Atwoods Blog erstellt haben, der wiederum auf den Eintrag für "ASCII" im Wörterbuch des neuen Hackers verweist Ich suchte. Vielen Dank!
Benzado
3

Ich bin noch nie auf Standards gestoßen, bei denen die Sprachsyntax laut ausgesprochen wurde. Ich bin auf kleine Schnipsel gestoßen, in denen jemand seine persönliche Präferenz ausgedrückt hat, indem er sich beispielsweise auf "#! / Bin / sh" als "Hash-Bang-Slash-Bin-Slash-SH" und nicht auf "Pfund-Ausrufezeichen-Forward-Slash-BIN-Forward-Slash-SH" bezieht "das letztere könnte annehmen, dass der Zuhörer mit dem Konstrukt weniger vertraut ist.

Es gibt auch große Unterschiede in der Anzahl der vorlesbaren Sprachen. Nehmen wir zum Beispiel die Unterschiede zwischen Python, bei dem es einfacher ist, laut zu sprechen, und Perl, bei dem Sie entweder viel Interpunktion sagen oder von "$ var [20]" in "das zwanzigste Element von Array var" übersetzen müssen.

Meine eigene Erfahrung ist, dass es sehr kontextabhängig ist, da ich den Code laut vorlesen muss, den Kenntnisstand des Zuhörers und die betreffende Sprache.

Bei Code-Reviews erkläre ich eher eine Aussage als versuche, sie laut vorzulesen, da es in der Regel wichtiger ist, die Bedeutung oder den Denkprozess zu vermitteln, als dem / den Hörer (n) nur den Rohcode vorzulesen.

Wenn ich versuche, jemanden dazu zu bringen, eine genaue Zeile C-Code in einen Editor einzugeben (zum Beispiel schaue ich einem Junior-Programmierer über die Schulter und sehe, wie man eine Codezeile repariert), spreche ich häufig Code aus in Schlüsselwörtern und Symbolen wie "Wenn der Leerraum open-paren null ist, ist das Doppelte gleich p close-paren ...", könnte der gleiche Austausch mit einem erfahreneren Entwickler eher so beginnen wie "Sie müssen hier überprüfen, ob p null ist ... "

John Gaines Jr.
quelle
1

Wenn man über Code spricht, wird Pseudo-Code sehr praktisch.

Wenn jemand anfängt, mir Code von dem Charakter zu geben, dann sage ich ihm einfach, er solle es mir per E-Mail schicken, und ich lasse ihn wissen, was ich denke.


quelle
0

Kurze Antwort

Das, was einem Standard-Ausspracheführer am nächsten kommt, scheint der Eintrag für "ASCII" im Hacker-Wörterbuch (auch bekannt als The Jargon File ) zu sein. Es enthält eine aus "Revision 2.3 des Usenet ASCII-Aussprachehandbuchs" abgeleitete Tabelle, die online nicht mehr leicht auffindbar ist. Es gibt einen relevanten Diskussionsthread, " Name that character! " comp.misc, In dem Maarten Litmath die Beibehaltung des Originaldokuments zugesprochen wird. Der Thread merkt an, dass "cleverere" Namen wie "Donald Duck" für "&" aus dem neueren Dokument weggelassen wurden.

benzado
quelle