Я знаю, що це діалекти того ж сімейства мови, що називається lisp, але які саме відмінності? Чи можете ви дати огляд, якщо це можливо, охоплюючи такі теми, як синтаксис, характеристики, особливості та ресурси.
Я знаю, що це діалекти того ж сімейства мови, що називається lisp, але які саме відмінності? Чи можете ви дати огляд, якщо це можливо, охоплюючи такі теми, як синтаксис, характеристики, особливості та ресурси.
Відповіді:
Всі вони мають багато спільного:
(function-name arg1 arg2)
Загальні відмінні риси Lisp:
Відмінні риси Clojure:
[]
та карти, що {}
використовуються як стандартні додатково до стандартних списків()
- окрім загальної корисності векторів та карт, деякі вважають, що це нововведення, яке в цілому робить більш читабельнимОсобливості схеми:
Люди вище пропустили кілька речей
Common Lisp також має вектори та хеш-таблиці. Різниця полягає в тому, що Common Lisp використовує # () для векторів, а не синтаксис для хеш-таблиць. У схемі є вектори, я вважаю
У звичайному Lisp є читальні макроси, які дозволяють використовувати нові дужки (як це робить Racket, нащадок схеми).
Схеми та Clojure мають гігієнічні макроси, на відміну від негігієнічних звичайних Lisp
Усі мови є сучасними або мають масштабні проекти оновлення. За останні п’ять років Common Lisp отримав широкі бібліотеки (в основному завдяки Quicklisp), схема має деякі сучасні реалізації (Ракетка, Курка, Схема Chez тощо), а Clojure створений порівняно недавно
Common Lisp має вбудовану систему OO, хоча вона сильно відрізняється від інших систем OO, які ви могли використовувати. Примітно, що воно не застосовується - ви не маєте писати код OO.
Мови мають дещо різні філософії дизайну. Схема була розроблена як мінімальний діалект для розуміння моделі актора; згодом він став використовуватися для педагогіки. Загальний Лісп був розроблений для об'єднання безлічі діалектів Ліспа, що виникли. Clojure був розроблений для одночасності. Як результат, схема має репутацію мінімальної та елегантної, звичайний Lisp - потужний та парадигмально-агностичний (функціональний, OO, що завгодно) та Clojure, що надає перевагу функціональному програмуванню.
Gimp написаний у схемі :)
Насправді багато програмного забезпечення, на думку деяких людей, може бути написане на мові C ++, ймовірно, було зроблено під парасолькою Lisp, що важко вибирати золоті яблука з купки. Справа в тому, що C ++ не завжди був популярним, він лише здається популярним сьогодні через історію оновлень. Протягом меншої половини століття C ++ навіть не використовував багатопотоковість, саме сьогодні Python є вигрібною ямою непотрібного неперевіреного баггі-клею. Трохи швидше, і зараз ми спостерігаємо зростання функціонального програмування, воно більше схоже на адаптацію або вмирання. Я думаю, що Java має це правильно, що стосується адаптованої частини.
Схема була спроектована для спрощення мови Lisp, це було єдиним її наміром, за винятком того, що воно ніколи насправді не натрапляло. Я думаю, що Clojure робить щось подібне, що означало спрощення схеми для JVM більше. Це як і будь-яка інша мова JVM просто там, щоб надути користувальницький досвід, лише для спрощення написання кофейної панелі на землі Java.