Tiêu chuẩn để đọc mã thành tiếng?


12

Có ai định nghĩa một tiêu chuẩn để đọc mã thành tiếng, cho bất kỳ ngôn ngữ nào không? Tôi tưởng tượng điều này rất quan trọng đối với các phần mềm như trình đọc màn hình cho người khiếm thị. Điều này cũng xuất hiện khi bạn đang thảo luận về mã với ai đó, xem xét nó trong một nhóm hoặc dạy một lớp.

Trong họ ngôn ngữ C, có rất nhiều từ có cách phát âm "rõ ràng". Một số chỉ đơn giản là từ tiếng Anh: for, break, case, default, vv Một số từ viết tắt, giống như int, là rõ ràng. Và sau đó là char.

Tôi luôn có xu hướng nói nó (và nghe nó trong đầu) như âm tiết đầu tiên của "than củi". Nó đã gây xúc động cho tôi khi lần đầu tiên tôi nói về mã với một người phát âm nó giống như "xe hơi", điều này thực sự có ý nghĩa hơn vì charthực sự là một từ viết tắt của từ "ký tự", vì vậy rõ ràng nó phải được phát âm giống nhau. Nhưng ngay cả khi biết điều đó, char-as-in-than cảm thấy đúng với tôi hơn.

Và sau đó là những tuyên bố như thế foo = bar ? *(++baz) : zardoz.

Có ai đã tạo ra một tài liệu chỉ ra cách chính xác (theo ý kiến ​​của họ) làm thế nào để đọc to mã không? Hoặc cho một ngôn ngữ cụ thể hoặc có thể mã nói chung?


9
Đọc Perl thành tiếng ... <oh the đau>
Rook

4
Chỉ vì tò mò, tại sao bạn đọc to mã? Tôi nghĩ rằng tôi chưa bao giờ làm điều đó
Vitor Py

1
Điều này cũng sẽ hữu ích cho việc ra lệnh cho các chương trình trong quá trình đi lại. May mắn thay, là một chương trình Delphi tôi sẽ chỉ ra lệnh với sự thanh lịch cực độ.
Peter Turner

2
@Peter: Chỉ tò mò thôi, bạn phát âm :=như thế nào?
Mason Wheeler

2
@Mason May mắn thay, Đại
Peter Turner

Câu trả lời:


15

Coverall nhanh: đọc bài viết tuyệt vời này tại Mã hóa kinh dị

Bất cứ khi nào tôi đang thảo luận về mã qua điện thoại, tôi không bao giờ đọc nó theo nghĩa đen. Bạn phải "biên dịch" nó với con người, và nếu vẫn còn sự nhầm lẫn ở đầu dây bên kia, bạn có thể chuyển sang cách đọc theo nghĩa đen hơn. Ví dụ, tôi đã đọc ví dụ của bạn như

"Nếu thanh là đúng, hãy tăng con trỏ baz và gán giá trị tại địa chỉ đó cho foo. Nếu không thì đặt foo thành zardoz."

Tôi đã là một người làm việc từ xa toàn thời gian từ giữa những năm 90, vì vậy thực tế tất cả các tương tác của tôi với các đồng nghiệp của tôi đều qua điện thoại hoặc các phương tiện gián tiếp khác. Rất thường xuyên chúng tôi chia sẻ một phiên màn hình (thiết bị đầu cuối) hoặc phiên VNC (X). Bên cạnh các tình bạn thông thường, chúng tôi dành cả ngày để nói về mã, thiết kế, lập kế hoạch, v.v.

Khi chúng ta nói về mã, chúng tôi sử dụng biệt ngữ gắn liền với loại dự án đang được thực hiện. Một trong (nhiều) lý do khiến một thành viên nhóm mới mất nhiều thời gian để trở nên đầy đủ chức năng là vì về cơ bản họ đang học một ngôn ngữ mới mỗi khi họ gia nhập một bộ phận / công ty mới.

Như tôi đã nói ở trên, và như những người khác đã nói, chúng tôi cố gắng nói ở mức độ cao phù hợp cho bất kỳ cuộc thảo luận nào. Nhưng đôi khi, bạn thực sự phải nói với ai đó: "Gõ cái này"

Làm thế nào để bạn nói nó? Chà, chúng ta chỉ có thể đưa ra một bảng liệt kê như ...

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

Đây chỉ là cách "chúng tôi" nói những nhân vật này. Để có ý tưởng về toàn bộ phạm vi nói "#", hãy xem trang wiki cho #

Vì vậy, có quá nhiều thay đổi. Nó phải đặc trưng cho ngôn ngữ mà bạn đang mã hóa (giống như tôi đang gõ tiếng Anh này để giao tiếp với con người của chúng ta).

Không có ngữ cảnh của ngôn ngữ, bạn liên tục phải trở lại ký tự bằng cách đánh vần ký tự. Vì vậy, hầu hết mọi người tôi biết đều rơi vào bất cứ điều gì mà tiêu chuẩn ngôn ngữ gọi là mọi thứ.

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)

Mỗi người trong số họ sẽ được ngụ ý chỉ bằng cách nói "Đặt X thành ..." trong bối cảnh thích hợp. Thậm chí đừng để tôi bắt đầu với mã được đọc là "chuỗi X bằng chuỗi Y".

Nếu bạn nói "hash bang bin bash" hoặc "shebang bash", mọi người sẽ biết điều đó có nghĩa là "#! / Bin / bash". Nếu họ không nói, "Huh?", Và bạn bước xuống một chữ "Ở đầu tập tin: Dấu Pound, dấu chấm than, dấu gạch chéo, bin, dấu gạch chéo, bash, dòng mới". Nếu họ vẫn không nhận được, bạn lại bước xuống: "Xem bàn phím đó trước mặt bạn không? Xem phím" 3 "? Dấu đó trên đầu khi bạn nhấn shift là dấu thăng, đó."

Dòng dưới cùng:

  • đừng lo lắng về nó quá nhiều, bạn sẽ sai, mọi người sẽ vượt qua nó
  • nó quá cụ thể với chính xác những gì bạn làm
  • luôn mang theo khăn
  • đọc bài viết trên tại Mã hóa kinh dị

Tôi đồng ý. Tôi gần như không bao giờ đọc mã "từng chữ" Tôi chỉ giải thích những gì nó đang làm.

1
Mục tiêu của bạn là giải thích những gì đang diễn ra hoặc để họ sao chép nó xuống nguyên văn?
Công việc

1
@Job - Nếu bạn thực sự đang đọc mã, và không chỉ giải thích các mô-đun, lớp, khối, phụ, v.v., thì bạn cần một lượng cụ thể nhất định. Nhưng tôi sẽ không bao giờ thử gõ nó bằng lưỡi của mình. Chỉ cần nghĩ rằng thật khó để nói với ai đó một địa chỉ email hoặc số điện thoại lớn. Nếu nó thực sự đi xuống để đánh vần từng ký tự, thì nó hoàn toàn phụ thuộc vào khán giả của bạn. Nếu dấu ngã phải được gọi là "nguệch ngoạc", thì cũng vậy.
unpythonic

Đánh dấu, tôi đồng ý với những gì bạn đã viết (có nghĩa là thường vượt qua độ chính xác theo nghĩa đen), nhưng nó không thực sự giải quyết câu hỏi của tôi, mà thực sự là về quá trình đồng ý về các vấn đề như gọi là gì #hoặc a !. Bạn thậm chí không nói lý do tại sao bạn thảo luận về mã qua điện thoại. Vì bạn đã nhận được nhiều phiếu bầu nhất, bạn có thể tiết lộ thêm câu trả lời của mình không?
benzado

Tôi đã chấp nhận câu trả lời của bạn, vì ngoài việc dành thời gian để cập nhật nó, bạn đã liên kết với blog của Jeff Atwood, từ đó liên kết đến mục "ASCII" trong Từ điển mới của Hackman, gần như là một thứ Tôi đang tìm kiếm. Cảm ơn!
benzado

3

Tôi chưa bao giờ chạy qua bất kỳ tiêu chuẩn nào để nói to cú pháp ngôn ngữ. Tôi đã chạy qua các đoạn nhỏ trong đó ai đó đã thể hiện sở thích cá nhân của riêng họ, ví dụ như "#! / Bin / sh" là "Hash-bang slash bin slash SH", trái ngược với "pash exclamation Forward-slash SH Forward slash SH "Về sau có thể cho rằng người nghe có ít quen thuộc hơn với cấu trúc.

Ngoài ra còn có sự chênh lệch lớn về số lượng ngôn ngữ khác nhau có thể đọc thành tiếng. Ví dụ, sự khác biệt giữa Python có xu hướng nói to hơn so với Perl, điều này đòi hỏi bạn phải nói nhiều dấu câu hoặc dịch từ "$ var [20]" sang "phần tử thứ hai mươi của mảng var".

Kinh nghiệm của riêng tôi là nó rất bối cảnh dựa trên lý do tôi cần đọc to mã, mức độ kiến ​​thức của người nghe và ngôn ngữ trong câu hỏi.

Trong trường hợp đánh giá mã, tôi có nhiều khả năng giải thích một tuyên bố hơn là cố gắng đọc to lên vì điều đó thường quan trọng hơn để hiểu ý nghĩa hoặc quá trình suy nghĩ hơn là chỉ đọc mã thô cho người nghe.

Khi tôi đang cố gắng để ai đó nhập một dòng mã C chính xác vào một trình soạn thảo (ví dụ: tôi đang nhìn qua vai của một lập trình viên cơ sở và xem cách sửa một dòng mã của họ), tôi thường kết thúc việc nói ra mã trong các từ khóa và ký hiệu như "nếu không gian mở paren null double-p bằng p close-paren ..." Sự trao đổi tương tự với một nhà phát triển cao cấp hơn có thể bắt đầu giống như "bạn cần kiểm tra xem p có bị rỗng ở đây không ... "


1

Nói về mã là một trong những thời điểm mà mã giả trở nên cực kỳ tiện dụng.

Nếu ai đó bắt đầu cho tôi mã theo ký tự, thì tôi sẽ bảo họ gửi email cho tôi và tôi sẽ cho họ biết tôi nghĩ gì.


0

Câu trả lời ngắn

Điều gần nhất với hướng dẫn phát âm chuẩn dường như là mục nhập cho "ASCII" trong Từ điển của Hacker (còn gọi là Tệp Jargon ). Nó chứa một bảng bắt nguồn từ "bản sửa đổi 2.3 của hướng dẫn phát âm Usenet ASCII" không còn dễ dàng khám phá trực tuyến. Có một chủ đề thảo luận có liên quan, "Đặt tên cho nhân vật đó! " Vào comp.misctháng 5 tháng 6 năm 1991, trong đó ghi nhận Maarten Litmath là duy trì tài liệu gốc. Chủ đề lưu ý rằng các tên "thông minh hơn" như "Vịt Donald" cho "&" đã bị bỏ qua khỏi tài liệu mới hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.