ສິ່ງທີ່ນັກວິທະຍາສາດຄອມພີວເຕີທຸກຄົນຄວນຮູ້ກ່ຽວກັບເລກເລກລອຍຕົວ (1991) [pdf]
ຄຳເຫັນ
Mewayz Team
Editorial Team
ການໃສ່ກັບດັກຄວາມຊັດເຈນທີ່ເບິ່ງບໍ່ເຫັນ: ເປັນຫຍັງນັກຂຽນໂປຣແກຣມທຸກຄົນຕ້ອງການ PDF 1991 ນີ້
ໃນໂລກທີ່ຊັດເຈນ, ມີເຫດຜົນຂອງວິທະຍາສາດຄອມພີວເຕີ, ເອກະສານບໍ່ຫຼາຍປານໃດໄດ້ມີຜົນກະທົບພື້ນຖານອັນຍາວນານຂອງເຈ້ຍປີ 1991 ຂອງ David Goldberg, "ສິ່ງທີ່ນັກວິທະຍາສາດຄອມພິວເຕີທຸກຄົນຄວນຮູ້ກ່ຽວກັບ Floating-Point Arithmetic." ຫຼາຍກວ່າສາມທົດສະວັດຕໍ່ມາ, ຫົວຂໍ້ຂອງມັນຍັງເປັນການຮຽກຮ້ອງໃຫ້ແຈ່ມແຈ້ງ, ການເຕືອນໄພ, ແລະສ່ວນຫນຶ່ງທີ່ສໍາຄັນຂອງປັນຍາ. ສໍາລັບໃຜທີ່ຂຽນລະຫັດທີ່ກ່ຽວຂ້ອງກັບຕົວເລກທີ່ແທ້ຈິງ - ຈາກການຈໍາລອງທາງວິທະຍາສາດແລະລະບົບການເງິນໄປສູ່ເຄື່ອງຈັກເກມແລະການວິເຄາະຂໍ້ມູນ - ການລະເລີຍບົດຮຽນຂອງມັນແມ່ນການຕັດສິນຂອງສານທີ່ອ່ອນໂຍນ, ລາຄາແພງ, ແລະມັກຈະສັບສົນ. ໃນຍຸກທີ່ການດຳເນີນທຸລະກິດນັບມື້ນັບເພີ່ມຂຶ້ນດ້ວຍຊອບແວທີ່ເຊື່ອມຕໍ່ກັນຢ່າງສັບສົນ, ການເຂົ້າໃຈພື້ນຖານຂອງການຄິດໄລ່ເລກບໍ່ແມ່ນທາງວິຊາການ; ມັນເປັນຄວາມຈໍາເປັນໃນການດໍາເນີນງານ. ນີ້ແມ່ນຄວາມຈິງໂດຍສະເພາະເມື່ອນຳໃຊ້ OS ທຸລະກິດແບບໂມດູລາເຊັ່ນ Mewayz, ບ່ອນທີ່ຄວາມສົມບູນຂອງຂໍ້ມູນໃນທົ່ວໂມດູນຕ່າງໆ - ຈາກການວິເຄາະໄປຫາການຮຽກເກັບເງິນອັດຕະໂນມັດ - ຂຶ້ນກັບການຄິດໄລ່ທີ່ຄາດເດົາໄດ້, ເຊື່ອຖືໄດ້.
ບັນຫາຫຼັກ: ທ່ານບໍ່ສາມາດສະແດງ Infinity ໃນ Finite Bits
ບັນຫາພື້ນຖານແມ່ນງ່າຍດາຍແຕ່ເລິກເຊິ່ງ. ຄອມພິວເຕີຂອງພວກເຮົາມີຈໍານວນຫນ່ວຍຄວາມຈໍາທີ່ຈໍາກັດ, ແຕ່ພວກເຮົາມັກຈະຕ້ອງເຮັດວຽກກັບຈໍານວນຕົວຈິງຢ່າງຕໍ່ເນື່ອງທີ່ບໍ່ມີຂອບເຂດ (ເຊັ່ນ π ຫຼື 0.1). ເລກເລກຄະນິດຈຸດລອຍແມ່ນການປະນີປະນອມມາດຕະຖານ, ເປັນລະບົບທີ່ສະຫຼາດເພື່ອສະແດງຕົວເລກທີ່ຫຼາກຫຼາຍທີ່ມີຄວາມແມ່ນຍໍາທີ່ຈຳກັດ. ຢ່າງໃດກໍ່ຕາມ, ການປະນີປະນອມນີ້ຫມາຍຄວາມວ່າຕົວເລກສ່ວນໃຫຍ່ແມ່ນປະມານ, ບໍ່ໄດ້ເກັບຮັກສາໄວ້ແນ່ນອນ. ເອກະສານຂອງ Goldberg ອະທິບາຍຢ່າງລະມັດລະວັງກ່ຽວກັບມາດຕະຖານ IEEE 754, ເຊິ່ງໄດ້ນໍາເອົາຄວາມສອດຄ່ອງທີ່ຈໍາເປັນຫຼາຍຕໍ່ກັບຄວາມວຸ່ນວາຍນີ້. ລາວໃຫ້ລາຍລະອຽດວ່າຕົວເລກຖືກເຂົ້າລະຫັດແນວໃດເປັນເຄື່ອງໝາຍ, ເລກກຳລັງ, ແລະສ່ວນເສດສ່ວນ, ການສ້າງພູມສັນຖານທີ່ຄາດເດົາໄດ້ແຕ່ແປກປະຫຼາດຂອງຄຸນຄ່າທີ່ເປັນຕົວແທນ, ພຶດຕິກຳການໝູນວຽນ ແລະ ຫົວໜ່ວຍພິເສດເຊັ່ນ: NaN (ບໍ່ແມ່ນຕົວເລກ) ແລະ infinity. ສໍາລັບນັກພັດທະນາທີ່ສ້າງແບບຈໍາລອງທາງດ້ານການເງິນໃນ Mewayz, ຄວາມຜິດພາດຮອບວຽນທີ່ເບິ່ງຄືວ່າກ້ອງຈຸລະທັດສາມາດເຮັດໃຫ້ເກີດຄວາມແຕກຕ່າງກັນຢ່າງຫຼວງຫຼາຍໃນບົດລາຍງານຫຼືທຸລະກໍາ, ທໍາລາຍຄວາມໄວ້ວາງໃຈໃນລະບົບທັງຫມົດ.
ພຶດຕິກຳທີ່ໜ້າປະຫລາດໃຈ ແລະຄວາມລົ້ມເຫຼວຂອງໄພພິບັດ
ເຈ້ຍແມ່ນມີຊື່ສຽງສໍາລັບການສະແດງໃຫ້ເຫັນເຖິງຄວາມຜິດພາດ counterintuitive ທີ່ທໍາລາຍສົມມຸດຕິຖານທາງຄະນິດສາດ. ຕົວຢ່າງ, ເນື່ອງຈາກການຮອບ, ການເພີ່ມຈຸດທີ່ເລື່ອນໄດ້ບໍ່ແມ່ນການເຊື່ອມໂຍງ; `(a + b) + c` ບໍ່ສະເຫມີເທົ່າກັບ `a + (b + c)`. ນີ້ສາມາດນໍາໄປສູ່ຜົນໄດ້ຮັບທີ່ບໍ່ກໍານົດໃນຄໍານວນຂະຫນານ. ການລົບຕົວເລກເກືອບເທົ່າກັນສາມາດນໍາໄປສູ່ການຍົກເລີກໄພພິບັດ, ບ່ອນທີ່ຕົວເລກທີ່ສໍາຄັນຫາຍໄປ, ເຊິ່ງເຮັດໃຫ້ຄວາມຜິດພາດຂອງການຮອບເປັນສ່ວນໃຫຍ່. ບາງທີບົດຮຽນທີ່ມີຊື່ສຽງທີ່ສຸດແມ່ນຄວາມຕ້ອງການທີ່ຈະບໍ່ເຄີຍສົມທຽບຕົວເລກຈຸດລອຍສໍາລັບຄວາມສະເຫມີພາບທີ່ແນ່ນອນ (`==`) ແຕ່ແທນທີ່ຈະກວດເບິ່ງວ່າຄວາມແຕກຕ່າງຂອງພວກມັນຢູ່ໃນຄວາມທົນທານເລັກນ້ອຍ. ເຫຼົ່ານີ້ແມ່ນບໍ່ພຽງແຕ່ quirks ທິດສະດີ. ພວກເຂົາເຈົ້າໄດ້ເຮັດໃຫ້ເກີດໄພພິບັດໃນໂລກທີ່ແທ້ຈິງ, ຈາກການລະເບີດຂອງລູກ Ariane 5 ໄປສູ່ຄວາມບໍ່ຖືກຕ້ອງໃນລະບົບລູກສອນໄຟ Patriot ຕົ້ນ. ໃນສະພາບການທາງທຸລະກິດ, ຄວາມຜິດພາດດັ່ງກ່າວໃນການຄິດໄລ່ສິນຄ້າຄົງຄັງ, ສູດການຄິດໄລ່ລາຄາ, ຫຼືຕົວຊີ້ວັດປະສິດທິພາບສາມາດນໍາໄປສູ່ການສໍ້ລາດບັງຫຼວງຂອງຂໍ້ມູນແບບງຽບໆ, ເຮັດໃຫ້ແພລດຟອມທີ່ເຂັ້ມແຂງເຊັ່ນ Mewayz ມີຄວາມສໍາຄັນສໍາລັບການບັງຄັບໃຊ້ການກວດສອບຂໍ້ມູນ ແລະການກວດສອບຄວາມສອດຄ່ອງໃນທົ່ວໂມດູນ.
"ການບີບຕົວເລກທີ່ແທ້ຈິງຫຼາຍອັນເປັນຈຳນວນບໍ່ຈຳກັດເປັນຈຳນວນຈຳກັດ ຮຽກຮ້ອງໃຫ້ມີການເປັນຕົວແທນໂດຍປະມານ."
Key Takeaways ສໍາລັບນັກພັດທະນາທີ່ທັນສະໄຫມ
ເອກະສານຂອງ Goldberg ບໍ່ພຽງແຕ່ໃຫ້ຄຳເຕືອນເທົ່ານັ້ນ ແຕ່ຍັງເປັນການແນະນຳຕົວຈິງ. ຫຼັກການເອົາໃຈໃສ່ແມ່ນເພື່ອປູກຝັງ "ສະຕິຕົວເລກ"—ຄວາມຮັບຮູ້ຄົງທີ່ວ່າຕົວເລກຈຸດລອຍເປັນການປະມານ. ແນວຄຶດຄືແນວນີ້ຄວນແຈ້ງການເລືອກຈາກການເລືອກໂຄງສ້າງຂໍ້ມູນໄປຫາການອອກແບບສູດການຄິດໄລ່. ວຽກງານຂອງລາວໄດ້ເນັ້ນໃສ່ວ່າເປັນຫຍັງການໃຊ້ 'double' (64-bit) ເກືອບຈະມັກເປັນ 'float' (32-bit) ສໍາລັບການເຮັດວຽກທີ່ມີຄວາມແມ່ນຍໍາແລະສໍາຄັນ, ແລະເປັນຫຍັງ algorithms ບາງຢ່າງຈຶ່ງມີຄວາມຫມັ້ນຄົງໃນຕົວເລກໃນຂະນະທີ່ຄົນອື່ນບໍ່ແມ່ນ. ເມື່ອອອກແບບ ຫຼືລວມໂມດູນພາຍໃນສະພາບແວດລ້ອມ Mewayz ບໍ່ວ່າຈະເປັນຕົວຊີ້ບອກການຮຽນຮູ້ຂອງເຄື່ອງຈັກ ຫຼືຕົວຈັດຕາຕະລາງຊັບພະຍາກອນ—ສະຕິນີ້ຮັບປະກັນວ່າການປະຕິບັດຕົວເລກພື້ນຖານຖືກຈັດການກັບຄວາມເຄົາລົບທີ່ເຂົາເຈົ້າຕ້ອງການ, ປ້ອງກັນບໍ່ໃຫ້ເກີດຄວາມຜິດພາດທີ່ຍາກທີ່ຈະຕິດຕາມຫາສາເຫດຫຼັກຂອງພວກມັນໄດ້.
ນັກຂຽນໂປລແກລມທຸກຄົນຄວນຄຸ້ນເຄີຍກັບແນວຄວາມຄິດທີ່ສຳຄັນເຫຼົ່ານີ້ຈາກເຈ້ຍ:
- ຄວາມຜິດພາດໃນການຮອບ: ຄວາມບໍ່ຖືກຕ້ອງທີ່ຫຼີກເວັ້ນໄດ້ຈາກການປັບຕົວເລກເຂົ້າໄປໃນຄ່າຕົວແທນທີ່ໃກ້ທີ່ສຸດ.
- Guard Digits: ຕົວເລກພິເສດທີ່ໃຊ້ໃນການຄິດໄລ່ລະດັບປານກາງເພື່ອຫຼຸດຜ່ອນຄວາມຜິດພາດໃນການຮອບ.
- ມາດຕະຖານ IEEE 754: ແຜນຜັງທົ່ວໄປສໍາລັບການຄິດໄລ່ແບບເລື່ອນ, ກໍານົດຮູບແບບ, ກົດລະບຽບການຮອບ ແລະຂໍ້ຍົກເວັ້ນ.
- NaN ແລະ Infinity: ຄຸນຄ່າພິເສດທີ່ອະນຸຍາດໃຫ້ການປະຕິບັດເພື່ອແຜ່ຂະຫຍາຍຄວາມຜິດພາດໄດ້ຢ່າງສະຫງ່າງາມແທນທີ່ຈະຂັດໄດ້.
- ຄວາມໝັ້ນຄົງຂອງຕົວເລກ: ຄຸນສົມບັດຂອງລະບົບວິທີຄວບຄຸມການຂະຫຍາຍທີ່ຜິດພາດໃນໄລຍະການເຮັດວຽກຫຼາຍອັນ.
ເອກະສານທີ່ມີຊີວິດສຳລັບໂລກດິຈິຕອນ
ໃນຂະນະທີ່ຂຽນໃນປີ 1991, ຄວາມກ່ຽວຂ້ອງຂອງເຈ້ຍໄດ້ເພີ່ມຂຶ້ນເທົ່ານັ້ນ. ຫຼັກການຂອງ IEEE 754 ເນັ້ນໃສ່ທຸກໆ CPU, GPU ແລະພາສາການຂຽນໂປລແກລມທີ່ທັນສະໄຫມ. ໃນຂະນະທີ່ພວກເຮົາກ້າວເຂົ້າສູ່ເຂດແດນເຊັ່ນ AI, ການວິເຄາະຂໍ້ມູນອັນໃຫຍ່ຫຼວງ, ແລະການຈໍາລອງລະບົບທີ່ຊັບຊ້ອນ, ຄວາມແມ່ນຍໍາຂອງການຄິດໄລ່ຂອງພວກເຮົາກາຍເປັນສິ່ງສໍາຄັນຫຼາຍຂຶ້ນ. ສໍາລັບທີມງານທີ່ໃຊ້ລະບົບປະຕິບັດການແບບໂມດູລາເຊັ່ນ Mewayz ເພື່ອປັບປຸງເຫດຜົນທາງທຸລະກິດຂອງເຂົາເຈົ້າ, ການຝັງຄວາມເຂັ້ມງວດຂອງຕົວເລກນີ້ເຂົ້າໄປໃນໂມດູນທີ່ກໍາຫນົດເອງຂອງເຂົາເຈົ້າແມ່ນການປະຕິບັດທີ່ດີທີ່ສຸດທີ່ປ້ອງກັນການແບ່ງປະເພດຂອງແມງໄມ້ໃນລະດັບພື້ນຖານທີ່ສຸດ. ຜົນງານຂອງ Goldberg ແມ່ນຫຼາຍກ່ວາເຈ້ຍ; ມັນເປັນສ່ວນຖາວອນຂອງພື້ນຖານຂອງວິສະວະກໍາຊອບແວທີ່ເຊື່ອຖືໄດ້. ການບໍ່ສົນໃຈມັນແມ່ນການສ້າງດິນຊາຍ, ມີຄວາມສ່ຽງຕໍ່ຄວາມສົມບູນຂອງໂຄງສ້າງດິຈິຕອນທັງຫມົດ, ບໍ່ວ່າຈະເປັນ script ງ່າຍດາຍຫຼືລະບົບທຸລະກິດລະດັບວິສາຫະກິດ.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →