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