Untuk menjawab pertanyaan judul Anda "Apakah bahasa pemrograman menggunakan variabel seperti dalam matematika?": C, C #, Java, C ++, dan variabel bahasa gaya C lainnya menggunakan cara mereka digunakan dalam matematika.
Anda hanya perlu menggunakan == alih-alih =.
Jika saya mengambil asli Anda
root(square(x)) = abs(x)
Kemudian saya bisa menerjemahkannya ke dalam C # secara langsung tanpa ada perubahan selain dari sintaks.
Math.Sqrt(Math.Pow(x,2)) == Math.Abs(x)
Ini akan mengevaluasi true untuk setiap nilai x selama x kuadrat kurang dari maks untuk tipe data yang Anda gunakan.
(Java akan sangat mirip, tapi saya percaya namespace Matematika agak berbeda)
Bit berikutnya ini akan gagal dikompilasi dalam C # karena kompiler cukup pintar untuk mengetahui saya tidak dapat menetapkan kembalinya satu operasi ke operasi lain.
Math.Sqrt(Math.Pow(x,2)) = Math.Abs(x)
Kekekalan tidak ada hubungannya dengan ini. Anda masih perlu menetapkan nilai dalam bahasa yang tidak dapat diubah dan sangat mungkin bahwa bahasa yang diberikan dapat memilih untuk melakukan ini dengan menggunakan = sebagai operator.
Lebih lanjut membuktikan poinnya, loop ini akan berjalan sampai Anda menghabiskan nilai hukum x dan mendapatkan pengecualian overflow:
while (Math.Sqrt(Math.Pow(x, 2)) == Math.Abs(x))
{
++x;
System.Console.WriteLine(x);
}
Inilah sebabnya mengapa ahli matematika membenci penggunaan = untuk tugas. Itu membingungkan mereka. Saya pikir ini telah membuat Anda bingung sendiri. Ambillah contoh Anda
y = (x**2)**.5
x *= 2
assert y == abs(x)
Ketika saya mengubah ini menjadi aljabar, saya mendapatkan ini:
abs (2x) = root (x ^ 2)
Yang tentu saja tidak benar untuk nilai selain 0. Ketidakmampuan hanya menyelamatkan Anda dari kesalahan mengubah nilai x ketika Anda menambahkan langkah-langkah tambahan antara mengevaluasi Sisi Kiri dan Sisi Kanan dari persamaan asli. Sebenarnya tidak mengubah cara Anda mengevaluasi ekspresi.