> 1 <

Автор Сообщение

reaper

Members


Статус

9 сообщений
http://epicats.com
Где: France Paris
Род занятий: Reaper
Возраст: 43

#751   2009-11-29 00:47 GMT+3 часа(ов)      
http://www.lisp.ru/page.php?id=14

Под катом абзац. Или я что-то не понимаю, либо автор написал бред, да ещё и ошибку в лисп-коде допустил.

1. В С++ нет ограничения на один параметр при перегрузке функций - создавайте столько сигнатур с таким количеством параметров, сколько в голову влезет. Главное, чтобы сигнатуы были уникальны и не повторялись.

2. 3 и 4 сигнатуры draw одинаковы - передаваемые параметры и имена функций одинаковы, лисп, вероятно, ошибку выдаст.

Кроме того, стандарт Common Lisp включает в себя систему объектно-ориентированного программирования CLOS, далеко превосходящую по выразительным возможностям систему программирования C++. Для доказательства этого превосходства достаточно отметить, что есть возможность выбирать вызываемое тело метода, руководствуясь типами нескольких параметров, а не одного, как в C++. Например, пусть у нас определены классы screen и paper, а также классы sentence и picture. Тогда для функции draw можно определить четыре метода

(defmethod draw ((x sentence) (y screen)) (message-box x y)) ; для отображения сообщения на экране

(defmethod draw ((x sentence) (y paper)) (write x y)) ; нужно просто написать слова на бумаге

(defmethod draw ((x picture) (y screen)) (show-picture-in-a-box x y)) ; показываем картинку на экране

(defmethod draw ((x picture) (y screen)) (paint-picture-on-a-paper x y)) ; рисуем картинку на бумаге.

При вызове

>(draw my-data my-device)

выбор одного из четырех определенных методов будет динамически осуществляться в момент вызова. Это невозможно в C++, где пришлось бы делать draw либо методом общего предка объектов screen и paper, либо методом общего предка sentence и picture, а выбор кода по типу второго аргумента осуществлять с помощью анализа этого типа в конструкции if.

reaper

Members


Статус

9 сообщений
http://epicats.com
Где: France Paris
Род занятий: Reaper
Возраст: 43

#752   2009-11-29 01:07 GMT+3 часа(ов)      
Трололо, следующий абзац:

Цитата
В C нужно помнить достаточно большую таблицу правил приоритета операций, которые определены не очень логично. Например, легко ошибиться, написав (i==j || k==l) вместо ((i==j) || (k==l)), а в Лисп такая ошибка просто невозможна...


в С это не ошибка, оператор проверки равенства имеет бОльший приоритет чем логический оператор or. Записи (i==j || k==l) и ((i==j) || (k==l)) равноценны.

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#753   2009-11-29 02:40 GMT+3 часа(ов)      
Э, блин, обещал здесь больше не писать ;), ну да ладно...

reaper, да, ты не так понял (про defmethod). И да, автор статьи не силён в предмете, читать не стоит.

Ты чего, собственно, хотел то?

reaper

Members


Статус

9 сообщений
http://epicats.com
Где: France Paris
Род занятий: Reaper
Возраст: 43

#754   2009-11-29 20:56 GMT+3 часа(ов)      
Что я хотел? Ничего. Я начал изучать лисп, наткнулся на ваш сайт. Поскольку неграмотные сравнения сильно вредят как имиджу предмета, так и сайта размещающего неправильные рассуждения, советую или исправить косяки или убрать статью.

Объясните про defmethod.

отредактировал(а) reaper: 2009-11-29 21:03 GMT+3 часа(ов)

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#755   2009-11-29 21:48 GMT+3 часа(ов)      
> Я начал изучать лисп, наткнулся на ваш сайт.
Ну это точно не мой сайт

> Объясните про defmethod
Могу сделать это здесь

FreeV

Members


Статус

52 сообщений

Где: Russia astral
Род занятий:
Возраст:

#786   2009-12-19 19:06 GMT+3 часа(ов)      
> Могу сделать это здесь
какой суровый пиар... жестокая все-таки реальность.
и нескромный вопрос не в тему, а автор этого ресурса вообще тут появляется?

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#787   2009-12-19 19:40 GMT+3 часа(ов)      
> а автор этого ресурса вообще тут появляется
Только в целях пиара, я и есть автор ;)

FreeV

Members


Статус

52 сообщений

Где: Russia astral
Род занятий:
Возраст:

#788   2009-12-19 19:47 GMT+3 часа(ов)      
хм, я имел ввиду автора lisp.ru, а не lisper.ru.
или (что совсем невероянто) это ты в одном лице?

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#789   2009-12-19 20:00 GMT+3 часа(ов)      
> хм, я имел ввиду автора lisp.ru
Вряд ли, зачем ему это?

LinkFly

Members


Статус

152 сообщений

Где: Russia
Род занятий:
Возраст:

#2121   2010-05-23 22:18 GMT+3 часа(ов)      
В статью действительно закралась пара ошибок. Но в целом кажется статья хорошая ..

LinkFly

Members


Статус

152 сообщений

Где: Russia
Род занятий:
Возраст:

#2122   2010-05-23 22:19 GMT+3 часа(ов)      
P.S. А у archimag'a ресурс по-живее будет ;)

Вадим Тукаев

Members


Статус

26 сообщений

Где: Russia Наша Параша
Род занятий: говнокодер-подёнщик
Возраст: 39

#5762   2012-02-27 11:35 GMT+3 часа(ов)      
Это не показатель. Лучше несколько грамотных учителей, чем куча зевак-советчиков (я говорю не о лиспер.ру, а так - сферически в вакууме).
> 1 <


Онлайн :

0 пользователь(ей), 11 гость(ей) :




Реклама на сайте: