2009-06-21 34 views
19

Khi giáo dục chính thức của tôi trong lập trình trước ngày C, tôi đã học C từ K & R và các văn bản khác.Thực hành tốt nhất để phát âm mã C

Có các quy ước hữu ích cho việc lồng tiếng mã C khi đọc và viết không?

Ví dụ, trong

d = emalloc(sizeof(*d)); 
d->d_name = estrdup(name); 

là '=' đọc tốt nhất là 'được thiết lập để' hoặc 'bằng' hay cái gì khác?

Liệu '==' sau đó được đọc là 'bằng' hoặc 'là' hoặc 'có cùng giá trị với'?

Tương tự với "* d", "d-> d_name", và sau đó "& d", "&", "& &", và vân vân.

Tôi biết tất cả những điều này có ý nghĩa gì, câu hỏi liên quan đến những gì bạn nói (to hoặc nội bộ) khi đọc biểu tượng, đặc biệt nếu bạn nghĩ điều này giúp hiểu và giảm thiểu sự nhầm lẫn.

+6

"Là giáo dục chính thức của tôi trong lập trình trước ngày C" ... Tuyệt vời. –

+2

+1 cho câu hỏi khó hiểu nhưng thú vị – SingleNegationElimination

+1

nên là cộng đồng wiki. – SilentGhost

Trả lời

3

Tôi đã không thực sự nghĩ về nó trước đây, nhưng bây giờ tôi nhận ra rằng tôi không intermally đọc báo cáo ngôn ngữ lập trình như những người ở trên như từ tiếng Anh. Tôi chỉ nhìn vào họ và biết họ làm gì.

Và thú vị, điều này làm việc ngay cả khi tôi không thực sự biết những gì một chức năng nào. Ví dụ, tôi chưa bao giờ gặp emalloc() trước đây, nhưng bộ não của tôi vẫn cho tôi biết câu lệnh (có thể) là gì.

Nếu vì một lý do nào (chiến tranh an ninh quốc gia?) Tôi đã tb đọc một cái gì đó như:

d->d_name = estrdup(name); 

qua điện thoại, tôi muốn nói:

"điều được trỏ đến bởi d's d_name thành viên được phân công là kết quả của gọi estrdup với tên là tham số "

Nhưng đó là nhấn mạnh không những gì đang xảy ra trong đầu của tôi khi tôi đọc mã.

+0

Gần với những gì tôi đã học để làm: tốt đẹp để có nó xác nhận như là một cách tiếp cận được sử dụng bởi những người khác. – mas

1

Tôi không phải là người nói tiếng Anh bản địa và không để tôi đọc mã, nhưng đây là cách tôi muốn làm điều đó:

= -> bằng
== -> bằng
& - > Bitwise và
& & -> và
& d -> địa chỉ của

tôi sẽ đọc * d, d-> d_name, d.d_name là "d"/"d d_name", như nó phải được rõ ràng từ ngữ cảnh.

9

tôi phát âm này như:

d = emalloc(sizeof(*d)); 

dee kích thước ee bằng malloc của dee sao

d->d_name = estrdup(name); 

dee mũi tên dee nhấn tên bằng tên dupe ee khuấy"

Nhưng tôi sẽ không gọi bất kỳ thực hành tốt nhất nào. Tôi không phát âm dấu ngoặc đơn ngoại trừ khi nó sẽ mơ hồ, chẳng hạn như ưu tiên toán tử. Tôi phát âm gần như tất cả các dấu chấm câu khác. Tôi thực sự đọc == như "bình đẳng như nhau"

+0

+1 Để đọc '==' là "bằng nhau". Tôi cũng làm như vậy ... :) – Miguel

4

Tôi không phải là một bản tiếng Anh, nhưng đó là những từ ngữ tôi thấy đang được sử dụng nhiều nhất:

'=' - assign to 
'==' - equals 
d->d_name member of a struct 
&d - address of d 
& - bitwise and 
&& - logical and (or just "and" for short) 
*d - dereference d, or in case of *d = x "assign x to what is being pointed by d" 

Như ví dụ của bạn:

d = malloc(sizeof(*a)); 

Phân bổ (malloc) một lượng bộ nhớ bằng với kích thước của những gì được trỏ đến bởi a và gán kết quả cho d.

d->d_name = estrdup(name); 

Gán cho thành viên d_name của d giá trị được trả về bởi lệnh gọi đến estrdup với tên làm tham số.

1

Hmm, không bao giờ nghĩ về điều này trực tiếp trước đây.

Đối với từ và số nhận dạng, tôi chỉ phát âm chúng khi chúng được viết.

Đối với biểu tượng, tôi không nghĩ có quy tắc cứng và nhanh. Nếu người điều hành phát âm vì nó được viết có ý nghĩa thì tôi làm điều đó. Ví dụ: == Tôi sẽ phát âm bằng bằng. Không có sự mơ hồ ở đó và đối với hầu hết các lập trình viên nó chảy.

Nhà khai thác như - > mặc dù tôi chỉ nói quyền truy cập của thành viên. Nói "dấu gạch ngang lớn hơn" là chính xác nhưng tôi đoán tôi sẽ nhận được một vài cái nhìn ngộ nghĩnh.

10

ASCII Pronunciation Rules for Programmers có danh sách lớn, tốt, quy tắc phát âm ASCII ... không phải cách tốt nhất để phát âm con trỏ, nhất thiết, nhưng ít nhất là cách diễn đạt các biểu tượng.

+1

+1 Tôi thích các quy tắc, chúng có thể có ích vào một ngày nào đó. Thành thật mà nói tôi chưa bao giờ sử dụng cách phát âm của bất kỳ mã nào (pythoh, C, C++, ...). Những gì tôi thường làm là chỉ mô tả mã trong các từ như: phân bổ 'dee', đặt tên thành viên trong dee ... – SashaN

1
d = emalloc(sizeof(*d)); 

dee bằng ee malloc sizeof sao dee

d->d_name = estrdup(name); 

dee tên dee ref bằng ee khuấy động dup tên

if (d -> d_name == NULL) 

nếu dee tên dee ref là null

hoặc

nếu d ee ref dee tên bằng null

2

Tôi thường sử dụng các từ/nhóm từ trong đó đã được sử dụng cho các yếu tố cú pháp C nếu tôi cần phải phát âm/đọc to C số-

ví dụ

* d = giá trị tại địa chỉ bộ nhớ trong d

d-> d_name = giá trị tại địa chỉ bộ nhớ chỉ vào một số bù đắp từ địa chỉ cơ sở trong d (giá trị này có thể là một giá trị không thể thiếu hoặc giá trị địa chỉ khác!)

& d = địa chỉ bộ nhớ của giá trị d

x = y = giá trị của x được cập nhật và thay đổi với giá trị bằng y.

x == y = so sánh giá trị của x với giá trị của y

Khi tôi đã làm điều này tôi phát hiện ra rằng 'phát âm' sau cấu trúc ngôn ngữ C sẽ được khôn lanh/thú vị:

union 
{ 
    int a; 
float b; 
} 

chức năng con trỏ,

kiểu chữ,

-AD.

+0

Trong trường hợp bất cứ ai đếm, cho ba trường hợp khó khăn của bạn tôi muốn nói "công đoàn mở-brace int a phao bán kết tràng b bán kết tràng gần nhưng không có dấu chấm phẩy "; "function taking và trở về "; và "a equals b cast to int" tương ứng. –

1

Tôi thường phát âm cả hai "=" và "==" là "bằng".

Có rất ít sự mơ hồ, vì tôi hiếm khi sử dụng "=" trong ngữ cảnh kết quả của nó được sử dụng hoặc "==" trong ngữ cảnh kết quả của nó không được sử dụng. Nếu trước đây xuất hiện, có lẽ trong mã tôi đã đọc mà tôi đã không viết, tôi có thể nói "nếu một đơn bằng b", hoặc "cho tôi bằng j bán kết tràng i đơn bằng j bán tràng cộng với- cộng với j. Tôi hy vọng đó không phải là lỗi ".

Trong mọi trường hợp, tôi rất hiếm khi nói to mã trong ngữ cảnh nơi sự mơ hồ thực sự quan trọng. Vì vậy, làm thế nào tôi thường nói nó là khác nhau từ những gì tôi muốn làm trong một tình huống mà tôi cần phải được thực sự pedantic về truyền đạt văn bản chính xác.

Nếu tôi đã đọc nhiều mã (ví dụ như lập trình ghép đôi) thì tôi thường mong đọc nó khi nó được nhập, vì vậy có thể phát hiện bất kỳ lỗi nào. Nếu sự mơ hồ của tôi thường xuyên gây nhầm lẫn cho người đánh máy và lãng phí thời gian, thì tôi mong đợi sẽ đồng ý một hội nghị ngay tại chỗ. Viễn dễ dàng hơn việc hình thành một sự đồng thuận giữa tất cả các lập trình viên C/C++/Java/C# trên thế giới, bao giờ hết.

2

IMO, đây là cách tốt nhất để đọc phần sau đây (trong chừng mực PHP là có liên quan):

= "là (bây giờ) thiết lập để"

== "là (nay) bằng"

=== "là (bây giờ) giống với"

  • Gọi = "được đặt thành" giúp tránh sử dụng không chính xác.
  • Từ "bây giờ" là tùy chọn nhưng nhắc nhở những người mới lập trình (như bản thân tôi) về bản chất động của các giá trị.
3

(Nói chậm và rõ ràng). Tôi sẽ đọc một số văn bản cho bạn, một ký tự cùng một lúc. Tôi sẽ đọc nó từ từ và rõ ràng, tạm dừng một chút sau mỗi nhân vật. Tôi sẽ yêu cầu bạn đọc lại cho tôi khi tôi kết thúc, vì vậy hãy lắng nghe cẩn thận, nhưng cứ tiếp tục nếu bạn mắc lỗi. Tất cả các chữ cái là chữ thường và nó chứa dấu câu trong suốt. Bạn đã sẵn sàng chưa? (Chờ xác nhận.)

(Điều chỉnh tốc độ giữa chậm và cực kỳ chậm dựa trên phản hồi âm thanh.) d khoảng trống bằng không gian emalloc kích thước dấu ngoặc đơn trái của dấu ngoặc đơn trái dấu hoa thị phải dấu ngoặc đơn bên phải dấu chấm phẩy mới- dòng d dấu gạch ngang lớn hơn d dấu gạch dưới tên không gian bằng không gian estrdup dấu ngoặc đơn bên trái dấu ngoặc đơn bên phải dấu chấm phẩy

Ok, vui lòng đọc lại từ từ và một ký tự cùng một lúc. (Xác nhận rằng họ đã nhận được truyền chính xác. Hãy truyền lại nếu cần.)

+0

Bạn khiến tôi bị thôi miên ở đó một nửa ...;) – sjngm

Các vấn đề liên quan