គណិតវិទ្យាសម្រាប់អ្នកសរសេរកម្មវិធី

Binary និង hex, bitwise flag, boolean logic, សំណុំ, modulo, Big-O, ការរាប់, ប្រូបាប និងធរណីមាត្រ — គណិតវិទ្យាប្រចាំថ្ងៃដែលលាក់នៅក្នុងកូដរបស់អ្នក រៀនតាមរយៈការសាងសង់ toolkit តូចមួយ។

អ្នកសរសេរកម្មវិធីភាគច្រើននឹងប្រាប់អ្នកថា ពួកគេមិនសូវប្រើគណិតវិទ្យានៅកន្លែងធ្វើការទេ ហើយបន្ទាប់មកចំណាយពេលពេញរសៀលដើម្បី debug ពណ៌ hex, ការពិនិត្យសិទ្ធិ, carousel ដែលរមូរជុំខុស, តម្លៃដែលខុសមួយសេន ឬ loop ដែលដំណើរការល្អជាមួយអ្នកប្រើ 100 នាក់ ប៉ុន្តែដួលនៅ 100,000 នាក់។ ទាំងអស់នោះគឺជាបញ្ហាគណិតវិទ្យា។ គ្រាន់តែវាមើលទៅមិនដូចគណិតវិទ្យានៅសាលា ដូច្នេះគ្មានអ្នកណាព្រមានអ្នកទេ។

ស៊េរីនេះបង្រៀនគណិតវិទ្យាដែលលេចឡើងពិតប្រាកដក្នុងការសរសេរកម្មវិធីប្រចាំថ្ងៃ ហើយបង្រៀនវាដោយប្រើកូដជំនួសឲ្យការបង្ហាញភស្តុតាង។ អ្នកនឹងឃើញថា ហេតុអ្វី 0.1 + 0.2 !== 0.3, របៀបដែលលេខតែមួយអាចរក្សាទុកសិទ្ធិបាទ/ចាស (yes/no) រាប់សិប, របៀបសម្រួល if ដែលស្មុគស្មាញដោយប្រើ De Morgan's laws, ហេតុអ្វី % ធ្វើឲ្យ carousel រមូរជុំ, មានពាក្យសម្ងាត់ប៉ុន្មានដែលអាចមានក្នុងទម្រង់មួយ និងអ្វីដែល "O(n²)" ប្រាប់អ្នកពិតប្រាកដអំពីកូដនៅពីមុខអ្នក។

ពាក់កណ្តាលដំបូងគ្របដណ្តប់អំពីរបៀបដែលកុំព្យូទ័របង្ហាញ និងផ្សំតម្លៃ៖ ប្រព័ន្ធលេខ (binary, hex), bitwise operation និង flag, boolean logic, សំណុំ, នព្វន្ត modular និងដែនកំណត់នៃ integer និងលេខ floating-point។ ពាក់កណ្តាលក្រោយគ្របដណ្តប់អំពីរបៀបដែលកូដពង្រីកខ្នាត និងរបៀបគិតអំពីឱកាស៖ ស្វ័យគុណ និង logarithm, សញ្ញា Big-O, ការរាប់ (permutation និង combination), ប្រូបាប និងចុងក្រោយ កូអរដោនេ និងធរណីមាត្រសម្រាប់ interface និង animation។

អ្នកនឹងមិនត្រឹមតែអានអំពីវាទេ។ ពេញមួយស៊េរី អ្នកសាងសង់ mathlab ដែលជា toolkit JavaScript តូចមួយដែលដំណើរការក្នុង Node.js។ ជំពូកនីមួយៗបន្ថែម module មួយ៖ ឧបករណ៍បំប្លែងពណ៌, ឧបករណ៍ពិនិត្យ permission flag, ជំនួយការសំណុំ, index របស់ carousel, ឧបករណ៍ធ្វើទ្រង់ទ្រាយលុយ, ឧបករណ៍រត់ benchmark, ឧបករណ៍គណនាលំហពាក្យសម្ងាត់, ឧបករណ៍ក្លែង collision និងជំនួយការធរណីមាត្របន្តិចបន្តួច។ នៅចុងបញ្ចប់ អ្នកមានបណ្ណាល័យដែលបានសាកល្បងដែលអ្នកសរសេរដោយខ្លួនឯង ហើយអ្នកដឹងថាគណិតវិទ្យានីមួយៗមកពីណា។

អ្នកត្រូវការភាពស្រួលជាមួយមូលដ្ឋានគ្រឹះ JavaScript — variable, function, array, loop និង import/export — ពី មូលដ្ឋានគ្រឹះ JavaScript និង TypeScript និងជាមួយ terminal ពី មូលដ្ឋានគ្រឹះ Command Line។ Bit និង Byte ក្នុង How Computers Work គឺជាការឡើងកម្តៅដ៏មានប្រយោជន៍សម្រាប់ជំពូកទី 2 និង 3។ អ្នកត្រូវការ Node.js (កំណែ LTS) និង code editor ដូចជា Visual Studio Code។ មិនតម្រូវឲ្យមានគណិតវិទ្យាលើសពីនព្វន្តនៅសាលាទេ ហើយគ្មានអ្វីត្រូវចំណាយលុយឡើយ។

Vector, matrix និង calculus ត្រូវបានទុកចោលដោយចេតនា។ ពួកវាត្រូវបានគ្របដណ្តប់ក្នុងស៊េរី Math for AI ដែលមានផែនការ ជាកន្លែងដែលពួកវាត្រូវការ។

  1. 01ហេតុអ្វីអ្នកសរសេរកម្មវិធីត្រូវការគណិតវិទ្យាគណិតវិទ្យាណាដែលលេចឡើងក្នុងកូដប្រចាំថ្ងៃ និងណាដែលមិនលេចឡើង, bug តូចៗប្រាំដែលពិតជា bug គណិតវិទ្យា និងរបៀបរៀបចំថត Node.js ឈ្មោះ mathlab ដែលយើងសាងសង់ក្នុងគ្រប់ជំពូក។
  2. 02លេខ និងប្រព័ន្ធលេខសញ្ញាណតាមទីតាំង, binary, octal និង hex ដោយដៃ និងជាមួយ toString និង parseInt, ពណ៌ hex និងហេតុអ្វី 0.1 + 0.2 មិនស្មើ 0.3 — ប្រើដើម្បីសាងសង់ឧបករណ៍បំប្លែងពណ៌ និង nearlyEqual។
  3. 03Bitwise Operation និង FlagAND, OR, XOR, NOT និង shift, bitmask, សិទ្ធិ Unix ដូចជា chmod 755, feature flag និងដែនកំណត់ 32-bit របស់ JavaScript — ប្រើដើម្បីសាងសង់ឧបករណ៍ពិនិត្យ permission flag។
  4. 04Boolean LogicTruth table, AND, OR, NOT, XOR, ច្បាប់ De Morgan, short-circuit evaluation និង early return — ប្រើដើម្បីដោះស្រាយការពិនិត្យសិទ្ធិដែលច្របូកច្របល់ និងបង្កើត logic helper សម្រាប់ mathlab។
  5. 05សំណុំ និងប្រតិបត្តិការសំណុំSet ទល់នឹង array, Set របស់ JavaScript, union, intersection, difference និង subset — ប្រើដើម្បីឆ្លើយសំណួរដូចជា "តើអ្នកណាបានចុះឈ្មោះ ប៉ុន្តែមិនបានបង់ប្រាក់?" និងបង្កើត set helper សម្រាប់ mathlab។
  6. 06នព្វន្ត ModularRemainder ទល់នឹង modulo ពិត, គណិតនាឡិកា, លេខគូ និងលេខសេស, carousel ដែលវិលជុំ, circular buffer, hash bucket និង check digit របស់ Luhn — ប្រើដើម្បីបង្កើត mod ដែលមានសុវត្ថិភាព និងឧបករណ៍ផ្ទៀងផ្ទាត់លេខកាតសម្រាប់ mathlab។
  7. 07Integer, Overflow និងភាពជាក់លាក់ហេតុអ្វី 0.1 + 0.2 មិនស្មើ 0.3, អ្វីកើតឡើងពេលលេខធំពេកសម្រាប់ប្រអប់របស់វា, BigInt ជួយយ៉ាងដូចម្តេច និងហេតុអ្វីបានជាគួររក្សាទុកលុយជាសេនទាំងមូល — សាងសង់ module money របស់ mathlab។
  8. 08Function, ការលូតលាស់ និង LogarithmFunction ជាម៉ាស៊ីនពី input ទៅ output, របៀបដែលការលូតលាស់ linear, quadratic និង exponential ដាច់ចេញពីគ្នា, ហេតុអ្វី logarithm មានន័យថា 'តើខ្ញុំអាចកាត់ពាក់កណ្តាលបានប៉ុន្មានដង' និងរបៀបដែល binary search រកធាតុមួយក្នុងមួយលានក្នុងប្រហែល 20 ជំហាន។
  9. 09សញ្ញា Big-Oមគ្គុទ្ទេសក៍ភាសាសាមញ្ញអំពី Big-O៖ របៀបអាន O(1), O(log n), O(n), O(n log n), O(n^2) និង O(2^n) ពីកូដ របៀបវាស់ដោយ performance.now និងរបៀបដែល Set.has និង binary search យកឈ្នះ linear scan។
  10. 10ការរាប់៖ Permutation និង Combinationរាប់លទ្ធភាពដោយមិនចាំបាច់រាយបញ្ជី — rule of product, factorial, permutation, combination, ចំនួនលទ្ធភាពនៃ password និង PIN និង pagination — បន្ទាប់មកបន្ថែម module រាប់ទៅក្នុង mathlab ដែលប្រើ BigInt សម្រាប់ចម្លើយធំៗ។
  11. 11មូលដ្ឋានគ្រឹះប្រូបាបវាស់ភាពអាចកើតឡើងជាអនុបាតនៃករណីអំណោយផលលើករណីសរុប ផ្សំ event ឯករាជ្យ គណនា expected value ធ្វើ simulation ជាមួយ Math.random យល់ពី birthday paradox និងការជំនួសគ្នានៃ ID ហើយបន្ថែម module probability ទៅក្នុង mathlab។
  12. 12កូអរដោនេ ធរណីមាត្រ និងការដាក់ទាំងអស់ចូលគ្នាដាក់ point លើអេក្រង់ វាស់ distance ដោយ Pythagoras ធ្វើចលនាជុំវិញរង្វង់ដោយ sin និង cos ធ្វើ animation ដោយ lerp និង clamp បន្ទាប់មកដាក់ module mathlab ទាំងអស់ចូលគ្នាជារបាយការណ៍មួយ ហើយមើលថាតើគំនិតនីមួយៗលេចឡើងនៅឯណាក្នុងការងារពិតប្រាកដ។