Zastanawiałem się, jakich unikalnych funkcji mogę się nauczyć ze schematu, które pomogłyby mi zostać lepszym programistą?
Mam duże doświadczenie w językach głównych i chcę poszerzyć swoje horyzonty i dowiedzieć się o aspektach funkcjonalnych, których brakuje w innych językach. Znam zamknięcia z javascript, wyrażenia lambda z C # i zastanawiałem się, na czym mogę się skupić, czego brakuje w innych językach? Oprócz składni Lisp, czuję się tak, jak do tej pory widziałem w innych językach.
Co jest wyjątkowego w Scheme / Lisp, które nauczy mnie czegoś nowego?
functional-programming
lisp
scheme
bunglestink
źródło
źródło
Odpowiedzi:
Być może najważniejszą cechą definiującą Lisp jest „Kod jako dane”. Nie dostaniesz tego doświadczenia w zupełnie inny sposób w żadnym innym języku. W języku C # najbliższym analogiem są drzewa wyrażeń.
Właśnie ta jakość sprawia, że Lisp jest doskonałym językiem do analizy. Właśnie ta cecha skłoniła Paula Grahama do powiedzenia o Lisp: „Niezwykłą rzeczą w Lisp - w rzeczywistości decydującą cechą Lisp - jest to, że można go napisać sam w sobie”. Chociaż kompilatory samo-hostujące nie są niczym nowym, żaden język nie robi tego tak elegancko jak Lisp.
Metaprogramowanie (coś, w czym Lisp także się wyróżnia) jest również warte nauki.
Beating the Averages Paula Grahama
http://www.paulgraham.com/avg.html
źródło
Tak, pomoże ci myśleć w sposób rekurencyjny. Studiowałem go (schemat) tylko przez około miesiąc w klasie języka programowania i pomogło mi to rozwinąć sposób myślenia i rozwiązywania problemów programistycznych.
Zawsze warto wypróbować inne paradygmaty programowania; następnie wrócisz odświeżony do świata OO z nowymi pomysłami.
Nie składnia, ale rozumowanie, to świetne ćwiczenie mózgu. Oprócz rekurencji i ciekawego korzystania z list, nie ma wiele więcej IMHO, ale warto.
źródło
Kontynuacja :
a następnie spróbuj wdrożyć Niejednoznaczny operator McCarthy'ego :
źródło
Mogę myśleć o następujących kwestiach:
Myślę też, że języki seplenienia powinny być niesamowite do definiowania języków specyficznych dla domeny (DSL). Warto o tym przeczytać, jeśli jeszcze o tym nie wiesz.
źródło