มาตรฐานการอ่านรหัสออกมาดัง ๆ ?


12

มีใครกำหนดมาตรฐานในการอ่านรหัสออกมาดัง ๆ สำหรับภาษาใด ๆ ฉันคิดว่านี่เป็นสิ่งสำคัญสำหรับซอฟต์แวร์เช่นโปรแกรมอ่านหน้าจอสำหรับการมองเห็นบกพร่อง สิ่งเหล่านี้เกิดขึ้นเมื่อคุณพูดคุยรหัสกับบางคนตรวจสอบในกลุ่มหรือสอนชั้นเรียน

ในตระกูลภาษา C มีคำมากมายที่ออกเสียง "ชัดเจน" บางคนมีคำภาษาอังกฤษเพียง: for, break, case, defaultฯลฯ ตัวย่อบางอย่างเช่นintมีความโปร่งใส charแล้วมี

ฉันมักจะพูดเสมอ (และได้ยินในหัวของฉัน) เหมือนพยางค์แรกของ "ถ่าน" เป็นครั้งแรกที่ฉันได้พูดถึงรหัสกับคนที่ออกเสียงว่า "รถยนต์" ซึ่งเป็นเรื่องที่สมเหตุสมผลสำหรับฉันcharจริง ๆ แล้วเป็นเรื่องที่สมเหตุสมผลมากกว่าเพราะมันเป็นตัวย่อของคำว่า "ตัวละคร" ดังนั้นจึงควรออกเสียงให้ชัดเจน แต่ถึงแม้จะรู้ว่าถ่านในฐานะถ่านหินรู้สึกดีกว่าสำหรับฉัน

foo = bar ? *(++baz) : zardozแล้วมีงบเช่น

มีใครบางคนที่ผลิตเอกสารกำหนดวิธีการที่ถูกต้อง (ในความเห็นของพวกเขา) วิธีการอ่านรหัสออกเสียง? มีทั้งภาษาที่เฉพาะเจาะจงหรืออาจเป็นรหัสทั่วไป?


9
อ่าน Perl ออกเสียงดัง ... <โอ้ความเจ็บปวด>
โกง

4
เพียงแค่อยากรู้อยากเห็นทำไมคุณอ่านออกเสียงรหัส? ฉันคิดว่าฉันไม่เคยทำเลย
Vitor Py

1
สิ่งนี้จะเป็นประโยชน์สำหรับการกำหนดโปรแกรมระหว่างการเดินทาง โชคดีที่ได้เป็นโปรแกรม Delphi ฉันก็แค่สั่งการด้วยความสง่างามอย่างที่สุด
Peter Turner

2
@ Peter: เพิ่งออกมาจากความอยากรู้คุณออกเสียง:=อย่างไร?
Mason Wheeler

2
@Mason โชคดีที่Colon Equals
Peter Turner

คำตอบ:


15

Quick coverall: อ่านบทความที่ดีนี้ที่ Coding Horror

เมื่อใดก็ตามที่ฉันพูดถึงรหัสทางโทรศัพท์ฉันไม่เคยอ่านมันอย่างแท้จริง คุณต้อง "คอมไพล์" มันให้กับมนุษย์และหากยังมีความสับสนในส่วนอื่น ๆ ของบรรทัดคุณสามารถไปสู่การอ่านที่แท้จริงมากขึ้น ตัวอย่างเช่นฉันจะอ่านตัวอย่างของคุณเป็น

"หากแถบเป็นจริงให้เพิ่มตัวชี้ baz และกำหนดค่าที่ที่อยู่นั้นเป็น foo มิฉะนั้นให้ตั้งค่า foo เป็น zardoz"

ฉันเป็นพนักงานสื่อสารโทรคมนาคมเต็มเวลามาตั้งแต่ช่วงกลางทศวรรษที่ 90 ดังนั้นการติดต่อสื่อสารกับเพื่อนร่วมงานของฉันทั้งหมดจึงผ่านทางโทรศัพท์หรือวิธีการทางอ้อมอื่น ๆ บ่อยครั้งที่เรากำลังแบ่งปันเซสชันหน้าจอ (เทอร์มินัล) หรือ VNC (X) นอกจากความสนิทสนมกันเป็นประจำเราใช้เวลาทั้งวันพูดคุยเกี่ยวกับรหัสการออกแบบการวางแผนและอื่น ๆ

เมื่อเราพูดถึงโค้ดเราใช้ศัพท์แสงที่เชื่อมโยงกับประเภทของโครงการที่กำลังทำงานอยู่ หนึ่งในเหตุผล (หลาย ๆ ข้อ) ที่สมาชิกกลุ่มใหม่ต้องใช้งานได้อย่างเต็มที่คือพวกเขาเรียนภาษาใหม่ทุกครั้งที่เข้าร่วมแผนก / บริษัท ใหม่

ดังที่ฉันได้กล่าวไว้ข้างต้นและอย่างที่คนอื่น ๆ พูดเราพยายามพูดในระดับสูงเท่าที่เหมาะสมสำหรับการสนทนาใด ๆ แต่บางครั้งคุณต้องพูดกับใครสักคนจริงๆ: "พิมพ์นี่"

คุณว่าอย่างไร ทีนี้, เราแค่ให้การแจงนับเช่น ...

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

นี่เป็นวิธีที่ "เรา" พูดถึงตัวละครเหล่านี้ เพื่อให้เข้าใจถึงช่วงของการพูดว่า "#" ลองดูที่หน้า wiki สำหรับ #

ดังนั้นจึงมีความแปรปรวนมากเกินไป มันจะต้องมีความเฉพาะเจาะจงกับภาษาที่คุณกำลังเข้ารหัส (เช่นเดียวกับที่ฉันพิมพ์เป็นภาษาอังกฤษเพื่อการสื่อสารกับมนุษย์ของเรา)

หากไม่มีบริบทของภาษาคุณจะต้องเปลี่ยนกลับไปใช้ตัวละครโดยการสะกดคำ ดังนั้นคนส่วนใหญ่ฉันรู้ว่าถอยกลับไปที่สิ่งที่ภาษามาตรฐานเรียกว่าสิ่งที่

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)

แต่ละคนจะถูกบอกเป็นนัยเพียงแค่พูดว่า "ตั้งค่า X เป็น ... " ภายในบริบทที่เหมาะสม อย่าแม้แต่จะรับฉันเริ่มต้นในสิ่งที่ถูกอ่านรหัสว่า "คือสตริง X เท่ากับสตริง Y"

หากคุณพูดว่า "hash bang bin bash" หรือ "shebang bash" ทุกคนจะรู้ว่านั่นคือ "#! / bin / bash" หากพวกเขาไม่พูดว่า "อืม?" และคุณลดระดับลง "ที่ด้านบนของไฟล์: เครื่องหมายปอนด์เครื่องหมายอัศเจรีย์, สแลช, ถังขยะ, สแลช, ทุบขึ้นบรรทัดใหม่" หากพวกเขายังไม่ได้รับคุณจะลดระดับลงอีกครั้ง: "เห็นแป้นพิมพ์นั้นต่อหน้าคุณหรือไม่เห็นปุ่ม" 3 "หรือไม่เครื่องหมายนั้นที่ด้านบนเมื่อคุณกด shift คือเครื่องหมายปอนด์

บรรทัดล่างสุด:

  • ไม่ต้องกังวลกับมันมากเกินไปคุณจะผิดทุกคนจะได้รับมัน
  • เฉพาะเจาะจงเกินไปกับสิ่งที่คุณทำ
  • พกผ้าขนหนูเสมอ
  • อ่านบทความที่ Coding Horror

ฉันเห็นด้วย. ฉันแทบไม่เคยอ่านโค้ด "คำต่อคำ" ฉันแค่อธิบายว่ามันทำอะไรอยู่

1
เป้าหมายของคุณคือการอธิบายว่าเกิดอะไรขึ้นหรือปล่อยให้พวกเขาคัดลอกคำต่อคำ?
งาน

1
@Job - หากคุณกำลังอ่านโค้ดจริง ๆ และไม่ใช่แค่อธิบายโมดูลคลาสบล็อกย่อยและอื่น ๆ คุณต้องมีความจำเพาะจำนวนหนึ่ง แต่ฉันจะไม่พยายามพิมพ์ด้วยลิ้นของฉัน แค่คิดว่ายากแค่ไหนที่จะบอกที่อยู่อีเมลหรือหมายเลขโทรศัพท์ให้คนอื่นฟัง ถ้ามันลงมาเพื่อสะกดคำแบบตัวละครทีละตัวมันจะขึ้นอยู่กับผู้ชมของคุณ หากตัวหนอนจะต้องถูกเรียกว่า "ไก่เขี่ย" ดังนั้นก็ไม่ว่าจะเป็น
unpythonic

มาร์คผมเห็นด้วยกับสิ่งที่คุณเขียน (หมายถึงมักจะสำคัญกว่าความถูกต้องแท้จริง) แต่มันไม่อยู่จริงๆคำถามของฉันที่เป็นจริงเกี่ยวกับกระบวนการของการยอมรับในเรื่องต่าง ๆ เช่นสิ่งที่จะเรียกหรือ# !คุณไม่ได้พูดด้วยซ้ำว่าทำไมถึงคุยรหัสผ่านโทรศัพท์ เมื่อคุณได้รับคะแนนมากที่สุดคุณจะตอบคำถามของคุณออกไปได้อีกไหม?
benzado

ฉันยอมรับคำตอบของคุณเนื่องจากนอกเหนือจากการสละเวลาในการอัปเดตแล้วคุณเชื่อมโยงไปยังบล็อกของ Jeff Atwood ซึ่งจะเชื่อมโยงไปยังรายการสำหรับ "ASCII" ใน The New Hacker's Dictionary ซึ่งค่อนข้างเป็นประเภท ฉันกำลังมองหา. ขอบคุณ!
benzado

3

ฉันไม่เคยข้ามมาตรฐานใด ๆ สำหรับการพูดภาษาไวยากรณ์ออกมาดัง ๆ ฉันวิ่งข้ามตัวอย่างเล็ก ๆ น้อย ๆ ที่มีคนแสดงความชอบส่วนตัวของพวกเขาเช่นอ้างถึง "#! / bin / sh" เป็น "Hash-bang slash bin slash SH SH" ซึ่งตรงข้ามกับ "เครื่องหมายอัศเจรีย์ "ในภายหลังอาจถือว่าผู้ฟังมีความคุ้นเคยกับการสร้างน้อยกว่า

นอกจากนี้ยังมีความแตกต่างกันอย่างมากในปริมาณที่ภาษาต่าง ๆ สามารถอ่านออกเสียงได้ ยกตัวอย่างเช่นความแตกต่างระหว่างงูหลามซึ่งมีแนวโน้มที่จะพูดออกมาดัง ๆ ง่ายขึ้นและพูดว่า Perl ซึ่งคุณต้องพูดว่าเครื่องหมายวรรคตอนจำนวนมากหรือแปลจาก "$ var [20]" เป็น "องค์ประกอบที่ยี่สิบของอาร์เรย์ var"

ประสบการณ์ของฉันเองก็คือมันเป็นบริบทตามเหตุผลที่ฉันจำเป็นต้องอ่านรหัสออกมาดังระดับความรู้ของผู้ฟังและภาษาที่เป็นปัญหา

ในกรณีของการวิจารณ์โค้ดฉันมีแนวโน้มที่จะอธิบายคำแถลงมากกว่าลองอ่านมันออกมาดัง ๆ เพราะโดยทั่วไปมันสำคัญกว่าที่จะได้รับความหมายหรือกระบวนการคิดข้ามมากกว่าแค่อ่านรหัสดิบไปยังผู้ฟัง

เมื่อฉันพยายามให้คนพิมพ์รหัส C ที่แน่นอนลงในตัวแก้ไข (ตัวอย่างเช่นฉันกำลังมองไหล่ของโปรแกรมเมอร์รุ่นจูเนียร์และดูวิธีแก้ไขรหัสบรรทัดของพวกเขา) ฉันมักจะพูดจบโค้ดที่พูดออกมา ในคำหลักและสัญลักษณ์เช่น "ถ้า space open-paren null เป็นสองเท่าเท่ากับ p-paren ... " การแลกเปลี่ยนเดียวกันกับนักพัฒนาที่อาวุโสกว่าอาจเริ่มต้นขึ้นเช่น "คุณต้องตรวจสอบ p ให้เป็นโมฆะที่นี่ ... "


1

การพูดเกี่ยวกับรหัสเป็นหนึ่งในช่วงเวลาที่รหัสหลอกกลายเป็นประโยชน์อย่างยิ่ง

หากใครบางคนเริ่มให้รหัสกับตัวละครฉันจะบอกให้พวกเขาส่งอีเมลถึงฉันและฉันจะบอกให้พวกเขารู้ว่าฉันคิดอย่างไร


0

คำตอบสั้น ๆ

สิ่งที่ใกล้เคียงที่สุดกับคู่มือการออกเสียงมาตรฐานดูเหมือนจะเป็นรายการสำหรับ "ASCII" ใน The Hacker's Dictionary (aka The Jargon File ) มันมีตารางที่ได้มาจาก "การแก้ไข 2.3 ของคู่มือการออกเสียง Usenet ASCII" ซึ่งไม่สามารถค้นพบออนไลน์ได้อย่างง่ายดายอีกต่อไป มีหัวข้อการสนทนาที่เกี่ยวข้องคือ "ตั้งชื่อตัวละครนั้น! " comp.miscในเดือนพฤษภาคม - มิถุนายน 2534 ซึ่งให้เครดิต Maarten Litmath ว่าเป็นการบำรุงรักษาเอกสารต้นฉบับ เธรดตั้งข้อสังเกตว่าละเว้นชื่อ "ฉลาด" เช่น "Donald Duck" สำหรับ "&" ถูกละไว้จากเอกสารที่ใหม่กว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.