Вопрос:

Будет ли Lisp чрезвычайно трудным для начинающего программиста?

scheme lisp common-lisp

6838 просмотра

13 ответа

123 Репутация автора

У меня есть небольшой опыт работы с Python (достаточно того, что я могу сделать, если / else / elif и некоторое генерирование случайных чисел), но у меня всегда было странное увлечение языками Lisp. Я скачал некоторый исходный код схемы, чтобы посмотреть на синтаксис, но для меня это было довольно бессмысленно.

Для программиста с небольшим опытом программирования, подобного мне, с некоторыми хорошими книгами, веб-сайтами и некоторым временем, было бы особенно трудно изучить Common Lisp или Scheme? Что из двух будет проще? Как они сравниваются с Python и C, насколько легко учиться?

Спасибо

Автор: Rubber Duchy Источник Размещён: 15.06.2010 12:06

Ответы (13)


25 плюса

51008 Репутация автора

Получить SICP (структура и интерпретация компьютерных программ). Это был учебник класса CS начального уровня в MIT до недавнего времени. Он полностью основан на схеме. Если вам вообще нравится CS, вам понравится эта книга. Это фантастическое . Вы прочтете намного лучшего программиста после того, как прочитаете его (и в идеале сделаете большинство упражнений). Это идеальная книга для начинающих, она начинается с самого начала и позволяет вам быть достаточно компетентным в Схеме. Тем не менее, это учебник для колледжа, поэтому, если у вас нет навыков программирования, это может быть немного сложнее.

Автор: Matt Greer Размещён: 15.06.2010 12:13

2 плюса

5811 Репутация автора

Схема (намеренно) более компактна, чем Common Lisp, и вы обнаружите, что вы можете выучить язык очень быстро. Теперь освоение (любого) понятия языка и информатики - это еще одна история, и предложение книги @Matt Greer было бы прекрасным местом для начала.

Автор: G__ Размещён: 15.06.2010 12:17

3 плюса

96051 Репутация автора

Лисп не сложно выучить. Его можно преподавать плохо, и у него есть некоторые понятия «высокого уровня», особенно если вы выходите из императивного «классического» мира программирования.

Но сегодня многие из современных языков имеют аспекты, очень похожие на те, что предлагает Lisp, поэтому в Lisp, вероятно, не так много «нового» по сравнению с другими языками, особенно Python.

Мое «препятствие» с Лиспом (и Схемой) было просто «лямбда». По сути, моя основная проблема заключалась в том, что мне нечего было сказать, что такое «лямбда», почему она называлась «лямбда» и т. Д.

Если бы он был назван «функция» или «рутина» или что-то, это было бы тривиально. Но как есть, слово «лямбда» было бессмысленным во всех отношениях. Они могли бы назвать это «mork», «bleem» или «fizbin», и это было бы так же полезно.

Как только я вздрогнул «лямбда», остальные упали на место.

Если вам интересен A Lisp (т. Е. Язык, по сути принадлежащий семейству Lisp), тогда Scheme - хороший выбор. Но Scheme НЕ является Common Lisp (именно это обычно означает сегодня «Lisp»), это действительно разные языки.

Если вы хотите изучить Common Lisp, я бы начал с Common Lisp и пропустил Scheme.

Вы можете обратиться к практическому Common Lisp, чтобы начать писать Lisp, не говоря уже о том, чтобы «изучать его».

Автор: Will Hartung Размещён: 15.06.2010 12:23

21 плюса

166805 Репутация автора

Учитывая некоторые хорошие книги, веб-сайты и некоторое время, будет ли особенно сложно выучить Common Lisp или Scheme?

Нет.

Что из двух будет проще?

Схема, потому что

Как они сравниваются с Python и C, насколько легко учиться?

Я думаю, что изучать C сложнее, чем изучать Python или Scheme, потому что для изучения C вам действительно необходимо использовать модель машины, указатели и динамическую память.

Между Scheme и Python очень сложно предсказать, как отреагирует какой-либо отдельный ученик. Мне действительно нравятся значительные пробелы в Python, и я нахожу скобки Схемы раздражающими и отвлекающими. Многим людям действительно нравятся скобки Scheme, и они находят существенные пробелы в Python раздражающими и отвлекающими. (Существуют важные семантические различия, но трудно избежать тирании синтаксиса.)

Какие книги я должен использовать? (вопрос, который вы должны были задать, но не сделали)

Не используйте структуру и интерпретацию компьютерных программ (SICP). Точка зрения этой книги: «Давайте покажем, насколько мы умны, кодируя всю информатику в Схеме». Книга является огромной интеллектуальной силой , но она совсем не подходит для начинающих. Когда MIT использовал его в 6.001, это был курс «отсеивания», потому что 30–40% всех студентов MIT хотели получить специальность EECS, и они пытались отвратить людей. SCIP - это потрясающе для старшего студента CS или программиста с 5-летним опытом. Не пытайтесь учиться на этом.

Несколько хороших книг для изучения:

  • Как разрабатывать программы Феллайзен и др. Были тщательно обработаны и отточены за годы опыта. Он использует схему и учит вас точно, что он утверждает в названии. Настоятельно рекомендуется.

  • «Просто схема » Харви и Райта - это вводная книга по CS для людей, которые считали, что SCIP нужен «приквел». Мне нравилось читать это, но я не учил этому.

  • Если вы можете выдержать остроумие, у «Маленького интрижка» Феллайзена и Фридмана есть очень необычный диалектический стиль с множеством примеров, которые могут вам понравиться.

Автор: Norman Ramsey Размещён: 15.06.2010 01:11

2 плюса

5215 Репутация автора

Я бы сказал, что Лиспу будет легче учиться как новому программисту, чем если бы вы подождали. Это потому, что большинство языков побуждают вас думать о программировании - это препятствие для изучения Lisp; опыт работы с более традиционным языком, вероятно, поможет в некоторых отношениях, но не с такими качествами, которые делают Лисп уникальным.

Scheme - Lisp, с которым я больше всего знаком - вероятно, так же прост в освоении, как и Python, особенно если вы выберете PLT Scheme (теперь переименованную в Racket), которая предлагает вам множество полезных расширений. Обычный Лисп, вероятно, примерно такой же сложности, хотя я нахожу его менее инстинктивным по причинам, которые, вероятно, не универсальны. Я нашел С гораздо сложнее, чем любой, по причинам, которые предлагает Норман Рэмси.

То, что я бы предложил изучить, во многом зависит от того, что вы хотите с ним сделать. Если вы хотите выучить кристально чистый язык без излишеств, чье ядро ​​можно быстро выучить, изучите схему, которая реализует стандарт R5RS, например Scheme48 . Если вам нужна более способная Схема, сразу или позже, изучите PLT Scheme / Racket . Если вам нужен большой, дружелюбный, распространенный язык огромной мощности, но не такой явно внутренне согласованный, как Scheme, выберите Common Lisp; Steel Bank Common Lisp - хорошая реализация.

Автор: JasonFruit Размещён: 15.06.2010 01:38

0 плюса

3071 Репутация автора

Рассмотрим (плохо названное) «Языки программирования, подход, основанный на переводчике» Сэмюэля Н. Камина. Вы узнаете, как программировать на 7 разных языках (включая Lisp, Scheme, SASL, CLU), а также как создавать интерпретаторы для каждого из них. Вы должны уметь хорошо понимать, как языки различаются, почему они спроектированы такими, какие они есть, каковы компромиссы в их использовании и т. Д.

Автор: joe snyder Размещён: 15.06.2010 01:46

5 плюса

233 Репутация автора

Получить

"Маленький интриган"

а также

«Продвинутый интриган»

Эти книги неоценимы как помощники в программировании. Я лично сделал бы их до SICP только потому, что SICP немного быстр, если вы не программировали много раньше ... и даже если у вас есть, они отличные книги!

Я лично считаю Схему очень хорошим педагогическим языком. Он может быть использован практически для всего, что я думаю, но он очень хорош для обучения программированию конструкций, не увязая в синтаксических проблемах. Ближайшая вещь к чистой семантике, которую вы собираетесь получить.

Автор: Michael Размещён: 15.06.2010 01:52

1 плюс

5101 Репутация автора

Что касается того, что проще, Лисп или Схема, будучи «диалектами» семейства Лисп, на начальном уровне они почти одинаковы и взаимозаменяемы. Я изучил Common Lisp из «Практического Common Lisp» Питера, затем взял SICP и проработал все упражнения в первых двух главах, используя Common Lisp, а не Scheme. Существует всего несколько различных ключевых слов и таких вещей, как использование funcallв CL, где в Схеме достаточно пары скобок.

И книга Зибеля, и SICP доступны бесплатно в полном объеме в Интернете. Скачай их и получи взлом!

Автор: Paul Richter Размещён: 17.06.2010 02:07

1 плюс

4167 Репутация автора

В прошлый раз я проверял лекции на вступительных классах для CS61A в Беркли, в которых использовался SICP, которые были доступны в iTunes, что даст вам полную серию лекций, которые помогут вам выучить язык. Бесплатно! Я слушал Брайана Харви еще в конце 90-х, и студентам очень нравились его лекции.

В настоящее время вы можете найти их здесь: https://archive.org/details/ucberkeley-webcast-PL6879A8466C44A5D5

Автор: Nathan S. Размещён: 17.06.2010 02:44

4 плюса

113701 Репутация автора

Я бы порекомендовал пойти с Common Lisp.

У этого есть превосходные реализации, которые предоставляют множество различных возможностей. Лучшими по-прежнему остаются коммерческие реализации (хотя у них есть бесплатные версии для изучения Lisp), такие как Allegro CL от Franz и LispWorks. Они предлагают обширные библиотеки и включают среды разработки на основе графического интерфейса. Но и с открытым исходным кодом, и с бесплатными реализациями тоже отлично: SBCL, CCL, ECL, CLISP, ...

Есть несколько отличных книг для Lisp, например, Практический Common Lisp Питера Сейбела.

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

Схема обучения тоже полезна. Также может помочь изучение SICP. Но в этом нет срочной необходимости, поскольку в литературе по Лиспу говорится о многих из тех же самых проблем. К сожалению, Схема потеряла часть своей привлекательности в последние годы (я нахожу, что последняя R6RS полностью разочаровывает), и я также нахожу, что реализации, такие как Racket, движутся в неправильном направлении. Вместо этого можно изучить некоторые из лучших диалектов и реализаций ML (скажем, OCAML). Хотя может быть интересно проверить различные реализации Scheme, есть некоторые с интересными возможностями.

Основные идеи, которые вы должны извлечь из Lisp:

  • мультипарадигмальное программирование
  • программируемый язык программирования
  • символическое вычисление
  • интерактивное и исследовательское развитие

Узнайте, как Lisp поддерживает эти идеи и почему они важны.

Автор: Rainer Joswig Размещён: 18.06.2010 10:04

-3 плюса

61 Репутация автора

Относительно, это очень сложный язык для изучения, если вы такой же упрямый, как и я :) Python - это язык ООП, и хотя FP возможен, он все еще ООП. Lisp - это язык FOP, такой как Haskell. Как и Python, он может выполнять OP, но все равно FOP. Используемые термины: OOP = объектно-ориентированное программирование OP = объектное программирование FOP = функционально-ориентированное программирование FP = функциональное программирование

Автор: Alex Размещён: 31.08.2010 12:04

0 плюса

3534 Репутация автора

Если вы увлечены языком, я думаю, вам будет легко. Но я должен сказать, что это не для всех. Я несколько раз пробовал изучать Scheme и Common Lisp и потерял интерес. Когда я вижу «если» в языке программирования, я начинаю искать «тогда», «еще», открытую скобку, двоеточие и т. Д., Но в Лиспе ничего этого нет. Я вижу только суп из скобок.

Кроме того, некоторые понятия проще в других языках. Я согласен с парнями, которым не нравится слово «лямбда». Я действительно понял, когда выучил Lua (Javascript очень похож). В Lua и Javascript, когда вам нужна анонимная функция, вы набираете (угадайте, что) «функцию (и т. Д. И т. Д.)». Когда вы хотите создать замыкание путем возврата функции, вы пишете (угадайте, что) «функция возврата (и т. Д. И т. Д.)». В Лиспе вы пишете «лямбда» и используете неявный возврат в конце функции. Не очень для начинающих.

Я также согласен с Норманом Рэмси: не используйте структуру и интерпретацию компьютерных программ (SICP).

Эта книга странная. Это начинается очень легко, на странице 1 вы узнаете некоторые выражения, такие как (+ 137 349). Проще простого. Затем на странице 2 вы узнаете функции. На странице 3 вы изучаете рекурсию. На странице 4 вы узнаете функции высшего порядка с лямбдами (!!!). На пятой странице вы говорите WTF и ничего не можете понять. Книга состоит всего из 5 глав, каждая из которых содержит тысячу страниц. Это вводит назначение в главе 3. Возможно, ваш мозг функционален, но мой мозг, безусловно, является императивом, и мне нужно посмотреть, что делает машина: присваивать значения, копировать память и т. Д. Обучение функциям более высокого порядка перед назначением просто обратное в моем императиве мозг. В последней главе книга рассказывает о компиляторах, интерпретаторах и сборщике мусора. Это та же самая книга, которая начала учить выражения вроде (+ 137 349)? Теперь я могу понять последние главы этой книги, но только после изучения полдюжины языков программирования различных парадигм и прочтения о языках программирования и их реализации. Я не знаю, как кто-то мог следовать тем темпам, которые эта книга навязывает читателю.

Автор: marcus Размещён: 31.08.2010 03:04

3 плюса

111 Репутация автора

Вы можете найти полный видеокурс « Структура и интерпретация компьютерных программ» в Google Video. Начните здесь: http://video.google.com/videoplay?docid=933300011953693438#

Видеоролики были сделаны в 80-х Хьюлеттом-Паккардом и преподавались Сассманом и Абельсоном (авторы оригинала). Класс полон инженеров HP HW / механики, которые проходят переподготовку в качестве инженеров SW. HP выпустила их в открытый доступ.

Любой мог посмотреть эти видео и стать программистом на Лисп до конца. Удивительные, отличные инструкторы.

Автор: Steve Размещён: 31.08.2010 03:10
32x32