Я программист на C ++, пытаюсь изучить Common Lisp. Я просмотрел некоторые книги, такие как Land of Lisp, и прочитал множество онлайн-статей о различных достоинствах Lisp. Однако мне нужен совет.
Почти все, что я читал о Common Lisp, связано с тем, насколько он удивителен и насколько быстро вы можете с ним справляться, и о том, как 30 лет назад он превосходно решал многие проблемы с современными языками программирования. Также, насколько удивительны макросы и как каждая парадигма программирования (объектно-ориентированная, функциональная, основанная на акторах и т.д.) может быть использована в Lisp, и как списки являются окончательной структурой данных. По сути, рассматривать Lisp как язык исследований и говорить, насколько он отличается и революционен.
И все это, вероятно, правда, но проблема в том, что я не видел много того, как делать практические вещи, например, читать файл, разбивать его на слова и обрабатывать его. Мне интересно изучать Common Lisp не ради изучения Common Lisp, а ради того, чтобы то, что я делал на C ++, было сделано быстрее и с меньшим количеством ошибок.
Итак, мой вопрос в том, какой ресурс является лучшим (будь то веб-сайт, книга, что угодно), который фокусируется на обучении использованию Common Lisp для выполнения общих задач программирования, таких как
- Как читать файлы
- Как прочитать файл, заменить слова в файле и записать результат обратно в файл
- Итерировать файлы в каталоге и другие файлы файловой системы
- Взаимодействовать с базой данных SQL
- Связь через розетки
- Потоки для таких вещей, как веб-сервер
- Создать графический интерфейс
- Выполнять операции с бинарными файлами
- Напишите парсер (не интерпретатор Лиспа в Лиспе, который, как я понимаю, похож на 5 строк Лиспа)
- Взаимодействовать с операционной системой (т.е. с вещами, написанными на C или C ++), чтобы делать то, что Lisp не может делать изначально.
- Как писать расширения Lisp на C (возможно ли это?)
- Встроить интерпретатор lua (возможно ли это?)
А также на менее непосредственно практической точки зрения , как реализовать общие структуры данных в лепет , таких как куча, стек, бинарное дерево поиска и т.д. Однако это может быть только с помощью списка операций LISP как car
и cdr
в правильном направлении. Я не знаю.
Я очень сомневаюсь, что что-либо из этого (за маловероятным исключением двух последних в списке) невозможно с Lisp, иначе людям это не понравилось бы. И в вышеупомянутом материале, который я прочитал, упоминается множество реальных программ, написанных на Lisp (на ум приходит интернет-магазин Yahoo!).
Однако, имея раньше программирование на ( ? ) Императивном языке, мне не терпится использовать полученные знания для написания реальных приложений. Итак, каков самый быстрый способ научиться писать практическое программное обеспечение с помощью Lisp?
Между прочим, я видел практический Common Lisp Питера Сейбеля, но, судя по оглавлению, он затрагивает только некоторые вещи, для которых я хотел бы научиться использовать Lisp.
Еще один вопрос, если можно (извините, если это объединяет два вопроса в один), где я могу найти ссылку на функции Lisp и прочее?
И мне очень хочется любить Лисп.