Схема или Общий Лисп - PullRequest
       23

Схема или Общий Лисп

3 голосов
/ 20 января 2010

Для школьного проекта (проект со свободным выбором) я планировал проработать SICP (Структура и интерпретация компьютерных программ) и схему обучения. После этого я хочу создать что-то интересное (также часть этого проекта). Однако из того, что я прочитал, Scheme, возможно, не лучший диалект для проекта, и вместо этого может быть лучше использовать Common Lisp. (https://stackoverflow.com/questions/108201/common-lisp-or-scheme). Однако, это будет означать, что я не смогу использовать SICP для его изучения?

Я также рассмотрел вариант сначала изучить Схему, а затем Common Lisp, но, очевидно, есть некоторая «тонкая» разница, которая может быть очень затруднительной.

Какой будет лучший выбор? Просто выучить Схему и использовать ее? Изучите Схему, а затем изучите Common Lisp? Или пропустить Scheme (и SICP) и просто изучить Common Lisp? Или есть еще лучший вариант?

Ответы [ 3 ]

4 голосов
/ 20 января 2010

Различия между Common Lisp и Scheme завышены. Они есть, и некоторые из них важны, но для реальной работы у вас не будет проблем с изучением одного, а затем и другого. Когда я обычно писал обоим, я мог без проблем переключаться между ними.

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


Есть несколько вещей, которые следует учитывать. Тип проекта является наиболее важным: схема отлично подходит для проектов языкового дизайна. Если ваш проект является интерпретатором / компилятором / синтаксическим анализатором / и т. Д. Для нового, странного типа языка (или просто языковой функции), тогда Scheme идеален. С другой стороны, Common Lisp очень эффективен в тех областях, где вам нужно много уже встроенных базовых утилит, но вы точно не знаете, что именно вы создаете заранее - в результате вы получаете большинство DSL. время. Вот почему это было так популярно в искусственном интеллекте. (Это тот код, для которого я его использовал.)

Во-вторых, PLT имеет IDE схемы с низкой степенью обучения, называемое DrScheme. Common Lisp имеет подключаемый модуль Emacs с высокой степенью обучения, который называется Slime . По моему опыту, Slime более мощный, но для этого требуется достаточное обучение, чтобы вы, вероятно, учитывали его, если это проект продолжительностью в семестр (особенно если вы еще не используете Emacs).

1 голос
/ 20 января 2010

SICP является относительно старой книгой и использует и более старый вариант Схемы. В книге в основном используются только основные функции Scheme. Таким образом, относительно легко написать решения для упражнений в книге на Common Lisp. Если у вас есть некоторые навыки выше среднего, вы сможете перевести код на Common Lisp. Вот пример для упражнений SICP в Common Lisp .

SICP - это скорее общая книга о программировании и информатике, а не о программировании на Scheme или Lisp. Для этого лучше использовать другие книги. Для Common Lisp см. «Практический Common Lisp» как хорошее начало.

0 голосов
/ 20 января 2010

Как только вы изучите Scheme и проработаете в SICP, ваши навыки программирования в функциональном программировании будут весьма хорошими.

В то время изучать Common Lisp было бы легко. Как вы думаете, изучение C # является проблемой, когда вы уже знаете Java?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...