Komuniti pengaturcaraan sedang hangat berdiskusi mengenai pengendalian aritmetik titik terapung oleh Python, yang dicetuskan oleh contoh yang kelihatan mudah tetapi mendedahkan isu yang lebih mendalam tentang pilihan reka bentuk bahasa. Perdebatan tertumpu pada tingkah laku Python dengan pengiraan perpuluhan dan sama ada keputusan reka bentuknya selaras dengan jangkaan pengguna.
![]() |
---|
Reka bentuk grafik menonjolkan perdebatan mengenai pilihan aritmetik Python dan kesannya terhadap komuniti pengaturcaraan |
Kejutan Titik Terapung Yang Memulakan Segalanya
Perbincangan komuniti meletus apabila pembangun menyerlahkan bagaimana Python mengendalikan aritmetik perpuluhan asas. Contoh 0.2 + 0.1 > 0.3
mengembalikan True
dalam Python, yang secara matematik sepatutnya palsu. Tingkah laku ini berpunca daripada penggunaan aritmetik titik terapung IEEE 754 oleh Python, di mana nombor perpuluhan tertentu tidak dapat diwakili dengan tepat dalam format binari.
Apa yang menjadikan ini sangat menarik ialah kontras dengan bahasa pengaturcaraan lain. Raku, sebagai contoh, mengendalikan pengiraan yang sama secara berbeza dengan menggunakan nombor rasional sebagai jenis data kelas pertama, mengembalikan hasil False
yang betul secara matematik. Ini telah membawa kepada perbincangan yang penuh ghairah tentang sama ada pendekatan Python mengutamakan prestasi berbanding ketepatan matematik.
Kelakuan Nombor Titik Terapung Python berbanding Bahasa Lain
Bahasa | Ungkapan: 0.1 + 0.2 > 0.3 | Jenis Nombor Lalai |
---|---|---|
Python | True | IEEE 754 float64 |
Raku | False | Nombor nisbah |
Java (jshell) | True | IEEE 754 double |
Swift | True (melainkan ditaip) | IEEE 754 double |
Pertukaran Kelajuan vs Ketepatan Diserang
Ahli komuniti mempersoalkan falsafah reka bentuk Python, terutamanya memandangkan reputasinya yang perlahan berbanding bahasa yang dikompil. Pengkritik berhujah bahawa Python menyediakan yang terburuk dari semua dunia yang mungkin dengan memberikan aritmetik yang tidak intuitif tanpa faedah kelajuan yang biasanya membenarkan kompromi sedemikian.
Memandangkan betapa perlahan Python, bukankah memalukan bahawa 0.2 + 0.1 > 0.3?
Perdebatan ini menyerlahkan ketegangan asas dalam reka bentuk bahasa. Walaupun Python boleh menggunakan perwakilan nombor yang lebih tepat seperti aritmetik rasional, ini akan datang dengan kos prestasi yang ketara. Sesetengah pembangun menunjukkan bahawa modul pecahan Python wujud untuk mereka yang memerlukan aritmetik perpuluhan yang tepat, tetapi ia bukan tingkah laku lalai.
Alternatif Aritmetik Tepat Python
- modul fractions:
from fractions import Fraction
- menyediakan aritmetik rasional yang tepat - modul decimal: Menyediakan aritmetik titik perpuluhan dengan ketepatan yang boleh ditentukan pengguna
- perbandingan Raku: Menggunakan nombor rasional (jenis Rat) sebagai lalai, beralih kepada titik terapung apabila berlaku limpahan
- kesan prestasi: Aritmetik tepat biasanya 200 kali ganda lebih perlahan daripada titik terapung IEEE dalam penanda aras
![]() |
---|
Reka bentuk ini secara visual mewakili cabaran dan pertukaran dalam falsafah pengaturcaraan Python berkenaan kelajuan dan ketepatan |
Kelebihan REPL dan Kebolehcapaian Bahasa
Walaupun terdapat kontroversi titik terapung, ramai pembangun memuji shell interaktif Python (REPL) kerana memudahkan untuk bereksperimen dan menyahpepijat kod. Keupayaan untuk menguji potongan kod dengan cepat dan memeriksa fungsi secara interaktif kekal sebagai salah satu titik jualan terkuat Python, walaupun ujian tersebut mendedahkan tingkah laku matematik yang tidak dijangka.
Perbincangan juga menyentuh peranan Python sebagai bahasa pendidikan. Ramai pembangun belajar pengaturcaraan melalui Python tepatnya kerana sintaksnya yang boleh dibaca dan sifatnya yang pemaaf. Walau bagaimanapun, ada yang berhujah bahawa kebolehcapaian ini datang dengan kos mengajar amalan pengaturcaraan yang betul, terutamanya apabila pelajar tidak memahami had pengiraan yang mendasari.
Komuniti Berpecah Mengenai Falsafah Bahasa
Perdebatan mendedahkan perpecahan falsafah yang lebih mendalam dalam komuniti pengaturcaraan. Sesetengah pembangun menghargai pendekatan pragmatik Python, menerima bahawa ia tidak pernah menjadi bahasa terbaik untuk sebarang tugas, tetapi hampir selalu yang kedua terbaik. Yang lain berhujah untuk bahasa yang mengutamakan ketepatan matematik dan tingkah laku eksplisit berbanding kemudahan penggunaan.
Menariknya, perbincangan juga telah menyerlahkan bagaimana komuniti yang berbeza mempunyai keutamaan yang berbeza-beza. Saintis dan penyelidik sering memerlukan pengiraan yang tepat, manakala pembangun web mungkin mengutamakan kelajuan pembangunan berbanding ketepatan matematik. Kepelbagaian kes penggunaan ini menjadikannya mencabar untuk mereka bentuk bahasa yang memuaskan keperluan semua orang.
Perdebatan yang berterusan menunjukkan bahawa walaupun bahasa matang seperti Python terus menghadapi penelitian terhadap keputusan reka bentuk asas, terutamanya apabila komuniti pengaturcaraan menjadi lebih pelbagai dan menuntut.
Rujukan: Why Is Python So Popular in 2025?
![]() |
---|
Grafik ini menggambarkan pelbagai falsafah pengaturcaraan yang membentuk pembangunan bahasa seperti Python , mencerminkan keutamaan yang berbeza-beza dalam komuniti pengaturcaraan |