Bukannya itu benar-benar masalah bagi siapa saja yang pernah menghadapi masalah sintaksis ini sebelumnya, tetapi saya melihat sejumlah besar kebingungan yang berasal dari penggunaan tanda sisipan ( ^
) sebagai operasi XOR sebagai pengganti operasi eksponensial matematika yang diterima secara luas.
Tentu saja ada banyak tempat di mana (mis-) penggunaan tanda sisipan dijelaskan dan diperbaiki, tetapi saya belum menemukan sumber definitif tentang mengapa tanda sisipan diberi arti yang berbeda.
Apakah ini masalah kenyamanan? Kecelakaan? Jelas alasannya bisa berbeda untuk berbagai bahasa, sehingga informasi dalam hal apa pun akan berwawasan luas.
Jawaban:
Meskipun ada prekursor yang lebih tua, yang berpengaruh matematikawan Perancis Rene Descartes biasanya dikreditkan untuk memperkenalkan eksponen superscripted (a b ) ke dalam tulisan matematika, dalam karyanya Geometri yang diterbitkan pada tahun 1637. Ini adalah notasi masih universal digunakan dalam matematika hari ini.
Fortran adalah bahasa pemrograman tertua yang banyak digunakan untuk perhitungan numerik yang menyediakan operator eksponensial, dimulai pada tahun 1954. Operasi eksponensial dilambangkan dengan tanda bintang ganda
**
. Perlu dicatat bahwa banyak komputer pada saat itu menggunakan pengkodean karakter 6-bit yang tidak memberikan karakter tanda sisipan^
. Penggunaan**
kemudian diadopsi oleh pencipta berbagai bahasa pemrograman yang lebih baru yang menawarkan operasi eksponensial, seperti Python.Set karakter yang diadopsi secara luas pertama yang berisi tanda sisipan
^
adalah pengkodean ASCII 7-bit yang pertama kali distandarisasi pada tahun 1963. Bahasa pemrograman tertua yang saya ketahui yang menggunakan tanda sisipan untuk menunjukkan eksponensial adalah BASIC, yang bertanggal tahun 1964. Hampir sama waktu IBM mengadopsi pengkodean karakter EBCDIC , yang juga termasuk tanda sisipan^
.Bahasa C muncul pada tahun 1972. Bahasa ini tidak menyediakan operator eksponensial, melainkan mendukung eksponen melalui fungsi pustaka seperti
pow()
. Oleh karena itu, tidak ada simbol yang perlu dikesampingkan untuk eksponensial dalam bahasa C, dan lainnya, nanti, dalam keluarga C, seperti C ++ dan CUDA.Di sisi lain, dan tidak umum untuk bahasa pemrograman hingga saat itu, C menyediakan simbol untuk operasi bitwise. Jumlah karakter khusus yang tersedia dalam ASCII 7-bit terbatas, dan karena ada "afinitas alami" dari operasi lain untuk karakter khusus tertentu, misalnya
&
untuk DAN dan~
untuk TIDAK, tidak ada begitu banyak pilihan untuk simbol untuk XOR .Saya tidak mengetahui alasan yang dipublikasikan yang diberikan oleh Ritchie atau Kernighan tentang mengapa mereka memilih
^
untuk menunjukkan XOR secara khusus; Sejarah singkat Ritchie tentang C tidak membahas masalah ini. J melihat spesifikasi untuk prekursor untuk C, bahasa B , mengungkapkan bahwa itu tidak memiliki operator XOR, tetapi sudah digunakan semua karakter khusus selain^
,$
,@
,#
.[Pembaruan] Saya mengirim email ke Ken Thompson, pencipta B dan salah satu co-pencipta C, menanyakan tentang alasan memilih
^
sebagai operator XOR C, dan meminta izin untuk membagikan jawaban di sini. Jawabannya (sedikit diformat ulang untuk dibaca):Penggunaan
^
untuk eksponensial dalam "matematika" yang Anda rujuk sebenarnya adalah penggunaan yang ditetapkan jauh di kemudian hari untuk sistem pengaturan huruf seperti Knuth's TeX yang bertanggal tahun 1978, antarmuka baris perintah untuk sistem aljabar seperti Mathematica yang tanggal tahun 1988, dan grafik kalkulator di awal 1990-an.Mengapa produk-produk ini mengadopsi penggunaan
^
eksponensial? Dalam kasus kalkulator saya curiga pengaruh BASIC. Sepanjang 1980-an itu adalah bahasa pemrograman pertama yang sangat populer dan juga tertanam ke dalam produk perangkat lunak lainnya. Oleh karena itu, notasi ini sudah biasa bagi banyak pembeli kalkulator. Ingatan saya tidak jelas, tetapi saya percaya bahkan ada kalkulator yang benar-benar menjalankan penerjemah BASIC sederhana.sumber
^
untuk superscript . Dan masuk akal bagi saya untuk menggunakan karakter "naik" untuk superscript dan karakter "turun" (_
) untuk subskrip.^
menyarankan panah atas, yang pada gilirannya mengisyaratkan posisi tradisional dari eksponen superscript, sehingga agak cocok secara alami. Saya yakin Donald Knuth akan menanggapi email yang menanyakan tentang keputusannya untuk menggunakan^
eksponensial di TeX, tetapi mengingat bahwa ia sedang sibuk mengerjakan hal-hal yang lebih penting, seperti menyelesaikan TAOCP, saya tidak ingin mengambil langkah itu (saya memang mempertimbangkan saya t).