Я програміст на C ++, який намагається вивчити Common Lisp. Я переглянув деякі книги, такі як Земля Ліспа, і прочитав численні статті в Інтернеті про різні достоїнства Ліспа. Однак мені потрібна порада.
Майже все, що я читав про Common Lisp, пов’язане з тим, наскільки він дивовижний і наскільки вражаюче швидко ви можете з ним зробити щось і як він дивовижно вирішив багато проблем із сучасними мовами програмування 30 років тому. Також наскільки дивовижними є макроси, і як кожна кожна парадигма програмування (ОО, функціональна, на основі акторів чи інше тощо) може бути використана в Lisp, і як списки є остаточною структурою даних. В основному ставлячись до Ліспа як до дослідницької мови та кажучи, наскільки він різний та революційний.
І все це, мабуть, правда, але проблема в тому, що я не бачив багато речей, як робити практичні речі, наприклад, читати файл, розділяти його на слова та виконувати деяку обробку над ним. Мене не цікавить вивчення Common Lisp задля вивчення Common Lisp, а заради того, щоб зробити те, що я раніше робив у C ++, робити швидше і з меншою кількістю помилок.
Тож моє питання полягає в тому, який найкращий ресурс (будь то веб-сайт, книга, що-небудь), який зосереджений на навчанні користуванню Common Lisp для виконання загальних завдань програмування, таких як
- Як читати файли
- Як прочитати файл, замінити слова у файлі та записати результат назад у файл
- Ітераціюйте файли в каталозі та інші матеріали файлової системи
- Взаємодійте з SQL db
- Здійснюйте зв’язок через розетки
- Потоки для таких речей, як веб-сервер
- Створюйте графічні інтерфейси
- Виконувати операції з бінарними файлами
- Напишіть синтаксичний аналізатор (не перекладач для Lisp у Lisp, який, як я розумію, схожий на 5 рядків Lisp)
- Взаємодійте з операційною системою (тобто матеріалами, написаними на C або C ++), щоб виконувати те, що Lisp не може виконувати спочатку
- Як писати розширення Lisp на C (чи можливо це?)
- Вбудуйте інтерпретатор lua (чи можливо це?)
А також на менш практичній нотатці, як реалізувати загальнодоступні структури даних у lisp, такі як куча, стек, бінарне дерево пошуку тощо. Однак це може бути просто за допомогою операцій зі списком Lisp, як car
і cdr
правильно. Не знаю.
Я дуже сумніваюся, що будь-що з цього (за винятком останніх двох у списку) неможливо з Lisp, інакше люди цього не люблять так сильно. І вищезазначене, що я прочитав, згадує безліч програм реального світу, написаних на Lisp (веб-магазин Yahoo! приходить мені на думку).
Однак, маючи програмування на ( ? ) Імперативній мові раніше, я прагну до того, щоб використовувати нові знання, які я отримую для написання реальних додатків. То який найшвидший спосіб навчитися писати практичне програмне забезпечення за допомогою Lisp?
До речі, я бачив Практичний загальний Lisp Пітера Сейбела, але, судячи з TOC, він торкається лише деяких речей, для яких я хотів би навчитися використовувати Lisp.
Ще одне запитання, якщо я можу (вибачте, якщо це поєднує два питання в одне), де я можу знайти посилання на функції та речі Ліспа?
І мені дуже хочеться сподобатися Ліспе.