Đã có tranh chấp khi phần mềm xác định giới tính bằng boolean chưa? [đóng cửa]


8

Tôi nhớ rằng trong lớp lập trình đầu tiên của chúng tôi với Java, trong khi giải thích các kiểu dữ liệu, điều sau đây đã xảy ra (kinda):

Giáo sư : Vậy, bạn sẽ chọn loại dữ liệu nào nếu chương trình của bạn cần lưu trữ giới tính của người dùng?

Ai đó : Làm thế nào về một boolean? Bạn biết đấy, đúng cho nam và sai cho nữ.

Giáo sư : Chắc chắn, điều đó có thể làm việc, nhưng một số người có thể do dự về điều đó. Đã có những tranh chấp về việc gọi đàn ông là "đúng" và phụ nữ là "sai" trong quá khứ ...

* cười *

Cuối cùng anh ấy khuyên chúng tôi nên xem xét các ký tự (như 'm''f') mặc dù booleans sẽ ổn.

Tôi đã cố gắng tìm kiếm một chút nếu có bất kỳ loại mục lịch sử nào liên quan đến tranh chấp lớn dựa trên thực tiễn lập trình này mà không gặp may mắn.

Tôi không hỏi nên sử dụng loại dữ liệu nào cho giới cũng như sử dụng booleans tốt hay không. Tôi đang hỏi rằng, trong lịch sử , đã có tranh chấp về việc sử dụng booleans để xác định giới tính trong lập trình vì hành vi rõ ràng là "sai" (tôi không nói sai - tôi không quan tâm đến điều đó) gọi một người phụ nữ là "sai" như giáo sư dường như đề nghị.

Tìm kiếm xung quanh các câu hỏi liên quan, kết quả chỉ xảy ra về hiệu quả phần mềm.


3
Như đã viết, nó trông giống như một cách chơi chữ hơn là một mô tả nghiêm túc về xung đột lập trình lịch sử ...
Mason Wheeler

8
Một vấn đề với việc sử dụng boolean thay vì một loại enum để mô hình hóa các hiện tượng trong thế giới thực - người ta có thể muốn mô hình chuyển đổi giới tính, nhiễm sắc thể XXY, v.v. Tôi đã thấy người chuyển giới (2 loại) trong cơ sở dữ liệu thế giới thực là giá trị giới tính cho phép. Tôi không biết nếu đó là kết quả của một cuộc tranh chấp.
psr

8
@PhillipBurch: bạn vẫn có thể sử dụng boolean. Chỉ cần sử dụng "FileNotFound" cho giới tính thứ ba.
kevin cline

2
@YannisRizos: Tôi thấy khó chịu vì, là đàn ông, bạn sẽ đóng một câu hỏi quan trọng đối với những người không xác định là nam hay nữ, và điều đó cũng có thể quan trọng với phụ nữ, chỉ vì bạn không Chăm sóc nó. Đặc biệt là nó đã được nâng cấp.
DistantEcho

3
@Niphra Nếu bạn không đồng ý với việc đóng cửa, vui lòng gửi câu hỏi về nó trên trang Meta của chúng tôi .
yannis

Câu trả lời:


5

Đây là một vấn đề văn hóa hơn là kỹ thuật và thể hiện quan điểm của xã hội về giới tính.

Nếu bạn học ở một quốc gia Hồi giáo hoặc Trung Quốc, thì tôi có thể hiểu tại sao điều này sẽ là một vấn đề.

Vì vậy, câu trả lời là không, tôi chưa bao giờ nghe về một vấn đề ngớ ngẩn như vậy trong lập trình.


1
Để thêm trọng lượng, tôi làm việc với dữ liệu từ NHS ở Anh, đây là dữ liệu quốc gia bao trùm toàn bộ dân số. Giới tính được lưu trữ dưới dạng int, 1 cho nam hoặc 2 cho nữ sẽ đưa ra các câu hỏi đạo đức tương tự. Ở đây một int được sử dụng trên Boolean vì các giá trị khác được sử dụng (ví dụ: không xác định, người chuyển giới, v.v.) nhưng không ngần ngại về việc sử dụng hệ thống mã hóa để cải thiện hiệu quả. Bạn sẽ không ngần ngại về việc mã hóa các giá trị khác, vậy tại sao lại ngần ngại ở đây?
Matt

23

Không bao giờ sử dụng boolean chỉ vì chỉ có hai giá trị. Trừ khi ý nghĩa của đúng và sai sẽ rõ ràng, hãy sử dụng một phép liệt kê nếu có, và các hằng chuỗi hoặc ký hiệu hoặc bất cứ điều gì nếu không. Và tất cả quá thường xuyên, ban đầu có hai giá trị và sau đó có ba giá trị. Hoặc bốn.


1
Lời khuyên rất tốt, cảm ơn bạn, nhưng không giải quyết câu hỏi.
Omega

1
những sự thật lịch sử nào về tranh chấp khi sử dụng booleans cho giới do hành vi đạo đức rõ ràng là "sai" khi gọi một người phụ nữ là "sai"? (Tôi nhận ra rằng tiêu đề không bao gồm phần đạo đức, nhưng nội dung của câu hỏi tập trung vào nó)
Omega

1
Thực tế đã có tranh chấp khi sử dụng booleans do thực tế những người không xác định là nữ hay nam cảm thấy bị bỏ qua hoặc từ chối - họ buộc phải chọn giới tính (xem google +). Việc sử dụng đúng / sai ít là một vấn đề.
DistantEcho

Xem xét rằng hầu hết các ngôn ngữ lập trình đều sử dụng một từ đầy đủ để lưu trữ boolean và "giới tính" được quyết định không phải là một tài sản đúng / sai (về mặt ngữ nghĩa), thì bạn hoàn toàn đúng. Có một giới tính "sai" hoàn toàn không phải là một vấn đề xã hội, nó hoàn toàn không đúng về mặt ngữ nghĩa và bạn thậm chí không đạt được lợi thế về hiệu suất.
Scott Whitlock

-4

Bên cạnh lý do được đưa ra bởi Kevinn, sử dụng boolean trong trường hợp này buộc sử dụng tên biến và thuộc tính như isMale (hoặc isFirting), thay vì giới tính.

Đối với tôi, một tên trung lập như "giới tính" tốt hơn nhiều so với "isblabla" như một tên tài sả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.