Standardy głośnego odczytu kodu?

12

Czy ktoś zdefiniował standard głośnego odczytu kodu dla dowolnego języka? Wyobrażam sobie, że jest to ważne dla oprogramowania takiego jak czytniki ekranu dla osób niedowidzących. Tego rodzaju rzeczy pojawiają się również, gdy dyskutujesz z kimś o kodzie, przeglądasz go w grupie lub prowadzisz zajęcia.

W rodzinie języków C jest wiele słów z „oczywistą” wymową. Niektóre z nich są po prostu angielskie słowa: for, break, case, default, itd. Niektóre skróty, jak intsą jednoznaczne. A potem jest char.

Zawsze staram się to powiedzieć (i słyszeć w mojej głowie) jak pierwszą sylabę „węgla drzewnego”. To było dla mnie denerwujące, kiedy po raz pierwszy rozmawiałem o kodzie z kimś, kto wymawiał go jako „samochód”, co w rzeczywistości ma większy sens, ponieważ chartak naprawdę jest skrótem słowa „znak”, więc wyraźnie powinno być wymawiane tak samo. Ale nawet wiedząc o tym, węgiel drzewny wydaje mi się bardziej odpowiedni.

A potem są takie zdania foo = bar ? *(++baz) : zardoz.

Czy ktokolwiek opracował dokument dyktujący prawidłowy (ich zdaniem) sposób odczytywania kodu na głos? Albo dla konkretnego języka, a może kodu w ogóle?

benzado
źródło
9
Czytanie Perla na głos ... <oh ból>
Rook
4
Dla ciekawości, dlaczego odczytujesz kod na głos? Chyba nigdy tego nie zrobiłem
Vitor Py
1
Byłoby to również przydatne do dyktowania programów podczas dojazdów do pracy. Na szczęście, będąc programem Delphi, dyktowałem tylko z niezwykłą elegancją.
Peter Turner,
2
@Peter: Jak z ciekawości, jak wymawiasz :=?
Mason Wheeler,
2
@Mason Na szczęście Colon Equals
Peter Turner

Odpowiedzi:

15

Szybki kombinezon: przeczytaj ten wspaniały artykuł w Coding Horror

Ilekroć omawiam kod przez telefon, nigdy go nie czytam dosłownie. Musisz go „skompilować” z człowiekiem, a jeśli nadal jest zamieszanie na drugim końcu linii, możesz przejść do bardziej dosłownego czytania. Na przykład przeczytałbym twój przykład jako

„Jeśli bar jest prawdą, zwiększ wskaźnik baz i przypisz wartość pod tym adresem do foo. W przeciwnym razie ustaw foo na zardoz.”

Od połowy lat 90. jestem pełnoetatowym telepracownikiem, więc praktycznie wszystkie moje interakcje z kolegami odbywały się przez telefon lub w inny pośredni sposób. Bardzo często udostępniamy sesję screen (terminal) lub VNC (X). Oprócz zwykłej koleżeństwa spędzamy cały dzień na rozmowach o kodzie, projektowaniu, planowaniu itp.

Kiedy mówimy o kodzie, używamy żargonu, który jest ściśle powiązany z rodzajem projektu. Jednym z (wielu) powodów, dla których nowy członek grupy musi być w pełni funkcjonalny, jest to, że zasadniczo uczą się nowego języka za każdym razem, gdy dołączają do nowego działu / firmy.

Jak powiedziałem powyżej i jak powiedzieli inni, staramy się rozmawiać na tak wysokim poziomie, jaki jest odpowiedni dla każdej dyskusji. Ale czasami naprawdę musisz po prostu powiedzieć komuś: „Wpisz to”

Jak to powiedzieć? Cóż, moglibyśmy podać takie wyliczenie jak ...

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

Tak właśnie „my” wypowiadamy te postacie. Aby zapoznać się z całym zakresem powiedzenia „#”, zajrzyj na stronę wiki dla #

Więc jest za dużo zmienności. Musi być specyficzny dla języka, w którym się piszesz (tak jak piszę to po angielsku dla naszej ludzkiej komunikacji).

Bez kontekstu językowego musiałbyś ciągle powracać do pisowni znak po znaku. Więc większość ludzi, których znam, wraca do tego, co standard językowy nazywa.

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)

Każdy z nich byłby sugerowany przez powiedzenie „Ustaw X na ...” w odpowiednim kontekście. Nawet nie zaczynaj od tego, który kod jest czytany jako „ciąg X jest równy ciągowi Y”.

Jeśli powiesz „hash bang bin bash” lub „shebang bash”, prawie wszyscy będą wiedzieć, że oznacza to „#! / Bin / bash”. Jeśli tego nie zrobią, powiedzą „hę?”, A ty zejdziesz na dół „Na górze pliku: znak funta, wykrzyknik, ukośnik, kosz, ukośnik, ukośnik, nowa linia”. Jeśli nadal go nie rozumieją, cofnij go jeszcze raz: „Widzisz tę klawiaturę przed sobą? Widzisz klawisz„ 3 ”? Ten znak na górze po naciśnięciu klawisza Shift jest znakiem funta”.

Dolna linia:

  • nie przejmuj się tym zbytnio, pomylisz się, wszyscy to przeżyją
  • jest zbyt specyficzne dla tego, co robisz
  • zawsze noś ręcznik
  • przeczytaj artykuł w Coding Horror
niepythonic
źródło
Zgadzam się. Prawie nigdy nie czytam kodu „słowo w słowo”. Po prostu wyjaśniam, co robi.
1
Czy Twoim celem byłoby wyjaśnienie, co się dzieje, czy też pozwolenie, by skopiowali to dosłownie?
Job
1
@Job - Jeśli faktycznie czytasz kod, a nie tylko objaśniasz moduły, klasy, bloki, napisy itp., Potrzebujesz pewnej specyficzności. Ale nigdy nie próbowałbym pisać go językiem. Pomyśl tylko, jak trudno jest powiedzieć komuś adres e-mail lub numer telefonu na głos. Jeśli tak naprawdę sprowadza się to do wypowiadania poszczególnych postaci, to zależy to całkowicie od odbiorców. Jeśli tylda musi być określana jako „squiggly”, niech tak będzie.
niepythonic
Mark, zgadzam się z tym, co napisałeś (co oznacza często przewyższenie dosłownej dokładności), ale tak naprawdę nie odnosi się do mojego pytania, które tak naprawdę dotyczy procesu uzgadniania w sprawach takich jak to, co nazwać a #lub a !. Nie mów nawet, dlaczego dyskutujesz o kodzie przez telefon. Skoro masz najwięcej głosów, czy mógłbyś jeszcze bardziej udzielić odpowiedzi?
benzado
Zaakceptowałem twoją odpowiedź, ponieważ oprócz poświęcenia czasu na jej aktualizację, zamieściłeś link do bloga Jeffa Atwooda, który z kolei prowadzi do wpisu „ASCII” w The New Hacker's Dictionary, co jest właściwie czymś w rodzaju Szukałem. Dzięki!
benzado
3

Nigdy nie spotkałem się z żadnymi standardami mówienia na głos. Natknąłem się na małe fragmenty, w których ktoś wyraził swoje osobiste preferencje, na przykład odnosząc się do „#! / Bin / sh” jako „Hash-bang slash bin slash SH” w przeciwieństwie do „funta wykrzyknika do przodu slash BIN do przodu slash SH „później może założyć, że słuchacz ma mniejszą znajomość konstrukcji.

Istnieje również duża rozbieżność w ilości, z jaką różne języki są czytelne na głos. Weźmy na przykład różnice między Pythonem, który wydaje się łatwiejszy do mówienia na głos, niż powiedz Perl, który wymaga albo wypowiedzenia dużej interpunkcji, albo przetłumaczenia z „$ var [20]” na „dwudziesty element tablicy var”.

Moje własne doświadczenie jest takie, że jest bardzo kontekstowe, w oparciu o powód, dla którego muszę czytać kod na głos, poziom wiedzy słuchacza i język, o którym mowa.

W przypadku recenzji kodu bardziej prawdopodobne jest, że wyjaśnię oświadczenie, niż próbuję odczytać je na głos, ponieważ zazwyczaj ważniejsze jest zrozumienie znaczenia lub przemyślenia procesu niż po prostu odczytanie surowego kodu słuchaczowi.

Kiedy próbuję nakłonić kogoś do wpisania dokładnego wiersza kodu C w edytorze (na przykład patrzę przez ramię młodszego programisty i widzę, jak naprawić wiersz jego kodu), często kończę wypowiadanie kodu w słowach kluczowych i symbolach, takich jak „jeśli spacja open-paren null podwójnie równa się p close-paren ...” Ta sama wymiana z bardziej zaawansowanym programistą może zacząć się bardziej jak „musisz sprawdzić, czy p jest tutaj null ... „

John Gaines Jr.
źródło
1

Mówienie o kodzie jest jednym z tych przypadków, kiedy pseudo-kod staje się niezwykle przydatny.

Jeśli ktoś zacznie dawać mi kod według postaci, po prostu powiem mu, że prześlę go e-mailem i dam znać, co myślę.


źródło
0

Krótka odpowiedź

Najbliższą standardową instrukcją wymowy wydaje się wpis „ASCII” w Słowniku hakerów ( zwanym także plikiem Jargon ). Zawiera tabelę pochodzącą z „wersji 2.3 Przewodnika po wymowach Usenet ASCII”, której nie można już łatwo znaleźć w Internecie. W maju-czerwcu 1991 r. Znajduje się odpowiedni wątek dyskusyjny „ Nazwij tę postać!comp.misc, W którym Maarten Litmath zachował oryginalny dokument. Wątek zauważa, że ​​„mądrzejsze” nazwy, takie jak „Kaczor Donald” dla „&”, zostały pominięte w nowym dokumencie.

benzado
źródło