Standar untuk membaca kode dengan keras?

12

Adakah yang mendefinisikan standar untuk membaca kode dengan lantang, untuk bahasa apa pun? Saya membayangkan ini penting untuk perangkat lunak seperti pembaca layar untuk tuna rungu. Hal semacam ini juga muncul ketika Anda mendiskusikan kode dengan seseorang, meninjaunya dalam kelompok, atau mengajar kelas.

Dalam keluarga bahasa C, ada banyak kata dengan pengucapan "jelas". Beberapa hanya kata-kata bahasa Inggris: for, break, case, default, dll Beberapa singkatan, seperti int, yang ambigu. Lalu ada char.

Saya selalu cenderung mengatakannya (dan mendengarnya di kepala saya) seperti suku kata pertama "arang". Itu menggelegar bagi saya saat pertama kali saya berbicara tentang kode dengan seseorang yang mengucapkannya seperti "mobil", yang sebenarnya lebih masuk akal karena charsebenarnya merupakan singkatan dari kata "karakter", jadi jelas itu harus diucapkan sama. Tetapi bahkan mengetahui itu, char-as-in-coal terasa lebih tepat bagi saya.

Dan kemudian ada pernyataan seperti foo = bar ? *(++baz) : zardoz.

Adakah orang yang membuat dokumen yang mendikte cara yang benar (menurut mereka) cara membaca kode dengan keras? Baik untuk bahasa tertentu atau mungkin kode secara umum?

benzado
sumber
9
Membaca Perl dengan keras ... <oh sakitnya>
Rook
4
Hanya untuk rasa ingin tahu, mengapa Anda membaca kode dengan keras? Saya pikir saya tidak pernah melakukannya
Vitor Py
1
Ini juga akan berguna untuk mendikte program selama perjalanan. Untungnya, sebagai program Delphi saya hanya akan mendikte keanggunan yang ekstrim.
Peter Turner
2
@ Peter: Hanya ingin tahu, bagaimana Anda mengucapkannya :=?
Mason Wheeler
2
@Mason Untungnya, Colon Equals
Peter Turner

Jawaban:

15

Coverall cepat: baca artikel hebat ini di Coding Horror

Setiap kali saya membahas kode melalui telepon, saya tidak pernah membacanya secara harfiah. Anda harus "mengkompilasi" ke manusia, dan jika masih ada kebingungan di ujung lain dari garis, Anda dapat bergerak menuju pembacaan yang lebih literal. Misalnya, saya akan membaca contoh Anda sebagai

"Jika bar benar, tambahkan baz pointer dan tetapkan nilai pada alamat itu untuk foo. Kalau tidak, set foo ke zardoz."

Saya telah menjadi telecommuter penuh waktu sejak pertengahan 90-an, jadi praktis semua interaksi saya dengan kolega saya telah melalui telepon atau cara tidak langsung lainnya. Sangat sering kita berbagi sesi layar (terminal) atau VNC (X). Selain persahabatan biasa, kami menghabiskan sepanjang hari berbicara tentang kode, desain, perencanaan, dll.

Ketika kita berbicara tentang kode, kita menggunakan jargon yang sangat terkait dengan jenis proyek yang sedang dikerjakan. Salah satu (banyak) alasan dibutuhkan begitu lama bagi anggota grup baru untuk berfungsi penuh adalah karena mereka pada dasarnya mempelajari bahasa baru setiap kali mereka bergabung dengan departemen / perusahaan baru.

Seperti yang saya katakan di atas, dan seperti yang telah dikatakan orang lain, kami mencoba berbicara setinggi mungkin sesuai untuk diskusi apa pun. Tapi kadang-kadang, Anda benar-benar harus hanya mengatakan kepada seseorang: "Ketikkan ini"

Bagaimana Anda mengatakannya? Yah, kita bisa memberikan enumerasi seperti ...

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

Ini adalah bagaimana "kita" mengatakan karakter-karakter ini. Untuk mendapatkan gambaran tentang keseluruhan kisaran kata "#" lihat halaman wiki untuk #

Jadi ada terlalu banyak variabilitas. Itu harus spesifik untuk bahasa yang Anda kodekan (sama seperti saya mengetik ini dalam bahasa Inggris untuk komunikasi manusia kita).

Tanpa konteks bahasa, Anda harus selalu kembali ke karakter dengan mengeja karakter. Jadi, kebanyakan orang yang saya kenal kembali ke apa pun yang oleh standar bahasa disebut sesuatu.

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)

Masing-masing akan tersirat hanya dengan mengatakan "Set X ke ..." dalam konteks yang tepat. Bahkan jangan mulai dengan kode apa yang dibaca sebagai "adalah string X sama dengan string Y".

Jika Anda mengatakan "hash bang bin bash" atau "shebang bash", hampir semua orang akan tahu itu berarti "#! / Bin / bash". Jika mereka tidak melakukannya, mereka akan berkata, "Hah?", Dan Anda mundur sedikit "Di bagian atas file: Pound sign, tanda seru, slash, bin, slash, bash, newline". Jika mereka masih belum mendapatkannya, Anda mundur lagi: "Lihat keyboard di depan Anda? Lihat tombol" 3 "? Tanda di atas saat Anda menekan shift adalah tanda pound, itu."

Intinya:

  • jangan terlalu khawatir tentang itu, Anda akan salah, semua orang akan mengatasinya
  • itu terlalu spesifik untuk apa yang Anda lakukan
  • selalu bawa handuk
  • baca artikelnya di Coding Horror
unpythonic
sumber
Saya setuju. Saya hampir tidak pernah membaca kode "kata demi kata" saya hanya menjelaskan apa yang dilakukannya.
1
Apakah tujuan Anda adalah menjelaskan apa yang sedang terjadi atau membiarkan mereka menyalinnya kata demi kata?
Pekerjaan
1
@ Pekerjaan - Jika Anda benar-benar membaca kode, dan tidak hanya menjelaskan modul, kelas, blok, subs, dll, maka Anda memerlukan sejumlah spesifisitas tertentu. Tetapi saya tidak akan pernah mencoba mengetiknya dengan lidah saya. Pikirkan betapa sulitnya memberi tahu seseorang alamat email atau nomor telepon dengan keras. Jika itu benar-benar turun untuk mengeja karakter demi karakter, maka itu sepenuhnya tergantung pada audiens Anda. Jika tilde harus disebut sebagai "berlekuk", maka jadilah itu.
unpythonic
Mark, saya setuju dengan apa yang Anda tulis (artinya sering mengalahkan akurasi literal), tetapi itu tidak benar-benar menjawab pertanyaan saya, yang sebenarnya tentang proses menyepakati hal-hal seperti apa yang harus disebut a #atau a !. Anda bahkan tidak mengatakan mengapa Anda mendiskusikan kode melalui telepon. Karena Anda mendapat suara terbanyak, bisakah Anda menyempurnakan jawaban Anda lagi?
benzado
Saya telah menerima jawaban Anda, karena selain meluangkan waktu untuk memperbaruinya, Anda menautkan ke blog Jeff Atwood, yang pada gilirannya menautkan ke entri untuk "ASCII" di The New Hacker's Dictionary, yang merupakan hal yang lumayan mirip Aku sedang mencari. Terima kasih!
benzado
3

Saya tidak pernah menemukan standar apa pun untuk sintaksis bahasa yang berbicara dengan keras. Saya telah menemukan potongan kecil di mana seseorang telah menyatakan preferensi pribadi mereka sendiri, misalnya, merujuk ke "#! / Bin / sh" sebagai "Hash-bang slash bin slash SH" sebagai lawan dari "pound seru seruan-tebas BIN forward-slash SH "Yang kemudian mungkin mengasumsikan pendengar memiliki sedikit keakraban dengan konstruk.

Ada juga perbedaan besar dalam jumlah bahasa yang dapat dibaca dengan suara keras. Ambil contoh perbedaan antara Python yang cenderung lebih mudah untuk berbicara dengan lantang vs say Perl yang mengharuskan Anda untuk mengatakan banyak tanda baca atau menerjemahkan dari "$ var [20]" ke "elemen kedua puluh dari array var".

Pengalaman saya sendiri adalah bahwa itu sangat kontekstual berdasarkan alasan bagi saya perlu membaca kode dengan keras, tingkat pengetahuan pendengar dan bahasa yang dipertanyakan.

Dalam hal ulasan kode, saya lebih cenderung menjelaskan pernyataan daripada mencoba membacanya dengan keras karena biasanya lebih penting untuk menyampaikan arti atau proses berpikir daripada hanya membaca kode mentah kepada pendengar.

Ketika saya mencoba membuat seseorang mengetikkan baris kode C yang tepat ke dalam editor (misalnya saya sedang melihat-lihat bahu seorang programmer junior dan melihat bagaimana cara memperbaiki satu baris kode mereka), saya sering berakhir dengan mengeluarkan kode dalam kata kunci dan simbol seperti "jika ruang open-paren null double-sama dengan p close-paren ..." Pertukaran yang sama dengan pengembang yang lebih senior mungkin dimulai lebih seperti "Anda perlu memeriksa p menjadi nol di sini ... "

John Gaines Jr.
sumber
1

Berbicara tentang kode adalah salah satu saat pseudo-code menjadi sangat berguna.

Jika seseorang mulai memberi saya kode berdasarkan karakter, maka saya hanya akan memberitahu mereka untuk mengirimkannya kepada saya dan saya akan memberi tahu mereka apa yang saya pikirkan.


sumber
0

Jawaban singkat

Hal yang paling dekat dengan panduan pelafalan standar adalah entri untuk "ASCII" dalam Kamus Hacker (alias File Jargon ). Ini berisi tabel yang berasal dari "revisi 2.3 dari panduan pengucapan Usenet ASCII" yang tidak lagi mudah ditemukan secara online. Ada utas diskusi yang relevan, " Sebutkan karakter itu! " Pada comp.miscMei-Juni 1991, yang menganggap Maarten Litmath mempertahankan dokumen aslinya. Utas mencatat bahwa nama "pintar" seperti "Donald Duck" untuk "&" dihilangkan dari dokumen yang lebih baru.

benzado
sumber