Где научиться практически использовать Common Lisp [закрыто]



Я программист на C++, пытающийся изучить Common Lisp. Я посмотрел на некоторые книги, такие как Land of Lisp, и прочитал множество онлайн-статей о различных достоинствах Lisp. Однако мне нужен совет.



почти все, что я читал о Common Lisp, связано с тем, насколько это удивительно и как удивительно быстро вы можете сделать с ним и как он удивительно решил многие проблемы с современными языками программирования 30 лет назад. Также, как удивительные макросы, и как каждый каждый парадигма программирования (OO, функциональная, основанная на акторе или что-то еще и т. д.) Может использоваться в Lisp, и как списки являются конечной структурой данных. В основном лечение Лисп как язык и говорю, насколько это.



и все это, вероятно, правда, но проблема в том, что я не видел много вещей, как делать практические вещи, такие как читать файл и разбивать его на слова и делать некоторую обработку на нем. Я не заинтересован в изучении Common Lisp ради изучение Common Lisp, но ради того, чтобы получить то, что я раньше делал в C++, делалось быстрее и с меньшим количеством ошибок.



у меня вопрос что это лучший ресурс (будь то сайт, Книга, что угодно), что основное внимание уделяется обучению использованию Common Lisp для выполнения общих задач программирования как




  • как читать файлы

  • как прочитать файл, заменить слова в файле и записать результат обратно в файл файл

  • повторите файлы в каталоге и другие файлы файловой системы

  • взаимодействие с SQL db

  • есть ли связь через сокеты

  • резьба для таких вещей, как веб-сервер

  • Создать GUIs

  • выполнение операций с двоичными файлами

  • напишите парсер (не интерпретатор для Lisp в Lisp, который, как я понимаю, похож на 5 строк Lisp)

  • взаимодействовать с операционной системой (т. е. вещи написано на C или C++) делать вещи Lisp не может сделать изначально

  • Как написать расширения Lisp в C (это возможно?)

  • встроить интерпретатор lua (это возможно?)


а также на менее практичной ноте, как реализовать общие структуры данных в lisp, такие как куча, стек, двоичное дерево поиска и т. д. Однако это может быть просто использование операций списка Lisp, таких как car и cdr в правильном направлении. Я не знаю.



I очень сомневаюсь, что что-либо из этого (за маловероятным исключением последних двух в списке) невозможно с Lisp или люди не будут любить его так сильно. И вышеупомянутый материал, который я читал, упоминает много реального программного обеспечения, написанного на Lisp (Yahoo! на ум приходит интернет-магазин).



однако, имея программирование в a (в?) императивный язык перед тем, как я стремлюсь использовать то, что новые знания я получаю, чтобы писать реальные приложения. Так что самый быстрый способ чтобы узнать написание прикладных программ на Лиспе?



кстати, я видел Петера Сейбеля Практический Common Lisp но, судя по TOC, это касается только некоторые из вещей, которые я хотел бы научиться использовать Lisp, чтобы сделать.



еще один вопрос, если можно (извините, если это объединение двух вопросов в один), где я могу найти ссылку на функции Lisp и прочее?



И действительно хотите, как Lisp.

427   2  

2 ответов:

Я бы предложил чтение ' Практический Common Lisp', так как он уже отвечает на некоторые ваши вопросы.

есть, вероятно, три-четыре книги, которые вы должны прочитать:

Common Lisp Reference

инструкции

теперь следующее, что вы должны проверить, это руководство по реализации Lisp. Он описывает множество конкретных расширений: сеть, потоки, ...

документация для реализации Common Lisp:

муть (Emacs-based Lisp-IDE) имеет SLIME руководство пользователя.

документация для Common Lisp библиотеки:

библиотеки

для библиотек использовать

теперь посмотрим на некоторые из ваших пунктов:

  • как читать файлы

см. словарь файлов и потоков в HyperSpec. С-ОТКРЫТЫМ-ТРАНСЛЯЦИЙ, ЧТЕНИЕ, ЧТЕНИЕ ОН-ЛАЙН, ЧИТАТЬ-ГОЛЬЦА, ЧИТАТЬ-БАЙТ ЧТЕНИЯ-ПОСЛЕДОВАТЕЛЬНОСТЬ ...

  • как прочитать файл, заменить слова в файл, и записать результат обратно в файл

использовать выше. См. также: запись и связанные.

  • повторите файлы в каталоге и другие файлы файловой системы

см. выше. Каталог, пути,...

  • взаимодействие с SQL db

используйте, например, библиотеку CLSQL.

  • есть ли связь через сокеты

см. руководство вашего Lisp или используйте одну из портативных библиотек. См. Quicklisp.

  • резьба для таких вещей, как веб-сервер

см. руководство вашего Lisp или используйте одну из портативных библиотек. См. Quicklisp.

  • Создать GUIs

зависит. Видеть Quicklisp или конкретная библиотека реализации.

  • выполнение операций с двоичными файлами

см. раздел Hyperspec для операций с файлами и потоками. ЗАПИСЬ-БАЙТ, ЧТЕНИЕ-БАЙТ. Откройте поток как двоичный поток.

  • напишите парсер (не интерпретатор для Lisp в Lisp, который, как я понимаю, похож на 5 строк Lisp)

используйте для этого один из существующих инструментов. Изучите существующие Парсеры. Есть много парсеров написано на Лиспе, но не так много в книгах об этом (кроме парсеров естественного языка, которые описаны в литературе AI).

  • взаимодействовать с операционной системой (т. е. вещи, написанные на C или C++), чтобы делать вещи Lisp не может сделать изначально

зависит. Смотрите Quicklisp или конкретная библиотека реализации.

  • Как написать расширения Lisp в C (это возможно?)

зависит. Видеть Quicklisp или конкретная библиотека реализации. -> ФКП

последний совет: прочитайте код от других авторов.

изучите другой код Lisp. Существует достаточно очень разнообразный код Lisp там. От веб-серверов до программного обеспечения для сочинения музыки.

проверить Cliki The Common Lisp wiki Он предоставляет список библиотек, доступных для Common Lisp, которые помогут вам выполнить все ваши элементы.

кроме того, вы хотите, чтобы проверить Поваренная книга Common Lisp (есть еще обновленная версия). Он имеет кучу кода для общих задач, таких как чтение файла по одной строке за раз и внешние функциональные интерфейсы для взаимодействия с библиотеками написан на C.

вы можете писать расширения для Lisp в C в зависимости от того, какую реализацию вы используете. Например, Emacs-Lisp позволяет вам это сделать, хотя это не обычный Lisp. Обычно вы хотите написать код в Common Lisp, а затем максимально оптимизировать его, используя различные объявления компилятора Lisp или другой метод, в котором вы используете интерфейс внешней функции.

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

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

кто-то составленный список опций GUI для Lisp:

  • cl-gtk2, интерфейс к библиотеке gui GTK
  • McClim
  • гранат
  • общий Qt
  • EQL

Comments

    Ничего не найдено.