Подтвердить что ты не робот

Является ли Clojure ближе к Схеме или Common Lisp с точки зрения начинающих?

Если я хочу узнать Clojure, я должен начать с изучения схемы или общего Lisp?

Или существует Clojure достаточно различающийся от обоих из них, что я должен просто начать учиться Clojure сам по себе?

4b9b3361

Ответ 1

Вам будет полезно узнать все три, хотя бы потому, что вы можете выбрать, какой из них лучше всего подходит для ваших нужд. У всех троих есть свои сильные и слабые стороны.

Clojure смутно напоминает Схему в том, что он является главным образом функциональным языком и является Lisp1. Clojure также заимствует вещи из Common Lisp, такие как multimethods и макросы, и люди всегда переносят классные Lisp вещи в Clojure в виде библиотек. Создатель Clojure сам был хакером Common Lisp, прежде чем писать Clojure. Clojure занимает много терминологии и условностей от Схемы и CL (но также имеет свои вкусы во многих областях).

В настоящее время для Clojure не так много литературы, это такой новый язык (существует только одна Clojure книга до сих пор). Но есть множество хороших ориентированных на Схему книг, таких как SICP и Маленький Schemer/The Seasoned Schemer. Есть также хорошие книги CL, такие как PCL и многие другие.

Lisps также имеют много истории, и вам полезно понять историю, увидеть, где и почему Clojure отклоняется от нее, если ничего больше.

Я бы посоветовал начать с Scheme, потому что это самый простой язык из трех и, следовательно, самый простой для изучения. Затем побейте в CL и Clojure до тех пор, пока у вас не будет ручки на вещи, затем перейдите на полный пар в зависимости от того, к чему вы тяготеете.

Ответ 2

В ваших целях я думаю, что вы можете просто начать обучение Clojure. Различия между Lisp и Scheme (и Clojure сами по себе) не должны быть проблемой, особенно если вы только начинаете учиться.

Ответ 3

Мой первый Lisp опыт обучения был с Scheme, я никогда не касался Common Lisp (чувствовал, что он слишком сложный), и теперь я начинаю с Clojure.

Я использовал Dorai Sitaram "Учите схему себя в Fixnum Days", чтобы узнать схему и получить довольно далеко, хотя я никогда не обнаружил, что хочу использовать Scheme в реальных проектах.

Clojure, поскольку он якобы дает хороший, чистый доступ к огромной вселенной библиотек J2SE/J2EE, с другой стороны, побуждает меня переучивать этот диалект Lisp, потому что он может, наконец, быть практическим.

Что касается того, с чего начать, я бы сказал, что схема проще и поэтому может быть более подходящей для начала. С другой стороны, если у вас есть хорошие знания Java и Python, вы можете не пропустить погружение прямо в Clojure, потому что, в отличие от Схемы, он содержит элементы этих двух других языков (например, структуры данных, напоминающие Python и JVM/Java API, ориентированные учебники) и знакомый ландшафт могут помочь.

Поскольку я все-таки пришел из всех трех (Java, Python, Scheme), я оказался в хорошем положении, чтобы оценить то, что Clojure приводит к таблице, отличной от Схемы. Я не опытный Schemer, но я бы сказал, что если вы сразу начнете с Clojure, вы все равно получите общий Lisp опыт, поэтому вам определенно не будет недоставать, переходя из Схемы.

Ответ 4

Это зависит от того, хотите ли вы сосредоточиться на обучении или игре. Если вы действительно хотите изучить Lisp, схема - это хорошее место для начала. Если вы предпочитаете играть, поскольку вы учитесь, Clojure лучше подходит.

В конце концов я думаю, что Clojure может быть лучшим языком обучения. Это поддержка concurrency действительно открывает глаза. Немногие языки делают так просто начинающему писать параллельные программы.