Apakah ada istilah untuk "benar", "salah", dan mengganti boolean? [Tutup]

23

Katakanlah saya mencoba untuk menggambarkan kode saya dalam pertemuan teknis.

Pertama, saya atur boolean foobarketrue

dan

Kedua, saya mengatur boolean foobarkefalse

sepertinya agak bertele-tele. Jika foobardimatikan, saya mungkin bisa mengatakan,

Ketiga, saya beralih foobar

Melalui implikasi di sini, Anda tahu itu boolean. Jadi seharusnya saya tidak bisa:

Keempat, I Truthify foobar

dan

Kelima, Saya Memalsukan foobar

Yang juga akan melalui implikasi, beri tahu pendengar saya bahwa kita berurusan dengan variabel boolean? Apakah ada terminologi yang tepat untuk ini? Terima kasih.

Akiva
sumber
16
"Saya mengatur foobar ke true / false" tidak terlalu bertele-tele, dan jelas itu bool. "Toggle" cukup jelas untuk pendengar, IMO.
Filip Milovanović
8
"Pertama, saya mengatur boolean foobar menjadi true dan, Kedua, saya mengatur foobar boolean ke false". Tidak bisakah Anda baru saja menjadikannya salah? ;)
David Arno
2
Saya selalu berpikir itu disebut membalik, tetapi ternyata itulah istilah untuk bit , bukan bools
e_i_pi
16
Saya telah membaca memalsukan sebagai setara dengan membuat pemalsuan dan tidak menetapkan nilai ke false.
CodesInChaos
6
Apakah Anda yakin Anda akan mendeskripsikan kode Anda pada tingkat rendah? Tentunya jika seseorang menginginkan deskripsi tingkat rendah, mereka baru saja membaca kodenya. Saya tidak mengatakan tidak pernah ada alasan untuk menggunakan terminologi seperti itu, tetapi saya berharap itu menjadi langka.
Dukeling

Jawaban:

52
  • Menetapkan nilai ke benar adalah pengaturan itu
  • Menetapkannya ke false berarti menghapusnya .
  • Mengubah nilai saat ini adalah Toggling itu.

Anda juga dapat menggunakan "setel ke true" dan "setel ke false" , tentu saja.

pengguna253751
sumber
10
Saya tidak berkorelasi menetapkan nilai ke false sebagai membersihkannya. Membersihkan bagi saya berarti: tidak benar atau salah.
Pieter B
49
@PieterB: Yah, itu tergantung pada konteksnya; jika kita berbicara tentang bendera Boolean, maka "pengaturan" dan "membersihkan" bendera adalah terminologi yang cukup umum.
Filip Milovanović
7
@ FilipMilovanović Dalam konteks variabel, pengaturan variabel berarti memberikan nilai ke variabel tersebut, dalam konteks variabel boolean nilai ini bisa benar atau salah. Akan aneh mengatakan: hei, mengatur variabel berarti memberikan nilai padanya ... kecuali ketika itu adalah variabel boolean maka sebenarnya ketika kita mengaturnya, berarti kita menetapkan nilai: "true"
Pieter B
6
@PieterB Jika itu bisa "tidak benar atau salah", maka itu bukan boolean biner (yang adalah apa yang kebanyakan orang pikirkan ketika mereka mendengar kata), tetapi hal ternary benar / salah / tidak pasti. Yang sedang berkata, terminologi yang ditetapkan / jelas berasal dari bendera. Tidak semua variabel boolean adalah flag, jadi terminologinya tidak sesuai untuk banyak kasus penggunaan.
Cubic
7
@PieterB: Yeas - akan aneh untuk mengatakan "set the bool variabel" dan mengharapkan semua orang untuk memahaminya berarti "set to true"; tetapi jika itu merepresentasikan sebuah flag, maka "set the flag" adalah sesuatu yang umum digunakan dan berarti set nilai bool yang merepresentasikan flag menjadi true (atau bit yang mewakili flag ke 1). (PS Tetapi jawaban oleh immibis tidak memperhitungkannya.)
Filip Milovanović
66

Jika memungkinkan, alih-alih berfokus pada nilai boolean, Anda harus mencoba menggambarkan apa yang diwakilinya. Beberapa contoh:

  • sebuah layanan? start / stop alih-alih dimulai = benar / salah
  • efek khusus dalam mesin game? hidup / mati
  • sinyal listrik? set / reset
  • ...

Dengan cara ini Anda akan berbicara dalam istilah yang lebih alami. Dan dengan demikian dalam pertemuan Anda, alih-alih "membenarkan foobar lalu memalsukannya" Anda hanya akan "memulai foobar lalu hentikan" (jika memang foobar adalah layanan, memang).

Ketika Anda benar-benar perlu berbicara tentang nilai boolean, Anda bisa menggunakan "set / reset", atau "set to true" dan "set to false". "Toggle" terdengar cukup bagus di semua konteks.

Dan jika Anda bekerja di toko boolean (apa pun artinya) maka Anda mungkin perlu lebih banyak kata daripada apa yang ditawarkan kamus. Dalam hal itu, mengklarifikasi dan memalsukan hanyalah bagian dari microspeak Anda .


sumber
16
Harus setuju ... boolean adalah implementasi yang memodelkan apa yang Anda BENAR-BENAR bicarakan ... jadi bicarakan hal itu!
Maybe_Factor
2
Saya tidak suka berbicara tentang menetapkan boolean sebagai mewujudkannya. Karena cara saya bekerja dengan variabel mereka mulai tidak diinisialisasi, yang berarti pada dasarnya Anda belum dapat menggunakannya dan tindakan pengaturan variabel (benar atau salah) adalah inisialisasi. Untuk pengaturan selalu berarti benar akan menyebabkan kebingungan.
Pieter B
1
Juga, penggunaan terminologi ini diterjemahkan menjadi kode juga; Seringkali - tidak selalu tentu saja - lebih baik menggunakan dua nilai enum daripada tipe boolean bawaan; signal = HighVoltageatau signal = ActiveIMHO jauh lebih jelas daripada signal = true.
Cubic
Perhatikan bahwa properti / variabel boolean yang dinamai dengan benar akan selalu segera mengungkapkan nama yang harus Anda gunakan untuk nilai. Pikirkan isStarted, isActive, isCaseSensitive, mockConnection, ... @PieterB: Saya sebagian setuju dengan Anda. "Set the boolean" tidak secara inheren berarti mengaturnya menjadi true. Namun, "Atur isActivebendera" dapat secara wajar diartikan sebagai pengaturan itu menjadi benar.
Flater
1
@Cubic: Saya tidak setuju. Terlepas ekspansi di masa depan, enum biner tampaknya tidak perlu. signal = truememang tidak jelas, tetapi jika Anda akan menggunakan signal = Activemaka Anda mungkin juga menggunakannya isSignalActive = true. Perhatikan bahwa ini berlaku terutama untuk deskriptor yang jelas-jelas eksklusif dan saling melengkapi. Aktif / Tidak Aktif sesuai dengan tagihan. HighVoltage tidak, karena "bukan tegangan tinggi" bisa berarti "tegangan rendah", atau bisa berarti "tegangan rendah atau sedang". Dalam kasus terakhir, argumen boolean jelas tidak berlaku. Dalam yang pertama, itu.
Flater
2

Saya suka "set" / "clear", tapi hati-hati dengan ambiguitas dalam ungkapan Anda. Seperti yang ditunjukkan Filip , "atur variabel bool" dapat diartikan dengan menuliskan beberapa nilai pada variabel. Tapi "mengatur bendera" lebih jelas.


Terminologi terkait: mengubah bilangan bulat 0 / non-nol menjadi nilai 0/1 disebut "booleanizing" .

Jika Anda benar-benar menggunakan nilai 0/1 sebagai bilangan bulat (bukan sebagai benar / salah bool), Anda mungkin ingin menggunakan kata itu. Kalau tidak, itu mungkin hanya akan muncul jika Anda berbicara tentang biaya operasi yang harus dilakukan oleh kompiler. (Atau jika Anda melakukan vektorisasi secara manual dengan SIMD dibandingkan untuk menghasilkan bit semua-nol / semua-satu di setiap elemen vektor).

Dalam C dan C ++, a boolsecara implisit dapat mengkonversi kembali menjadi integer sebagai 0 atau 1, dan pada implementasi normal booldisimpan sebagai nilai satu-byte yang bernilai 0 atau 1 (bukan sembarang nilai bukan nol). Memungkinkan efisien a && b, tetapi dalam praktiknya banyak kompiler C telah melewatkan optimasi .


bool booleanize(int a) { return a; }   // C++

Fungsi itu mengkompilasi ke beberapa instruksi (tidak termasuk ret) pada sebagian besar arsitektur. (MIPS menjadi pengecualian yang menarik, memiliki instruksi pembanding-ke-register alih-alih register bendera / kode-kondisi terpisah). pada Godbolt compiler explorer untuk x86-64, MIPS, dan ARM thumb , kita dapat melihat versi x86-64 adalah:

    test    edi, edi    # set flags according to   a & a
    setne   al
    ret                 # return value in AL, the low byte of RAX

Maaf contoh apa booleanisasi ini mendapat sedikit besar / di luar topik!

Peter Cordes
sumber
0

Saya pikir "set Foobarto true" dan "set Foobarto false" adalah langsung dan ringkas. Saya tidak percaya ada kata-kata individual untuk frasa-frasa itu, dan ketika Anda perlu teknis dan tepat, kadang-kadang lebih baik rela sedikit bertele-tele daripada mengambil risiko membingungkan audiens Anda.

Kevin - Pasang kembali Monica
sumber
-1

"Pengaturan" adalah cara yang benar untuk menggambarkan tindakan menetapkan nilai ke variabel. Jika Anda ingin bertele-tele tentang hal itu, Anda bisa menyebutnya "penugasan", tetapi "set" sangat lazim. Bahkan, itu Java idiomatik untuk menulis setFoobar()(dan getFoobar()) metode untuk melakukan tugas. C # membawanya selangkah lebih jauh dengan getdan setdefinisi properti.

Berkenaan dengan poin kedua Anda tentang menggunakan "benar" dan "memalsukan" untuk "melalui implikasi, beri tahu pendengar saya bahwa kita berurusan dengan variabel boolean", Anda sudah memberi tahu pendengar Anda bahwa variabelnya adalah Boolean ketika Anda mengatakan:

Saya mengatur Foobaruntuktrue

Harrison Paine
sumber
1
'Standar' di Jawa untuk metode yang mengembalikan properti boolean sebenarnyaisFoobar()
JimmyJames
-1

Penegasan atau Pencabutan Kembali juga dapat digunakan, paling sering ketika berbicara tentang proposisi daripada variabel sederhana, misalnya dalam Prolog. Biasanya ada istilah yang berbeda tergantung apa yang boolean wakili, daripada satu istilah umum untuk semua bahasa yang memiliki nilai boolean (set / hapus flag atau bit, aktifkan / nonaktifkan perangkat atau mode, nyatakan / tarik kembali proposisi, mungkin lebih).

Pete Kirkham
sumber
Saya setuju dengan menegaskan , kecuali bahwa untuk seorang programmer yang sudah berarti sesuatu yang berbeda (misalnya melempar pengecualian jika ungkapan itu belum benar).
ChrisW
@ ChrisW Saya tidak tahu apa yang Anda pikirkan orang yang memprogram Prolog jika bukan pemrogram, tapi itu digunakan di Prolog pada tahun 1972, jadi makro C yang mengubah makna yang ada.
Pete Kirkham
-1

Untuk mengubah nilai boolean dari truemenjadi false, atau sebaliknya disebut meniadakan .

Untuk menetapkan nilai boolean menjadi falsedikatakan memalsukan boolean. Saya akan mengerti Anda jika Anda mengatakan "benar", namun, ini kedengarannya tidak benar. Saya tidak yakin apa kata kerjanya untuk membuat sesuatu true, jadi itu mungkin benar.

Saya akan menunggu seseorang dengan jawaban yang lebih baik untuk datang sebelum Anda mulai menggunakan "benarkan" mau tak mau.

Pak Wumpus IV
sumber
1
Masalahnya di sini adalah bahwa Anda dapat menggunakan istilah negating , falsifying , tapi saya akan menggunakan toggle dan reset / clear masing-masing. Bahkan sampai membaca pertanyaan ini, saya tidak pernah menemukan kesalahan . Mungkin saya hanya menjadi tua dan saya tidak up to date dengan istilah trendi tahun ini :)
David Arno
7
'falsify' memiliki arti dalam bahasa Inggris yang tidak benar-benar selaras dengan penggunaan Anda untuk variabel boolean; Jika Anda mengatakan kepada saya bahwa Anda "memalsukan" variabel Anda, saya mungkin mengerti apa yang ingin Anda katakan, tetapi pertama-tama saya akan menguraikannya ketika Anda mencoba memberi tahu saya bahwa Anda berbohong tentang nilai-nilai yang mereka miliki.
Cubic
1
IMO kebalikan dari "pemalsuan" akan "menegaskan", dalam bahasa Inggris, tetapi itu ("menegaskan") memberikan kesan yang salah kepada seorang programmer.
ChrisW
-3

Sebuah boolean adalah setara dengan SPST (tiang tunggal, tunggal melempar) saklar listrik: satu putaran itu pada atau off .

Nicholas Carey
sumber
2
"Aktifkan donevariabel" atau " errorVariabel dimatikan" keduanya terdengar agak mati, setidaknya bagi saya. Alternatif yang disarankan oleh jawaban lain tampaknya lebih lazim - "Atur donevariabel / bool / flag [menjadi true]", atau " errorBendera dikosongkan."
Sebi