Ini sedikit referensi sejarah (saya belum dilahirkan ketika peristiwa yang digambarkan terjadi, jadi mungkin seseorang yang lebih berpengetahuan akan mengoreksi saya. Semua ini dari membaca artikel-artikel lama dan beberapa buku).
Setelah menghilangkan disclaimer, sepertinya kembali pada zaman Fortran vs Lisp "simbolik" adalah semacam kata kunci seperti "berorientasi objek" hari ini. Yaitu program biasanya dilihat hanya sebagai rumus matematika besar di mana angka-angka pada akhirnya akan dicolokkan dan placeholder untuk angka tidak penting. Semua informasi simbolis yang terkandung dalam suatu program akan lenyap begitu program itu dijalankan, dikompilasi atau ditafsirkan. Kebaruan Lisp adalah memungkinkan simbol untuk bertahan dalam suatu program bahkan setelah dijalankan, dikompilasi atau ditafsirkan. Istilah ini mengilhami istilah seperti "aljabar simbolik" (seperti dalam manipulasi pada rumus aljabar seperti yang dilakukan pada kertas / papan tulis bukan dengan perhitungan langsung). Untuk mendukung ini (dan hal-hal simbolis lainnya) simbol harus dilengkapi dengan nama dan beberapa properti. Dari sudut pandang non-simbolik, orang mungkin mengatakan bahwa "simbol hanya bernama pointer", dan sementara ini tidak benar, jika ada lebih dari pointer ke struct, tetapi untuk tujuan praktis, simbol adalah perancang kiri. sisi pasangan nilai-variabel. Ini juga memungkinkan untuk dilihatsymbol-value
berfungsi sebagai pointer dereferencing dalam bahasa non-simbolik.
Lisps modern bervariasi dalam hal berapa banyak nilai yang dapat dikaitkan dengan satu simbol (misalkan Anda memiliki bahasa non-simbolik dengan banyak tumpukan memori / tumpukan, Anda dapat membayangkan situasi di mana pointer yang sama memiliki makna ketika ditafsirkan dalam konteks tumpukan yang berbeda / tumpukan). Jadi, bahasa Lisp2 (Emacs Lisp menjadi salah satu bahasa seperti itu) memiliki penyimpanan terpisah untuk fungsi dan variabel, inilah sebabnya ada juga symbol-function
, yang "menunjuk referensi yang menunjuk ke penyimpanan fungsi". Skema tidak memiliki penyimpanan khusus ini dan Clojure AFAIK, tidak memiliki keduanya maupun symbol-plist
.