Metode perpustakaan matematika dalam Bahasa Pemrograman Go Google

9

Saya telah pemrograman di Google Golang dan telah menikmatinya karena singkatnya tetapi saya merasa mengejutkan bahwa hampir semua metode perpustakaan standar Matematika adalah untuk tipe floating point. Apakah ada alasan khusus mengapa metode ini tidak ada untuk int?

cobie
sumber

Jawaban:

9

Jawaban singkatnya adalah bahwa Go adalah penerus C, dan pustaka matematika standar C juga didefinisikan hampir secara eksklusif dalam hal nilai floating point presisi tunggal dan ganda.

Jawaban yang lebih panjang adalah bahwa dalam bahasa yang diketik secara statis tanpa polimorfisme atau kelebihan fungsi, seperti Go (atau C), Anda perlu menentukan jenis fungsi yang akan diambil dan dikembalikan sebelumnya, dan begitu Anda akan berurusan dengan jenis tertentu di perpustakaan matematika Anda, ada banyak operasi yang lebih menarik pada angka floating point daripada bilangan bulat. Untuk memilih beberapa contoh

  • akar kuadrat atau n dari bilangan bulat atau bilangan floating point biasanya tidak dapat direpresentasikan sebagai bilangan bulat

  • sangat sedikit nilai menarik dari fungsi transendental yang dinyatakan sebagai bilangan bulat

  • pembagian nilai floating point membutuhkan pembulatan kurang dari pembagian bilangan bulat

Perhatikan bahwa ini tidak sesulit kelihatannya jika nilai input Anda adalah bilangan bulat - nilai integral dapat dikonversi ke nilai floating point dengan typecast sederhana, dan sebagian besar akurat.

Jadi itulah cerita untuk bahasa seperti Go atau C. Bahasa lain memiliki opsi lain:

  • Bahasa yang diketik secara dinamis dapat menyediakan fungsi perpustakaan matematika yang mengambil atau mengembalikan beberapa jenis tergantung pada apa yang mereka panggil atau apakah nilai kembali direpresentasikan sebagai integer.

  • Bahasa dengan kelebihan fungsi dapat menyediakan banyak versi dari fungsi yang sama, tergantung pada jenis yang Anda lewati (secara ketat, ini adalah beberapa fungsi dengan nama yang sama, berbeda dari case yang diketik secara dinamis di atas)

  • Bahasa dengan tipe polimorfisme (seperti bahasa yang berorientasi objek dengan pewarisan) dapat mendefinisikan superclass "Number" dengan subclass untuk nilai integer dan floating point, dan kemudian mendefinisikan fungsi matematika dalam hal kelas Number ini. Pendekatan ini memiliki banyak fleksibilitas dari pendekatan bahasa dinamis, sambil tetap menjaga ketatnya pendekatan statis atau kelebihan fungsi.

Go tidak memiliki fitur ini.

jimwise
sumber