Saya tahu itu adalah dialek dari rumpun bahasa yang sama yang disebut cadel, tetapi apa sebenarnya perbedaannya? Bisakah Anda memberikan gambaran umum, jika memungkinkan, mencakup topik seperti sintaksis, karakteristik, fitur, dan sumber daya.
120
Jawaban:
Mereka semua memiliki banyak kesamaan:
(function-name arg1 arg2)
Fitur khas Lisp umum:
Ciri khas Clojure:
[]
dan peta{}
digunakan sebagai standar selain daftar standar()
- selain kegunaan umum vektor dan peta, beberapa orang percaya ini adalah inovasi yang membuat umumnya lebih mudah dibacaFitur khas skema:
sumber
Orang-orang di atas melewatkan beberapa hal
Lisp umum memiliki vektor dan tabel hash juga. Perbedaannya adalah Common Lisp menggunakan # () untuk vektor dan tidak ada sintaks untuk tabel hash. Skema memiliki vektor, saya yakin
Common Lisp memiliki makro pembaca, yang memungkinkan Anda menggunakan tanda kurung baru (seperti halnya Racket, turunan Skema).
Scheme dan Clojure memiliki makro higienis, berbeda dengan makro Common Lisp yang tidak higienis
Semua bahasanya modern atau memiliki proyek renovasi besar-besaran. Common Lisp telah mendapatkan perpustakaan yang luas dalam lima tahun terakhir (sebagian besar berkat Quicklisp), Skema memiliki beberapa implementasi modern (Racket, Chicken, Chez Scheme, dll.), Dan Clojure dibuat relatif baru
Common Lisp memiliki sistem OO bawaan, meskipun sangat berbeda dari sistem OO lain yang mungkin pernah Anda gunakan. Khususnya, ini tidak dipaksakan - Anda tidak perlu menulis kode OO.
Bahasa-bahasa tersebut memiliki filosofi desain yang agak berbeda. Skema dirancang sebagai dialek minimal untuk memahami Model Aktor; itu kemudian digunakan untuk pedagogi. Common Lisp dirancang untuk menyatukan berbagai dialek Lisp yang bermunculan. Clojure dirancang untuk konkurensi. Akibatnya, Skema memiliki reputasi minimal dan elegan, Common Lisp kuat dan paradigma-agnostik (fungsional, OO, apa pun), dan Clojure menyukai pemrograman fungsional.
sumber
Jangan lupa tentang perbedaan Lisp-1 dan Lisp-2.
Skema dan Clojure adalah Lisp-1:
Itu berarti nama variabel dan fungsi berada di namespace yang sama.
Lisp yang umum adalah Lisp-2:
Fungsi dan variabel memiliki ruang nama yang berbeda (sebenarnya, CL memiliki banyak ruang nama).
sumber
Gimp ditulis dalam Skema :)
Bahkan membagikan perangkat lunak yang menurut beberapa orang mungkin ditulis dalam C ++ mungkin dilakukan di bawah payung Lisp, sulit untuk memilih apel emas dari kelompok itu. Faktanya adalah C ++ tidak selalu populer, sepertinya hanya populer hari ini karena sejarah pembaruan. Selama setengah abad yang lebih rendah, C ++ bahkan tidak menggunakan multithreading, di situlah Python saat ini menjadi wadah limbah kode lem buggy yang tidak teruji. Lebih cepat sedikit dan sekarang kita melihat peningkatan dalam pemrograman fungsional, lebih seperti beradaptasi atau mati. Saya pikir Java sudah benar sejauh menyangkut bagian adapt.
Skema dirancang untuk menyederhanakan bahasa Lisp, itulah satu-satunya tujuan kecuali tidak pernah benar-benar dipahami. Saya pikir Clojure melakukan hal serupa yang dimaksudkan untuk menyederhanakan Skema untuk JVM tidak lebih. Ini seperti setiap bahasa JVM lainnya hanya untuk meningkatkan pengalaman pengguna, hanya untuk menyederhanakan penulisan boilerplate di tanah Jawa.
sumber