Lisp был бы чрезвычайно трудным для нового (выход) программист для изучения? [закрытый]

20
задан Dan Robertson 7 June 2019 в 18:46
поделиться

12 ответов

Получите SICP (Structure and Interpretation of Computer Programs). До недавнего времени это был учебник начального уровня по CS в MIT. Он полностью основан на Scheme. Если вам хоть немного нравится CS, вы полюбите эту книгу. It's fantastic. Прочитав ее (а в идеале выполнив большинство упражнений), вы станете гораздо лучшим программистом. Это идеальная книга для начинающих, она начинается с самого начала и помогает вам стать достаточно компетентным в Scheme. Однако это учебник для колледжа, поэтому, если у вас нет склонности к программированию, он может оказаться немного сложным.

25
ответ дан 29 November 2019 в 22:47
поделиться

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

Нет.

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

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

Как они соотносятся с Python и C в том, что касается простоты обучения?

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

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

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

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

Несколько хороших книг, из которых можно поучиться:

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

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

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

22
ответ дан 29 November 2019 в 22:47
поделиться

Возьмите

"The Little Schemer"

и

"The Advanced Schemer"

Эти книги НЕВОЗМОЖНЫ в качестве пособий по концепции программирования. Я бы лично прошел их перед SICP, просто потому что SICP немного быстро, если вы не программировали много раньше... и даже если вы программировали, это отличные книги!

Лично я считаю Scheme очень хорошим педагогическим языком. Его можно использовать практически для чего угодно, но он очень хорош для обучения конструкциям программирования, не увязая в синтаксических вопросах. Наиболее близкая вещь к чистой семантике, которую вы можете получить.

5
ответ дан 29 November 2019 в 22:47
поделиться

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

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

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

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

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

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

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

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

3
ответ дан 29 November 2019 в 22:47
поделиться

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

0
ответ дан 29 November 2019 в 22:47
поделиться

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

2
ответ дан 29 November 2019 в 22:47
поделиться

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

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

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

2
ответ дан 29 November 2019 в 22:47
поделиться

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

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

1
ответ дан 29 November 2019 в 22:47
поделиться

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

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

1
ответ дан 29 November 2019 в 22:47
поделиться

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

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

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

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

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

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

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

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

4
ответ дан 29 November 2019 в 22:47
поделиться

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

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

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

3
ответ дан 29 November 2019 в 22:47
поделиться

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

-4
ответ дан 29 November 2019 в 22:47
поделиться