Интересно, может ли кто-нибудь объяснить логическое обоснование следующих функций autolisp / visual lisp? Мне кажется, что они идут вразрез с общепринятой практикой программного обеспечения ... Я что-то упускаю?
- Все переменные являются глобальными по умолчанию (т.е. если они не помещены после
/
в аргументы функции)
- Чтение / запись данных из autocad требует помещения материала в список ассоциаций с большим количеством магических чисел.
10
означает координаты x / y, 90
означает длину списка координат, 63
означает цвет и т. Д. Хорошо, вы можете сохранить их в некоторых константах, но это будет означают еще больше глобальных переменных, и в документации рекомендуется использовать магические числа напрямую.
- Lisp - это язык функционального стиля, который поощряет программирование путем рекурсии вместо итераций, но хвостовая рекурсия, как правило, не оптимизирована для визуального лиспа, что приводит к ужасным стекам вызовов - если, конечно, вы не повторяете итерацию. Но синтаксис цикла очень ограничен; например вы не можете выйти из цикла или вернуть значение из цикла, если не поставите какой-либо флаг в условие завершения. Результат, некрасивый код.
- Обычно вы вынуждены объявлять переменные повсюду, что противоречит функциональному программированию - так зачем использовать функциональный (-иш) язык?
задан Marcin 2 February 2012 в 15:34
поделиться