Я сомневаюсь, что CLOS послужит опорой для старых привычек, я обнаружил, что он сильно отличается от стиля объектно-ориентированного программирования в C ++ / Java / Python и очень интересен. Я не понимаю всех деталей, но я бы порекомендовал Практический Common Lisp Питера Сейбеля. Если вы читаете On Lisp без особых проблем, вы сможете погрузиться в главы, знакомящие с CLOS на PCL. Кроме того, я бы порекомендовал его Google Tech Talk, сравнивающий Java и Common Lisp.
Вот еще несколько рекомендаций, чтобы сделать это более полноценным ответом:
Классический текст Структура и интерпретация компьютерных программ охватывает довольно много примеров в главе 3 построения модульных системы, использующие замыкания (и решающие проблемы с введением состояния и изменчивости). Глава 2 включает в себя некоторые общие программы и программы, ориентированные на данные / типы, которые могут быть полезны для мотивации изучения CLOS. Однако эта книга действительно не нуждается в представлении, это выдающееся произведение, и с весны я читаю его медленно. Настоятельно рекомендуется, если вас интересует Scheme.
Хотя SICP - отличная книга, она не лишена недостатков: действительно интересный взгляд на них - это эссе «Структура и интерпретация учебной программы по информатике», в которой подробно рассказывается о некоторых критических замечаниях по поводу SICP, написана авторами книги Как разрабатывать программы (я не читал HTDP, но Я слышал очень хорошо). Хотя это эссе не научит вас конкретно тому, что вы ищете - сравнению функционального и объектно-ориентированного программирования, - все равно оно действительно интересно. Их курс для первокурсников начинается с первого семестра введения в функциональное программирование с использованием Scheme (я думаю, PLT / Racket), а за ним следует семестр объектно-ориентированного программирования на C ++ или Java ... по крайней мере, это курс, который они описывают в эссе.
На этих слайдах Питера Норвига рассматриваются некоторые шаблоны проектирования, общие в объектно-ориентированном программировании, и показано, почему они отсутствуют или не нужны в динамических функциональных языках, таких как Scheme и Lisp: http://norvig.com/design-patterns/
Я осторожно рекомендую книгу тех же авторов, что и книги Little Schemer: A Little Java, A Few Patterns. Я не могу точно сказать, действительно ли это хорошая книга или нет, это было невероятно странно, и есть несколько действительно плохих решений по набору (курсив, засечки, переменная ширина, верхний индекс не относится к тексту по программированию) , но может быть интересно взглянуть. В любом случае, вы, вероятно, найдете это дешево. Не воспринимайте эту рекомендацию так серьезно. Думаю, лучше будет придерживаться текстов Схемы.
p.s. Я должен не согласиться с одним комментарием, в котором говорится, что функциональное программирование не так сложно в объектно-ориентированном программировании, я думаю, что это сильно неверно. Функциональное программирование во всей его широте поистине ошеломляет. Когда вы выйдете за рамки функций map / filter / reduce и первоклассных функций и взглянете на другие вещи в функциональной сфере, такие как ленивое вычисление, избегание побочных эффектов и мутаций, а также сильные языки со статической типизацией, это становится довольно интересным, и, безусловно, так же сложен, как традиционное объектно-ориентированное программирование. Я сам только поцарапал поверхность, но обнаружил много новых идей. Программирование - это сложный бизнес, будь то объектно-ориентированный или функциональный.
person
michiakig
schedule
15.12.2010
defclass
. Очевидно, это обычное место для программистов Lisp: xach.livejournal.com/275444.html - person Ken   schedule 14.12.2010