I have been working as a C developer on Linux platform for sometime now. Recently finished K & R and did a little study of implementing OOP in C. Beside that I have studied C++ and Java. All of it has been on Linux platform.
Now I plan to learn LISP. I have gone through LISP discussions directed towards beginners on SO, especially What’s the best way to learn LISP.
I understand, moving from procedural to functional programming paradigm is a big move. Thinking in terms of the new paradigm would be the real challenge. Just like the way it was when I learned OOP for the first time.
It is the paradigm I am really worried about. When I started OOP, most of the time was consumed in learning how to view problems in terms of OOP. Syntax was not so difficult to grasp.
Now as I have been working in C, my current projects at my workplace are also in C. I am concerned how could I learn to view problems in terms of functional programming.
Thanks for your time. Any help and suggestion would be greatly appreciated.
Вы могли бы сделать намного хуже, чем Курс MIT 6.001 «Структура и интерпретация компьютерных программ» . Класс использует текст Абельсона и Сассмана ; см. также основной сайт книги для получения дополнительной информации.
Класс использует Scheme, диалект LISP, который значительно чище и проще в использовании, чем Common LISP (да, это мнение, разберитесь с ним). В дальнейшем переход на Common LISP не составит труда. Книга Пола Грэма On LISP - это текст о программировании на Common LISP, «не бери пленных».Его ANSI Common LISP представляет собой более мягкое введение в предмет.
А теперь плохие новости. Переход к РАБОТЕ в LISP, вероятно, будет очень трудным, поскольку существует намного больше задач C / C ++ и Java.
Я бы рекомендовал сразу перейти к изучению LISP. Это не так уж и сложно.
Для игры вам понадобится система LISP. Если вы используете Scheme, вам будет сложно превзойти систему MIT / GNU Scheme . Для Common LISP есть несколько вариантов: я бы, вероятно, начал с GCL - GNU Common LISP . Доступны версии для Linux и Windows.
Я лично нашел GNU Emacs Lisp Tutorial приятным для чтения. Он даст вам общие идеи.
Я обнаружил, что основы python (лямбда-функции и тому подобное) очень помогают в освоении lisp.
В свое время я решил изучить скриптинг в emacs, который использует диалект лиспа, и это было очень полезно, поскольку тогда вы знаете, что хотите делать, вместо того, чтобы проходить упражнения.
Я думаю, вам нужен хороший текстовый редактор с поддержкой lisp и shell. затем просто попробуйте сделать целевой проект и реализовать его.
Попробуйте книги:
Practical Common Lisp by Peter Siebel (доступна онлайн на http://www.gigamonkeys.com/book/ ).
ANSI Common Lisp Пола Грэма, затем попробуйте On Lisp того же автора.
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig
Другие места, где можно найти помощь, включают канал #lisp на FreeNode и LispForum ( http://www.lispforum.com/ ).
Из всех этих языков PCL, вероятно, самый простой для освоения, но если вы пытаетесь изучать Лисп как способ изучения Функционального программирования, вы будете разочарованы, хотя вы можете использовать Лисп для изучения ФП, но он не является строго языком ФП.
Книга, по которой я начал изучать Лисп, называется The Little Schemer Д.П. Фридмана. Действительно заставляет вас задуматься о функциональном программировании.
Прочитайте "Практический Common Lisp". В моей компании по крайней мере 70 программистов используют Common Lisp каждый день для сложных практических программ (поиск авиабилетов, системы бронирования авиабилетов), и когда появляется новый программист, который не знаком с Lisp, мы просто даем ему или ей копия "Practical Common Lisp". Я не могу сказать достаточно о том, насколько великолепна эта книга.