Di sebagian besar buku algoritma awal, <-
disebut penugasan dan =
disebut perbandingan. Tetapi saat ini satu-satunya bahasa yang tidak digunakan =
untuk penugasan adalah Pascal ( :=
) dan bahasa mainan seperti COOL . Apa yang menyebabkan bahasa pemrograman modern berubah =
menjadi penetapan makna alih-alih makna matematisnya tentang kesetaraan?
programming-languages
history
Siqi Lin
sumber
sumber
===
...←
tetap umum dalam pekerjaan algoritma; itu salah satu dari tiga notasi umum untuk penugasan saat menulis sebuah algoritma (yang lainnya adalah:=
dan=
). Hanya karena semua programmer menggunakan=
tidak berarti semua matematika turun←
.===
baik-baik saja.Jawaban:
Menurut Wikipedia , penggunaan equals untuk penugasan berasal dari Superplan bahasa Heinz Rutishauser, dirancang dari tahun 1949 hingga 1951, dan secara khusus dipopulerkan oleh Fortran:
Konrad Zuse juga menggunakan tanda sama dengan untuk Plankalkul , yang mengilhami Superplan Rutishauser, meskipun kompiler tidak pernah dirancang untuk itu. Kenapa dia memilih tanda sama dengan? Saya kira Anda harus bertanya padanya.
sumber
=
keduanya sebagai predikat dan untuk mendefinisikan variabel, misalnya dalam "Biarkan x = 4. Kemudian √ (x - y) adalah nol jika y = 4". Ini bekerja karena notasi matematika harus dipahami secara deklaratif daripada imperatif. Bahasa pemrograman fungsional (mis. Keluarga ML) default ke variabel yang tidak bisa berubah dan karena itu dapat terus digunakan=
dalam peran ganda tanpa masalah. Atau lebih tepatnya,=
apakah operator dan bagian darilet
sintaksis.=
kemudian hanya predikat, sama seperti di tempat lain digunakan. Perhatikan bahwa tergantung pada konteksnya, "Biarkan x = 4" bisa juga berarti "Biarkan x ∈ ℝ dan x = 4".Tetapi ketika saya melakukan matematika di sekolah "let x = 123"
adalah ungkapan yang umum. Versi awal Basic bersikeras kata kunci "let" sebelum equal. Jadi pada dasarnya bisul dilakukan untuk "membiarkan" dipahami.
Pengemudi kunci biasanya tidak dianggap tetapi sangat penting pada saat itu apa yang Anda ketik sebenarnya.
Ada dua perangkat input yang layak,
Teletype cenderung digunakan di toko-toko akademik dan militer, pukulan kartu di toko-toko komersial. Karenanya bahasa akademik seperti Pascal mendukung pengidentifikasi huruf kecil dan notasi "masuk akal" seperti ": =" untuk penugasan. Bahasa yang ditujukan untuk khalayak yang lebih komersial berasumsi bahwa kartu berlubang akan menjadi bentuk input utama maka bahasa huruf besar hanya bahasa FORTRAN dan COBOL dengan dukungan terbatas untuk karakter ":;> <" yang tidak tersedia pada keypad standar.
Kebetulan tidak ada ambiguitas tentang "=" digunakan untuk penugasan di FORTRAN awal karena perbandingan dilakukan menggunakan ".LT.", ".LE.", ".EQ.", ".GE." dan ".GT." sintaksis.
sumber
let x = 123
lebih analogassert(x == 123)
dari pada jenis tugas apa pun.