Tại sao nhiều ngôn ngữ lập trình lại phân biệt chữ hoa và chữ thường?

Cho em hỏi là ngoài chức năng tránh khan hiếm tên cho biến thì việc phân biệt hoa thường có còn lợi ích gì quan trọng không mà nhiều ngôn ngữ kể cả các ngôn ngữ khá mới cũng có chức năng này?, tại sao không bỏ nó đi giống như Pascal, VB?. Đây là tình năng theo em là khá khó chịu, và thiên về gây khó khăn cho dev nhiều hơn :blush:

2 Likes

Có một bài của bác @hungho dịch nói về vấn đề này đấy. Hôm trước thấy mà chưa kịp đọc :frowning:

1 Like

Em đọc rồi và vẫn muốn tham khảo ý kiến mọi người trên này :blush:, google search cũng không thấy người ta thảo luận về vấn đề này kĩ càng lắm, hay là em search không đúng kiểu nhỉ :blush:

Thực ra thì Đạt không bao giờ đặt tên biến dạng:

COUNTcount trong cùng một hàm. Vì như thế dễ gây nhầm lẫn.

Nhưng Đạt sẽ đặt tên biến COUNTcount ở các vị trí khác nhau, khác file, khác hàm, khác scope. Và cực kỳ tránh việc đặt trùng tên kể cả các khác vị trí. COUNT dùng cho macro hoặc const. count dùng cho local variable.

Thế nên, theo Đạt thì, việc phân biệt hoa thường không xấu. Cái mấu chốt là cách dev sử dụng như thế nào.

ANW, sẽ tìm và đọc lại cái blog post đó :slight_smile:

4 Likes

Anh có dùng chức năng này nhiều không, nếu như mà tự nhiên C không phân biệt hoa thường nữa thì có gây rắc rối nhiều cho anh trong trường hợp này không ạ :blush:

1 Like

Luôn luôn dùng chứ. Thực ra nếu không phân biệt hoa thường thì cũng khá rắc rối. Vì khi đó mình không thể sử dụng cách code như thế này nữa rồi.

3 Likes

Mình thấy hoa thường có lợi ấy chứ. :v
Như mình có cách troll hay dùng khi code bài giùm mất thằng bạn là đặt tên biến toàn 1 chữ rồi in hoa tùm lum loạn xà ngầu:
int a,A, aa, Aa, aA; double f,F,ff,fF,Ff;

=)))))))))))))))))))

4 Likes

Em đọc bài này rồi mới đăng lên đây đấy chứ, vì thấy ông Jeff cũng không thích vụ phân biệt hoa thường lắm (giống mình :smile:) nên mới thắc mắc vì một người có “số má” như Jeff mà cũng không thích tính năng này thì tại sao nhiều ngôn ngữ vẫn để tính năng này (kể cả những ngôn ngữ khá mới) :imp:

Có thể do ảnh hưởng từ C với .NET . Như Pascal sẽ tốt hơn :slight_smile:

1 Like

WOW WOW, vấn đề này được mọi người thảo luận rất sôi nổi ở nước ngoài chứ không phải như em nghĩ, chẳng qua là em search không đúng thôi, việc phân biệt hoa thường này họ gọi là case - sentivity (hôm nay vào thẳng Blog Coding Hornor mới biết cái này :blush: )

Đọc một số comment thì thấy nhiều người bảo là do máy tính bản chất là đã phân biệt hoa thường ( :+1: hợp lý), do đó nếu ngôn ngữ không phân biệt hoa thường có thể làm ảnh hưởng đến hiệu suất compiler.
Có người nói là code sạch hơn, dễ hiểu hơn , có người nói là để search cho dễ hay gì đó (khá là khó dịch :blush: )

Nhưng Jeff có vẻ không đồng ý với những ý kiến đó lắm. Mọi người muốn tìm hiểu thêm thì xem ở 2 link dưới nhá. (đọc được ý kiến nào khác với mấy cái trên thì comment lên đây cho em tham khảo với nhá) :smile:

http://discourse.codinghorror.com/t/the-case-for-case-insensitivity/948
http://stackoverflow.com/questions/503218/why-are-many-languages-case-sensitive

1 Like

Riêng Đạt thì vẫn ủng hộ phân biệt hoa thường vì Đạt thấy viễn cảnh mà không phân biệt hoa thường khá là dễ gây nhầm lẫn.

Tuy nhiên Đạt chưa làm ngôn ngữ nào không phân biệt hoa thường, hoặc có làm mà không để ý, nên Đạt thấy phân biệt hoa thường là một tính năng hay :smile:

Jeff có nhiều nhận định trái chiều, không phải cái nào người ta cũng đồng ý. Thế mới có cái để mà thảo luận :smile:

1 Like

:+1: Em cũng phân vân lắm, chưa biết nghiêng về ý kiến nào cả :smile: tại em học pascal, VB, trước C nên là ảnh hưởng đến thói quen code, qua C bị lỗi nhiều nên ức chế :joy:

1 Like

À ra thế, thì học ngôn ngữ mới có tư duy mới. Nhưng ban đầu có thể mình ức chế vì cái này. Nhưng suy nghĩ lại thì mình có thể tận dụng được mà?

1 Like

Thực ra mình cũng học Pascal trước nhưng khi code toàn bật Intellisense với lại đặt tên toàn chuẩn từ hồi dùng Pascal :smile:

1 Like

Em code quen kiểu đầu tiên khai báo tên theo chuẩn (pascal hoặc camel) sau đó thì các biến sau này chỉ cần gõ bình thường là IDE nó tự sửa lại (Visual Studio), giờ code C không được như thế nữa :joy:

Hiện giờ em đang dùng IDE gì? Anh nghĩ hầu hết các IDE đều hỗ trợ cái này nên việc phân biệt hoa thường với IDE không là vấn đề.

Kể cả các editor cũng có thể giúp mình mà :smile:

Em vẫn dùng code::block để học C, tất nhiên là nó vẫn gợi ý nhưng mà, tần suất ấn nút Shift với tab nhiều hơn so với trước đây nên là nhiều lúc cảm thấy mỏi ngón út :blush: (trước thì em chỉ ấn Shift khi khai báo biến lần đầu thôi)


Nhưng chắc tập nhiều thì quen thôi ạ :smile:

1 Like

Không khó khăn đâu mà lại thân thiện nữa. Kiểu như lớp thì phải viết hoa rồi. dễ dàng cho việc đọc hiểu

1 Like

Nói chung là mình không thích kiểu phân biệt hoa thường :astonished: :

1 Like

Theo mình nghĩ phân biệt hoa thường tốt đấy chứ :smile: nó giúp ta đỡ tốn thời gian suy nghĩ tên biến. Ví dụ, trong Java, muốn khai báo đối tượng String thì dùng: String string ; khai báo List thì dùng List list ;
Dễ dàng hiểu biến đó là kiểu dữ liệu gì :wink:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?