Có phải là xấu khi sử dụng các ký tự Unicode trong tên biến? [đóng cửa]


82

Gần đây tôi đã cố gắng thực hiện một thuật toán xếp hạng, AllegSkill, cho Python 3.

Đây là những gì toán học trông giống như:

văn bản thay thế

Không, thực sự.

Đây là những gì tôi đã viết:

t = (µw-µl)/c  # those are used in
e = ε/c        # multiple places.
σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5

Tôi thực sự nghĩ rằng thật đáng tiếc khi Python 3 không chấp nhận hoặc ²là tên biến.

>>> √ = lambda x: x**.5
  File "<stdin>", line 1
    √ = lambda x: x**.5
      ^
SyntaxError: invalid character in identifier

Tôi ra khỏi tâm trí của tôi? Tôi có nên dùng đến phiên bản chỉ ASCII không? Tại sao? Không phải phiên bản ASCII duy nhất ở trên sẽ khó xác nhận tính tương đương với các công thức?

Nhắc bạn, tôi hiểu một số glyphs Unicode trông rất giống nhau và một số như (hoặc đó là ▗▖) hoặc ╦ chỉ không thể có ý nghĩa gì trong mã viết. Tuy nhiên, đây không phải là trường hợp của Toán học hoặc glyphs mũi tên.


Theo yêu cầu, phiên bản duy nhất của ASCII sẽ là một cái gì đó dọc theo dòng:

winner_sigma_new = ( winner_sigma ** 2 *
                    ( 1 -
                     ( winner_sigma ** 2 -
                       general_uncertainty ** 2
                     ) * Wwin(t,e)
                    ) + dynamics ** 2
                   )**.5

... Mỗi bước của thuật toán.


58
Điều đó thật điên rồ, hoàn toàn không thể đọc được và tuyệt vời đến không ngờ.
Dominique McDonnell


3
Tôi thấy một điều rất tốt là Python không chấp nhận các phép toán số học dưới dạng các biến. Dấu căn bậc hai nên biểu thị hoạt động lấy căn bậc hai, và không nên là biến.
David Thornley

4
@David, không có sự phân biệt như vậy trong Python. Thật vậy, sqrt = lambda x: x**.5có cho tôi một chức năng (chính xác hơn là có thể gọi được) : sqrt(2) => 1.41421356237.
badp

4
Đầu raStream.🚽;

Câu trả lời:


54

Tôi cảm thấy mạnh mẽ rằng chỉ cần thay thế σbằng shoặc sigmasẽ là ngu ngốc, giáp với chết não.

Lợi ích tiềm năng là gì? Được rồi để xem …

  • Nó cải thiện khả năng đọc? Không, không phải trong một chút. Nếu đó là như vậy, công thức ban đầu chắc chắn cũng đã sử dụng các chữ cái Latinh.

  • Nó có cải thiện khả năng viết không? Trong cái nhìn đầu tiên, có. Nhưng về thứ hai, không. Bởi vì công thức này sẽ không bao giờ thay đổi (ừm, không bao giờ là). Thông thường sẽ không cần phải thay đổi mã, cũng như không mở rộng nó bằng các biến này. Vì vậy, khả năng ghi là - chỉ điều này một lần - không phải là một vấn đề.

Cá nhân, tôi nghĩ rằng ngôn ngữ lập trình có một lợi thế so với các công thức toán học: bạn có thể sử dụng các định danh biểu cảm, có ý nghĩa. Trong toán học, điều này thường không xảy ra, vì vậy chúng tôi sử dụng các biến một chữ cái, đôi khi biến chúng thành tiếng Hy Lạp.

Nhưng tiếng Hy Lạp không phải là vấn đề. Các định danh không mô tả, một chữ cái là.

Vì vậy, hãy giữ nguyên ký hiệu ban đầu, nếu ngôn ngữ lập trình không hỗ trợ Unicode trong các mã định danh, do đó không có rào cản kỹ thuật. Hoặc sử dụng định danh có ý nghĩa. Đừng chỉ thay thế glyphs Hy Lạp bằng glyphs Latin. Hoặc tiếng Ả Rập, hoặc tiếng Hindi.


3
Một số công cụ không thể đọc các ký tự unicode, mặc dù ngôn ngữ lập trình hỗ trợ việc sử dụng chúng. Tôi sẽ không gọi đó là một quyết định chết não khi sử dụng tên biến không phải là unicode và điều này vẫn đúng 2,5 năm sau bài đăng của bạn.
Gary S. Weaver

44
@Gary, Một số công cụ không thể đọc Unicode Unicode - vì vậy hãy thay đổi các công cụ, chúng thật tào lao. Xin lỗi, đó là năm 2013 và tôi không có thiện cảm và thậm chí ít kiên nhẫn hơn đối với các công cụ như vậy. Không ngừng phục vụ cho các công cụ bị lỗi ngăn cản tiến trình.
Konrad Rudolph

3
@KonradRudolph Quan điểm của tôi là một số công cụ không và không thể hỗ trợ Unicode vì bất kỳ lý do gì, vì vậy "thay đổi công cụ" không phải lúc nào cũng là câu trả lời đúng. Tôi đồng ý rằng Unicode là tốt và các công cụ nên hiểu nó, nhưng đó không phải lúc nào cũng là một lựa chọn.

3
@ John Tôi duy trì rằng, thay đổi các công cụ, đó là một câu trả lời thích hợp. Ví dụ của bạn đặc biệt minh họa một trường hợp như vậy: Các .propertiestệp Java là tầm thường để phân tích cú pháp. Nếu bạn thực sự làm việc với một chuỗi công cụ, được hỗ trợ bởi .propertiescác tệp, không hỗ trợ Unicode, thì hoàn toàn hợp lý để loại bỏ chuỗi công cụ đã nói (và tự thay thế nó, tìm một giải pháp thay thế, hoặc trong trường hợp xấu nhất, hãy ủy thác ). Tất nhiên điều này không áp dụng cho các hệ thống cũ. Nhưng đối với các hệ thống cũ, không có sự cân nhắc nào cho các hoạt động tốt nhất từng được áp dụng.
Konrad Rudolph

8
Các vấn đề "trao đổi" mà bạn nói đến dường như chủ yếu là vấn đề của các nhà phát triển Java và Windows. Hầu hết thế giới Linux được chuẩn hóa trên UTF-8 hơn một thập kỷ trước. Đó chắc chắn là một vấn đề về toolchain. Ngừng sử dụng các công cụ xấu.
người làm giàu giàu có

33

Cá nhân, tôi ghét phải xem mã nơi tôi phải đưa lên bản đồ nhân vật để gõ lại. Mặc dù unicode rất khớp với những gì trong thuật toán, nhưng nó thực sự gây tổn hại cho khả năng đọc và khả năng chỉnh sửa. Một số biên tập viên thậm chí có thể không có phông chữ hỗ trợ ký tự đó.

Điều gì về một sự thay thế và chỉ cần lên đầu //µ = uvà viết mọi thứ trong ascii?


14
Nhân tiện, đừng cho rằng tất cả các bàn phím đều phơi bày các khóa mã hóa tiêu chuẩn một cách thoải mái. Bố cục bàn phím của tôi cần ba phím để gõ {}(không thành công trong ttys btw) và hoàn toàn thiếu `~... làm thế nào để bất kỳ tập lệnh Bash nào không yêu cầu tôi sử dụng bản đồ ký tự, nếu tôi không sử dụng sơ đồ tùy chỉnh? :)
badp

4
Tôi đã cài đặt một bàn phím tiếng Hy Lạp cùng với bàn phím gốc và có thể chuyển đổi giữa các bàn phím bằng một lần nhấn phím. Điều này rất hữu ích khi nói về toán học trên IM / email ... và tôi đã nghĩ đến việc sử dụng nó trong các kịch bản python.
liori

18
Ừ Chỉ thay thế các chữ cái Hy Lạp bằng chữ thường? Không đạt được bất cứ điều gì. Sử dụng tên biến có ý nghĩa hoặc gắn với tên từ tờ giấy. Không có lý do để sáng tạo.
Konrad Rudolph

12
Chỉ cần không trộn lẫn giữa và μ ...
endolith

4
Các trình soạn thảo hợp lý có các phương thức nhập hợp lý cho Unicode, giúp dễ dàng chỉnh sửa mã như thế này. Ví dụ, Emacs hỗ trợ (trong số những thứ khác) TeXrfc1345. TeXchỉ là những gì nó nghe như; nó cho phép bạn gõ \sigmacho σ\tocho . rfc1345cung cấp cho bạn một số kết hợp như &s*cho σ&->cho . Theo nguyên tắc thông thường, tôi không lo lắng về việc hỗ trợ các lập trình viên sử dụng các trình soạn thảo có khả năng kém hơn Emacs.
Tikhon Jelvis

31

Đối số này cho rằng bạn không có vấn đề gì với việc gõ unicodes cũng như không đọc các chữ cái Hy Lạp

Đây là đối số: bạn muốn pi hay circle_ratio?

Trong trường hợp này, tôi thích pi hơn tròn_ratio vì tôi đã học về pi từ khi còn học tiểu học và tôi có thể hy vọng định nghĩa về pi đã ăn sâu vào mọi lập trình viên đáng muối của mình. Vì vậy, tôi sẽ không nhớ gõ π để có nghĩa là circle_ratio.

Tuy nhiên, những gì về

winner_sigma_new = ( winner_sigma ** 2 *
                    ( 1 -
                     ( winner_sigma ** 2 -
                       general_uncertainty ** 2
                     ) * Wwin(t,e)
                    ) + dynamics ** 2
                   )**.5

hoặc là

σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5

Đối với tôi, cả hai phiên bản đều mờ đục như nhau, giống như pihoặc πlà, ngoại trừ tôi không học công thức này ở trường tiểu học. winner_sigmaWwinkhông có nghĩa gì với tôi, hoặc với bất kỳ ai khác đang đọc mã, và sử dụng σwkhông làm cho nó không tốt hơn.

Vì vậy, sử dụng tên mô tả, ví dụ total_score, winning_ratiovv sẽ tăng khả năng đọc tốt hơn nhiều so với sử dụng tên ascii chỉ phát âm các chữ cái Hy Lạp . Vấn đề không phải là tôi không thể đọc các chữ cái Hy Lạp, nhưng tôi không thể liên kết các ký tự (tiếng Hy Lạp hay không) với "ý nghĩa" của biến.

Bạn chắc chắn hiểu vấn đề chính mình khi bạn nhận xét : You should have seen the paper. It's just eight pages.... Vấn đề là nếu bạn căn cứ vào việc đặt tên biến của mình trên một tờ giấy, trong đó chọn tên một chữ cái cho đơn giản hơn là dễ đọc (bất kể chúng là tiếng Hy Lạp), thì mọi người sẽ phải đọc bài báo để có thể liên kết các chữ cái với "Ý nghĩa"; điều này có nghĩa là bạn đang đặt một rào cản nhân tạo để mọi người có thể hiểu mã của bạn và đó luôn là một điều xấu.

Ngay cả khi bạn sống trong một thế giới chỉ có ASCII, cả hai a * b / 2alpha * beta / 2là một kết xuất mờ đục như nhau height * base / 2, công thức diện tích tam giác. Khả năng không đọc được của việc sử dụng các biến đơn ký tự tăng theo cấp số nhân khi công thức phát triển phức tạp và công thức AllegSkill chắc chắn không phải là một công thức tầm thường.

Biến một chữ cái chỉ được chấp nhận như một bộ đếm vòng lặp đơn giản, cho dù chúng là chữ cái đơn của Hy Lạp hay chữ cái đơn ascii, tôi không quan tâm; không có biến nào khác chỉ nên bao gồm một chữ cái duy nhất. Tôi không quan tâm nếu bạn sử dụng các chữ cái Hy Lạp cho tên của mình, nhưng khi bạn sử dụng chúng, hãy đảm bảo tôi có thể liên kết các tên đó với một "ý nghĩa" mà không cần phải đọc một tờ giấy tùy ý ở nơi nào khác.

Khi ở trường, tôi chắc chắn sẽ không thấy các biểu thức toán học sử dụng các ký hiệu như: +, -, ×,, đối với các phép tính cơ bản và () sẽ là hàm căn bậc hai. Sau khi tôi tốt nghiệp lớp, tôi không ngại việc thêm một biểu tượng mới sáng bóng: để tích hợp. Lưu ý xu hướng, đây là tất cả các nhà khai thác. Các toán tử được sử dụng nhiều hơn so với các tên biến, nhưng chúng thường ít được sử dụng lại cho một ý nghĩa hoàn toàn khác (trong trường hợp các nhà toán học sử dụng lại các toán tử, nghĩa mới thường vẫn giữ một số tính chất cơ bản của nghĩa cũ; khi sử dụng lại tên biến).

Tóm lại, không, không tệ khi sử dụng các ký tự Unicode cho các tên biến; tuy nhiên, thật tệ khi sử dụng tên một chữ cái cho tên biến và được phép sử dụng tên Unicode không phải là giấy phép sử dụng tên biến chữ cái đơn.


9
Thành thật mà nói, các công thức ở đây không có ý nghĩa hơn ngay cả khi tôi đã sử dụng error_on_measured_skill_with_99th_percent_confidencethay vì sigma.
badp

4
@badp: Tên dài! = Tên hay. Tuy nhiên, có những lúc bạn không thể chọn một tên hay (ví dụ: khi bạn chỉ hiểu công thức, nhưng không hiểu đầy đủ từng phần của công thức làm gì (có mức độ hiểu hoàn toàn khác nhau)), sau đó, trong trường hợp đó, cách thay thế tốt thứ hai là che đậy mông của bạn bằng một số bình luận (tốt hơn là gửi chúng ra một tờ giấy bên ngoài). Thêm một từ điển dữ liệu giải thích những gì tên biến đề cập đến // σw = skill level measurement error, v.v.
Lie Ryan

1
@badp: Thành thật mà nói, chỉ với thông tin đó, sigma đó đề cập đến một số yếu tố mờ nhạt (có thể nói), nó cho tôi hiểu rõ hơn một chút về công thức so với những gì sigma gây ấn tượng với tôi. Khi công thức khó hiểu để bắt đầu, bạn không muốn thêm nhiều điều không hay trên đầu trang.
Lie Ryan

2
Đúng. Điều này. Thật không may, tôi đã bỏ qua nó khi viết câu trả lời của tôi.
Konrad Rudolph

3
Vâng, bất cứ ai làm việc trong bất cứ điều gì liên quan đến thống kê biết rằng σ có nghĩa là "lệch chuẩn". Đó là một biểu tượng tiêu chuẩn rất nổi tiếng trong lĩnh vực đó.
TRiG

14

Bạn có hiểu mã không? Có ai khác cần đọc nó không? Nếu vậy, không có vấn đề gì.

Cá nhân tôi rất vui khi thấy mặt sau của mã nguồn chỉ ASCII.


Làm xong. (Tôi giả sử dòng cuối cùng là bạn yêu cầu xem phiên bản mã chỉ ASCII?) [] (Http: // ~)
badp

4
@badp: Không, đó là tôi yêu cầu được xem cái chết của mã chỉ ASCII.

cho đến khi bạn bắt đầu thấy điều gì xảy ra với các tệp nguồn Unicode khi hạ cánh trên hệ thống Windows 1252 ...

1
@ Thorbjørn: nếu chúng chứa BOM, thì hy vọng sẽ không có gì xảy ra.

9

Vâng, bạn ra khỏi tâm trí của bạn. Cá nhân tôi sẽ tham khảo số giấy và số công thức trong một bình luận, và viết mọi thứ bằng ASCII thẳng. Sau đó, bất cứ ai quan tâm sẽ có thể tương quan mã và công thức.


5
Thật khó cho tôi để đảm bảo mã và công thức khớp ở vị trí đầu tiên ...
badp

10
@Paul: may mắn thay, Unicode đã> 10 tuổi nên sự phản đối đã được quan tâm. Và mặc dù không có người chiến thắng rõ ràng giữa các UTF khác nhau, nhưng đó không phải là vấn đề: không có gì phải là một. Nói chúng cách nhau là chuyện nhỏ đối với phần mềm.
Konrad Rudolph

1
@ Konrad: Ý tôi là 10 năm kể từ nay . Một số lượng lớn các chương trình vẫn không hỗ trợ Unicode. Hơn nữa, tôi không đồng ý với khẳng định của bạn - Việc viết một thói quen đảo ngược chung chung xử lý cả 3 utfs không phải là chuyện nhỏ. Cần phải có một người chiến thắng rõ ràng. Không có ý nghĩa trong việc hỗ trợ 3 UTF khác nhau (chúng ta không xem xét các trang mã khác vẫn còn tồn tại).
Paul Nathan

3
@Paul: Bạn có thường xuyên phải viết một "thói quen đảo ngược chung chung" không? Ba UTF phục vụ các mục đích khác nhau và tôi không nghĩ bạn sẽ đạt được ước muốn hợp nhất.
Dean Harding

7
@Paul: vít các chương trình này. Có đủ các biên tập viên giỏi biết cách xử lý Unicode. Nếu một số biên tập viên vẫn chưa có trong bandwagon, hãy để lựa chọn kinh tế quan tâm đến nó. Và như Dean nói, các UTF phục vụ các mục đích khác nhau. Đó là một điều tốt mà họ tồn tại. Và tôi không thấy điểm trong nhiều thói quen đảo ngược của bạn. Bạn chỉ cần viết nó một lần (bỏ qua các hình thức chuẩn hóa ngay bây giờ): cho các điểm mã, không phải cho các UTF riêng lẻ.
Konrad Rudolph

5

Tôi muốn nói rằng sử dụng tên biến Unicode là một ý tưởng tồi vì hai lý do:

  1. Họ là một Pita để gõ.

  2. Chúng thường trông gần giống như chữ cái tiếng Anh. Đây là cùng một lý do tại sao tôi ghét nhìn thấy các chữ cái Hy Lạp trong ký hiệu toán học. Hãy thử nói với rho ngoài p. Nó không dễ.


6
Phụ thuộc vào những gì bạn đang sử dụng để gõ chúng.
endolith

4

Trong trường hợp này, một công thức toán học phức tạp, tôi muốn nói là đi cho nó.

Tôi có thể nói trong 20 năm tôi chưa bao giờ phải viết mã gì đó phức tạp và các chữ cái Hy Lạp này giữ cho nó gần với toán học gốc. Nếu bạn không thể hiểu nó, bạn không nên duy trì nó.

Nói rằng, nếu tôi phải duy trì bản mã và trong mã tiêu chuẩn không có thật mà bạn để lại cho tôi, tôi sẽ tìm ra nơi bạn sống ...


3
  • Pro: có vẻ tốt
  • Con: các ký tự unicode và do đó toàn bộ ý nghĩa có thể bị mất trong chuỗi công cụ (trình soạn thảo, trình định dạng mã, kiểm soát phiên bản, trình biên dịch cũ hơn)

Làm thế nào lớn là rủi ro cho bạn? Liệu lợi ích có cao hơn rủi ro?


2
Chuỗi công cụ? Chuỗi công cụ gì?
badp

2
Trình chỉnh sửa, định dạng mã, kiểm soát phiên bản, trình biên dịch cũ hơn. Mỗi công cụ và người chạm vào tập tin của bạn. Tôi đã có kinh nghiệm tồi tệ với các công cụ gây rối với các tệp unicode, YMMV.
LennyProgrammer

2

Thỉnh thoảng trong một tương lai không xa, tất cả chúng ta sẽ sử dụng các trình soạn thảo văn bản / IDE / trình duyệt web để dễ dàng viết văn bản chỉnh sửa bao gồm các ký tự Hy Lạp cổ điển, v.v. (Hoặc có thể tất cả chúng ta đã học cách sử dụng "ẩn" này "chức năng trong các công cụ chúng tôi hiện đang sử dụng ...)

Nhưng cho đến khi điều đó xảy ra, nhiều ký tự không phải mã ASCII trong mã nguồn chương trình sẽ khó xử lý đối với nhiều lập trình viên, và do đó, sẽ là một ý tưởng tồi nếu bạn đang viết các ứng dụng cần được người khác duy trì.

(Ngẫu nhiên lý do bạn có thể có ký tự Hy Lạp nhưng không có dấu hiệu căn bậc hai trong định danh Python là đơn giản Các nhân vật Hy Lạp được phân loại là Unicode Letters, nhưng dấu hiệu căn bậc hai là một tổ chức phi chữ;. Thấy http://www.python.org / dev / peps / pep-3131 / )


Tôi nghĩ rằng sẽ là một ý tưởng tuyệt vời để tạo một IME có thể dịch các ký tự cho những người dùng không thể nhập trực tiếp chúng.
AndrejaKo

Vâng, ít nhiều khi chúng tôi đã chuyển sang DVORAK. :(
badp

1
@AndrejaKo Linux có IME chấp nhận các lệnh kiểu LaTeX - nghĩa là bạn nhập \muvà insterts µ.
badp

@badp Cảm ơn rất nhiều! Lần sau tôi sẽ thử!
AndrejaKo

Emacs hỗ trợ một loạt các phương thức nhập liệu đẹp giúp việc nhập các ký hiệu Unicode dễ dàng. (Bao gồm một TeX là thứ tôi sử dụng.) Emacs hầu như không có tương lai. (Tất nhiên tuyệt vời.)
Tikhon Jelvis

2

Bạn đã không nói ngôn ngữ / trình biên dịch nào bạn đang sử dụng, nhưng thông thường quy tắc cho các tên biến là chúng phải bắt đầu bằng một ký tự chữ cái hoặc dấu gạch dưới và chỉ chứa các chữ số và dấu gạch dưới. Unicode sẽ không được coi là chữ và số, vì nó là ký hiệu toán học thay vì chữ cái. Tuy nhiên σ có thể là (vì nó nằm trong bảng chữ cái Hy Lạp) và á có thể sẽ được coi là chữ và số.


1

Tôi đã đăng cùng loại câu hỏi trên StackOverflow

Tôi chắc chắn nghĩ rằng nó đáng để sử dụng unicode trong các bài toán nặng liên quan đến toán học, bởi vì nó có thể đọc công thức trực tiếp, điều này là không thể với ASCII đơn giản.

Hãy tưởng tượng một phiên gỡ lỗi: tất nhiên bạn luôn có thể viết tay công thức mã được cho là để tính toán xem nó có đúng không. Nhưng chín mươi phần trăm thời gian, bạn sẽ không bận tâm và lỗi có thể ẩn trong một thời gian dài. Và không ai sẵn sàng xem xét công thức ASCII 7 dòng đơn giản này. Tất nhiên, sử dụng unicode không tốt bằng công thức kết xuất tex, nhưng nó tốt hơn nhiều.

Việc thay thế sử dụng tên mô tả dài là không khả thi vì trong toán học, nếu số nhận dạng không ngắn, công thức sẽ còn phức tạp hơn (tại sao bạn nghĩ rằng mọi người, vào khoảng thế kỷ XVIII, đã bắt đầu thay thế "cộng" bằng "+" và "trừ" bởi "-"?).

Cá nhân, tôi cũng sẽ sử dụng một số đăng ký và siêu ký tự (tôi chỉ sao chép-dán chúng từ trang này ). Ví dụ: (đã cho phép python làm định danh)

√ = math.sqrt #function alias
c² = c**2
σʷ² = σʷ**2
γ² = γ**2
σ′ʷ = √(σʷ² * (1 - (σʷ²/c²)*Wʷⁱⁿ(t, e)) + γ²)

Nơi tôi đã sử dụng các siêu ký tự vì không có chỉ số tương đương trong unicode. .

Một điều cuối cùng, tôi nghĩ cuộc trò chuyện này về việc sử dụng ký tự không phải ASCII chủ yếu là sai lệch, bởi vì nhiều lập trình viên không bao giờ xử lý "các ký hiệu toán học chuyên sâu về công thức". Vì vậy, họ nghĩ rằng câu hỏi này không quan trọng lắm, vì họ chưa bao giờ trải qua một phần mã đáng kể nào sẽ yêu cầu sử dụng mã định danh không phải ASCII. Nếu bạn là một trong số họ (và tôi cho đến gần đây), hãy xem xét điều này: giả sử rằng chữ "a" không phải là một phần của ASCII. Sau đó, bạn sẽ có một ý tưởng khá hay về vấn đề không có chữ cái Hy Lạp, bảng con, siêu ký tự khi tính toán các công thức toán học không tầm thường.


0

Có phải mã này chỉ dành cho dự án cá nhân của bạn? Nếu vậy, đi hạt, sử dụng bất cứ điều gì bạn muốn.

Là mã này có nghĩa là cho người khác sử dụng? tức là, và ứng dụng nguồn mở nào đó? Nếu vậy, bạn có thể chỉ yêu cầu sự cố vì các lập trình viên khác nhau sử dụng các trình soạn thảo khác nhau và bạn không thể chắc chắn tất cả các trình soạn thảo sẽ hỗ trợ unicode chính xác. Thêm vào đó, không phải tất cả các shell lệnh sẽ hiển thị chính xác khi tệp mã nguồn là type'd / cat'd và bạn có thể gặp sự cố nếu bạn cần hiển thị nó trong html.


0

Cá nhân tôi có động lực để coi các ngôn ngữ lập trình là một công cụ cho các nhà toán học trong bối cảnh này, vì tôi không thực sự sử dụng toán học trông giống như trong cuộc sống của tôi. : D Và chắc chắn, tại sao không sử dụng ɛ hoặc hoặc bất cứ điều gì - trong bối cảnh đó, nó thực sự dễ đọc hơn .

(Mặc dù, tôi phải nói rằng, sở thích của tôi sẽ là hỗ trợ các số siêu ký tự như các cuộc gọi phương thức trực tiếp, không phải tên biến. Ví dụ: 2² = 2 ** 2 = 4, v.v.)


-2

Cái quái gì σ, là gì W, là gì ε, cvà những gì là γ?
Bạn phải đặt tên cho các biến của mình theo cách giải thích mục đích của chúng là gì.
Cá nhân tôi đã đánh bại bất cứ ai rời khỏi Unicode hoặc phiên bản ASCII để tôi duy trì, mặc dù phiên bản ASCII tốt hơn.

Thế nào là ác là kêu gọi các biến σhoặc shoặc sigmahoặc valuehoặc var1, bởi vì đây không truyền đạt bất kỳ thông tin.

Giả sử bạn viết mã bằng tiếng Anh (vì tôi tin rằng bạn nên ở bất cứ nơi nào bạn đến), ASCII nên đủ để cung cấp cho các biến của bạn các tên có ý nghĩa, do đó không có nhu cầu thực sự về Unicode.


2
Điều gì sẽ xảy ra nếu anh ta thực hiện một bản sao / dán giấy và sau đó biến nó thành một phần của mã nguồn của mình dưới dạng một nhận xét mặc dù có một tên biến ký tự?
Brian

19
Rất nhiều tên biến này có ý nghĩa mạnh mẽ đối với những người quen thuộc với miền vấn đề. Để một người nào đó quen thuộc với tên miền, tên tiếng Anh có thể ít có thể đọc được hơn những cái tên như sigma hoặc rho.
dsimcha

3
Tôi sợ một cái gì đó rank_error_with_99_pct_confidencequá dài cho việc này và thực sự sẽ không làm cho các công thức trở nên dễ hiểu hơn. AllegSkill / TrueSkill gọi những sigma đó, vì vậy tôi tin rằng tôi hoàn toàn chấp nhận được để duy trì tên miền cụ thể mà họ có.
badp

3
@badp: tên hay là ngắn gọn và mô tả; nhưng nó không phải được mô tả đầy đủ. Đối với sigma của bạn, nó là hoàn toàn tốt để sử dụng rank_errorvà đặt chi tiết thêm về độ tin cậy 99 phần trăm trong tài liệu / nhận xét ở đâu đó.
Lie Ryan

1
@dsimcha: Tôi nghĩ rằng những người quen thuộc với một tên miền cụ thể hiếm hơn đáng kể so với những người chưa bao giờ nghe về nó. Và tôi nghĩ rằng những người quen thuộc với tên miền sẽ có thể đối phó với các tên tiếng Anh đơn giản, trong khi những người không quen thuộc với nó sẽ hoàn toàn không thể hiểu chuyện gì đang xảy ra nếu mọi thứ bị che khuất bởi các biến một chữ cái Hy Lạp.
back2dos

-2

Đối với tên biến có nguồn gốc toán học nổi tiếng, điều này là hoàn toàn chấp nhận được - thậm chí được ưa thích. Nhưng nếu bạn từng mong muốn phân phối mã, bạn nên đặt các giá trị này trong một mô-đun, lớp, v.v. để IDE tự động hoàn thành có thể xử lý "gõ" các ký tự lạ.

Sử dụng √ hoặc ² trong một định danh - không quá nhiều.

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.