Ngôn ngữ lập trình nên phân biệt chữ hoa chữ thường, chữ hoa. Mọi người có thể điều chỉnh vấn đề này rất dễ dàng: họ chỉ cần nhớ làm việc chủ yếu ở dạng chữ thường và để ý các mã định danh hỗn hợp hoặc mũ toàn phần trong các API hiện có.
Nó từng có vẻ rõ ràng để làm cho ngôn ngữ không phân biệt chữ hoa chữ thường. Điều này là do chữ thường không có sẵn trên tất cả các hệ thống máy tính và các thiết bị I / O của chúng (bàn phím, máy in và thiết bị hiển thị). Việc triển khai ngôn ngữ lập trình phải chấp nhận các chương trình được viết bằng chữ in hoa, vì chỉ có thể hiển thị hoặc in. Và cho rằng họ phải là trường hợp nhạy cảm, bởi vì chấp nhận chữ hoa và là trường hợp nhạy cảm tại các phương tiện cùng một lúc để từ chối chữ thường. Chữ thường là thứ mà các lập trình viên muốn, nhưng không phải lúc nào cũng có. Không ai thực sự muốn làm việc với các chương trình hét trong trường hợp cao; nó chỉ là một giới hạn phần cứng.
Trong một thời gian, nó thậm chí còn phổ biến trong trường hợp gấp trong các thiết bị đầu cuối. Nếu một thiết bị đầu cuối chỉ có thể hiển thị chữ hoa, nhưng bạn phải đăng nhập vào hệ thống máy tính hỗ trợ chữ hoa và chữ thường, thì thiết bị đầu cuối sẽ gấp chữ thường thành chữ hoa. Nghĩ rằng điều này đã rất lâu rồi? "Giống như Apple II, Apple II Plus không có chức năng viết thường." (http: // en Tin nhắn được viết trong tất cả các mũ là phổ biến trên bảng tin trong những ngày đó. Chức năng này vẫn được tìm thấy trong các hệ điều hành giống Unix, như nhân Linux. Ví dụ, nhập stty olcuc
dấu nhắc shell của bạn.Kỷ luật dòng tty Unix có thể ánh xạ chữ thường thành chữ hoa trên đầu ra và nó có thể ánh xạ chữ hoa thành chữ thường ở đầu vào. Điều này cho phép bạn làm việc trong ngôn ngữ lập trình chữ thường, trên một thiết bị đầu cuối không có chữ thường.
Không phân biệt chữ hoa chữ thường là một khái niệm lỗi thời từ thời đại máy tính đã qua, không hoạt động tốt trong thế giới hiện đại của điện toán quốc tế. Bạn có mở rộng nó sang các ngôn ngữ khác không? Thế còn tiếng Pháp: bạn có coi và è là tương đương không? Hay tiếng Nhật? Bạn có coi hiragana và katakana chỉ là trường hợp, vì vậy ァ và ふ ぁ là cùng một định danh? Hỗ trợ cho sự điên rồ như vậy sẽ làm phức tạp đáng kể máy phân tích từ vựng của bạn, sẽ phải có các bản đồ tương đương trường hợp cho toàn bộ không gian Unicode.
Lưu ý rằng toán học là trường hợp nhạy cảm. Ví dụ, sigma chữ hoa có thể biểu thị tổng, trong khi sigma chữ thường biểu thị một cái gì đó khác, như độ lệch chuẩn. Điều này có thể xảy ra trong cùng một công thức mà không tạo ra bất kỳ khó khăn. (Ngôn ngữ lập trình có làm cho và σ tương đương không?)
Chính tả tiếng Anh là nhạy cảm. Ví dụ, nhiều danh từ thích hợp tương ứng với danh từ thông thường hoặc thậm chí các phần khác của lời nói. "May" là một động từ, nhưng "May" là một tháng, hoặc tên của một người phụ nữ. Hơn nữa, nếu một từ viết tắt hoặc viết tắt được viết bằng chữ thường, nó có thể gây nhầm lẫn. SAT là viết tắt của bài kiểm tra năng khiếu kinh viện, trong khi "sat" là phân từ quá khứ của "ngồi". Người thông minh chú ý đến chi tiết và viết hoa đúng cách.
Về cơ bản, bất kỳ ngôn ngữ lập trình mới nào được tạo ra từ năm 1985 không phân biệt chữ hoa chữ thường là CHO NHỮNG AI VẪN KHÔNG NÊN TRONG E-MAILS VÀ BÀI VIẾT KHÔNG CÓ MỘT THỨ HAI.
Điều gì xảy ra nếu ngôn ngữ của bạn từng được sử dụng làm mục tiêu tạo mã để dịch mã sang ngôn ngữ khác và ngôn ngữ khác có phân biệt chữ hoa chữ thường không? Bạn sẽ phải bằng cách nào đó biến đổi tất cả các tên để nắm bắt sự khác biệt. (Vì vậy, để khẳng định rằng đây không phải là một quyết định kỹ thuật và chỉ có vấn đề về sở thích cảm xúc của đối tượng mục tiêu, là vô lý.)
Xem xét các vấn đề gây phiền nhiễu do xử lý tình huống trong Windows, khi các tệp được nhập từ hệ điều hành khác. Đó là một vấn đề kỹ thuật. Các hệ thống tệp phân biệt chữ hoa chữ thường có vấn đề với dữ liệu nước ngoài mà các tệp không phân biệt chữ hoa chữ thường không có.
Lisp thông thường đã đạt được cách tiếp cận lý tưởng: tên biểu tượng là trường hợp nhạy cảm, nhưng khi đọc mã thông báo, chúng được gấp lại thành chữ hoa. Điều này có nghĩa rằng các thẻ foo
, fOO
, FOO
và Foo
tất cả biểu thị cùng một biểu tượng: các biểu tượng có tên được lưu giữ như những chuỗi ký tự "FOO"
. Hơn nữa, hành vi này chỉ là cấu hình bảng đọc mặc định. Người đọc có thể gấp chữ cái viết hoa, viết thường, đảo ngược trường hợp hoặc bảo quản nó. Hai lựa chọn cuối cùng làm phát sinh một phương ngữ phân biệt chữ hoa chữ thường. Bằng cách này, người dùng có sự linh hoạt tối đa.