Gdzie nauczyć się praktycznie używać Common Lispa [closed]

Jestem programistą C++, który próbuje nauczyć się Common Lispu. Przejrzałem niektóre książki, takie jak Land of Lisp i przeczytałem wiele artykułów online na temat różnych zalet Lispu. Potrzebuję jednak porady.

Prawie wszystko, co przeczytałem o Common Lispie, ma związek z tym, jak jest niesamowity i jak niesamowicie szybko można z nim robić rzeczy i jak zadziwiająco rozwiązał wiele problemów z nowoczesnymi językami programowania 30 lat temu. Również jak niesamowite są makra i jak każdy paradygmat programowania (oo, functional, actor based, itp.) może być używany w Lispie, a listy są ostateczną strukturą danych. Zasadniczo traktuje Lisp jak język badawczy i mówi, jak różni się i jest rewolucyjny.

I wszystko to jest prawdopodobnie prawdą, ale problem w tym, że nie widziałem wiele rzeczy, jak zrobić praktyczne rzeczy, takie jak czytać plik i podzielić go na słowa i zrobić trochę przetwarzania na nim. Nie interesuje mnie nauka Common Lispu dla dobra nauki Common Lisp, ale dla uzyskania rzeczy, które kiedyś robiłem w C++ robione szybciej i z mniejszą ilością błędów.

Więc moje pytanie brzmi jaki jest najlepszy zasób (czy to strona internetowa, książka, cokolwiek), który skupia się na nauczaniu jak używać Common Lispu do wykonywania wspólnych zadań programistycznych Jak

  • Jak czytać pliki
  • Jak odczytać plik, zastąpić słowa w pliku i zapisać wynik z powrotem do pliku
  • iteracja plików w katalogu i innych filesystem stuff
  • interakcja z SQL db
  • czy komunikacja przez gniazda
  • Threading dla rzeczy takich jak serwer WWW
  • Tworzenie GUI
  • wykonywanie operacji na plikach binarnych
  • Nie jest to interpreter dla Lispu w Lispie, który jak rozumiem jest jak 5 linijek Lispu) [15]}interakcja z systemem operacyjnym (tj. rzeczy napisanych w C lub c++), aby robić rzeczy, których Lisp nie może zrobić natywnie
  • Jak pisać rozszerzenia Lispu w C (czy to możliwe?)
  • osadzenie tłumacza lua (czy to możliwe?)

A także w mniej praktyczny sposób, jak zaimplementować typowe struktury danych w Lispie, takie jak sterta, stos, binarne drzewo wyszukiwania itp. Jednak może to być po prostu Użycie operacji listowych w Lispie, takich jak car i cdr we właściwy sposób. Nie wiem.

Bardzo wątpię, czy cokolwiek z tego (z wyjątkiem dwóch ostatnich na liście) jest niemożliwe z Lispem, inaczej ludzie nie pokochaliby go tak bardzo. A wyżej wymienione rzeczy, które czytałem, wspominają o wielu rzeczywistych programach napisanych w Lispie (Yahoo! sklep internetowy przychodzi do głowy).

Jednak mając programowanie w ( the?) język imperatywny przed, jestem niespokojny, aby dostać się do korzystania z jaką nową wiedzę dostać do pisania aplikacji w świecie rzeczywistym. Jaki jest najszybszy sposób na naukę pisania praktycznego oprogramowania za pomocą Lispa?

Przy okazji, widziałem praktyczny Common Lisp Petera Seibela ale, sądząc po TOC, to dotyka tylko niektórych rzeczy, do których chciałbym nauczyć się używać Lispu.

Jeszcze jedno pytanie, jeśli Mogę (przepraszam, jeśli to połączenie dwóch pytań w jedno), gdzie mogę znaleźć odniesienie do funkcji Lispa i takich tam?

A ja naprawdę chcę polubić Lisp.

Author: Dan Rigby, 2011-08-29

2 answers

Proponuję przeczytać ' praktyczny Common Lisp ', ponieważ już odpowiada na niektóre z twoich pytań.

Są prawdopodobnie trzy do czterech książek, które powinieneś przeczytać :

Common Lisp Reference

Podręczniki

Następną rzeczą, którą powinieneś sprawdzić, jest podręcznik implementacji Lispu. Opisuje wiele specyficznych rozszerzeń: networking, threads, ...

Dokumentacja implementacji Common Lispu:

Slime (Lisp-IDE oparty na Emacsie) posiada Slime User Manual.

Dokumentacja dla bibliotek Common Lisp:

Biblioteki

Do wykorzystania w bibliotekach

Teraz patrząc na niektóre z twoich punktów:

  • Jak czytać pliki

Zobacz słownik plików i strumieni w HyperSpec . Z-OPEN-STREAM, READ, READ-LINE, READ-CHAR, READ-BYTE, READ-SEQUENCE, ...

  • Jak odczytać plik, zastąpić słowa w pliku i zapisać wynik z powrotem do pliku

Użyj powyżej. Zobacz też: pisz i powiązane.

  • iteracja plików w katalogu i innych systemach plików

Patrz wyżej. Katalog, pathnames, ...

  • interakcja z SQL db

Użyj na przykład biblioteki CLSQL.

  • czy komunikacja przez gniazda

Zobacz instrukcję swojego Lispu lub użyj jednej z przenośnych bibliotek. Zobacz Quicklisp.

  • Threading dla rzeczy takich jak serwer WWW

Zobacz instrukcję swojego Lispa lub użyj jednego z przenośne biblioteki. Zobacz Quicklisp.

  • Tworzenie GUI

Zależy. Zobacz Quicklisp lub bibliotekę specyficzną dla implementacji.

  • wykonywanie operacji na plikach binarnych

Zobacz Hyperspec dla operacji na plikach i strumieniach. ZAPIS-BAJT, ODCZYT-BAJT. Otwórz strumień jako strumień binarny.

  • napisz parser (nie interpreter dla Lispu w Lispie, który jak rozumiem jest jak 5 linijek Lispu)

Użyj jednego z istniejących narzędzi za to. Zbadaj istniejące parsery. Istnieje wiele parserów napisanych w Lispie, ale niewiele jest o tym w książkach (innych niż parsery języka naturalnego, które są opisane w literaturze AI).

  • interakcja z systemem operacyjnym (tj. rzeczy napisanych w C lub c++), aby robić rzeczy, których Lisp nie może zrobić natywnie

Zależy. Zobacz Quicklisp lub bibliotekę specyficzną dla implementacji.

  • Jak pisać rozszerzenia Lispu w C (czy to możliwe?)

Zależy. Zobacz Quicklisp lub bibliotekę specyficzną dla implementacji. - >FFI

Ostatnia rada: Czytaj Kod od innych autorów.

Zbadaj inny kod Lispa. Istnieje wystarczająco dużo bardzo zróżnicowanego kodu Lispu. Od serwerów WWW po oprogramowanie do tworzenia muzyki.

 85
Author: Rainer Joswig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-22 17:39:39

Sprawdź Cliki the Common Lisp wiki zawiera listę bibliotek dostępnych dla Common Lispu, które pomogą Ci osiągnąć wszystkie twoje pozycje.

Warto również zapoznać się z Common Lisp Cookbook (Istnieje również bardziej zaktualizowana wersja). Posiada kilka kodu do typowych zadań, takich jak odczytywanie pliku po jednej linii na raz i obce Interfejsy funkcyjne do interakcji z bibliotekami napisanymi w C.

Możesz napisz rozszerzenia dla Lispu w C w zależności od tego, której implementacji używasz. Na przykład Emacs-Lisp pozwala ci to zrobić, choć nie jest to Common Lisp. Zazwyczaj to, co chcesz zrobić, to napisać kod w Common Lispie, a następnie zoptymalizować go tak bardzo, jak to możliwe, używając różnych deklaracji kompilatora Lispa lub innej metody, w której używasz obcego interfejsu funkcji.

Threading zależy od implementacji, której używasz, ale myślę, że większość z nich ma wątki teraz.

Hunchentoot jest jednym z najlepszych serwerów Lispowych i jest dość łatwy w obsłudze. Nie musisz sam pisać kodu wątkowego, wystarczy, że napiszesz funkcje obsługi żądań HTTP.

Ktoś skompilował listę opcji GUI dla Lispu :

    W 2004 roku, w ramach projektu, został on uruchomiony.]}
  • McClim
  • granat
  • Często Qt
  • EQL
 6
Author: Rudolf Olah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-18 16:40:14