Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357

Типичные ошибки при написании Лисп-кода

05.07.2022, 21:49. Показов 3876. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Скажите пожалуйста, какие вы можете назвать типичные ошибки при написании кода на Лиспе?
Чего следует избегать в первую очередь?
Очень хотелось бы составить список, да побольше.
Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2022, 21:49
Ответы с готовыми решениями:

Ошибки при написании кода переноса текста в закладки Microsoft Word 2010
Всем привет. Использую VB.Net 2008 / .Net Framework 3.5 . Возникла проблема с переносом данных из TextBox в закладки Microsoft World...

Ошибки в написании кода
Доброго времени суток! Нужно было написать подобие школьного журнала, но у меня возникли три ошибки, две из которых вы увидите, если...

Есть ли возможность скрыть часть кода одним символом при написании кода?
Мне интересно есть ли возможность скрыть часть кода программы от его копирования(от конкурентов допустим), чтобы при просмотре человек не...

43
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
12.07.2022, 12:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от chessman2 Посмотреть сообщение
Имеете какое-то обоснование,
так считать ?
Очевидно же. Если использовать список как последовательность (типа "найти наибольший элемент в списке чисел"), то проход по нему циклом - O(1) по памяти, а рекурсией - O(n). Если нет разницы, зачем платить больше? Поэтому и в гугловском руководстве по стилю написано, что не используйте рекурсию без нужды.
1
 Аватар для chessman2
164 / 144 / 10
Регистрация: 21.10.2012
Сообщений: 492
12.07.2022, 15:14
Цитата Сообщение от helter Посмотреть сообщение
Поэтому и в гугловском руководстве по стилю написано, что не используйте рекурсию без нужды.
Lisp может реализовывать многие хвостовые рекурсивные вызовы функции внутри как циклы
и избегать накладных расходов памяти стека при вызове функции.

При прочих равных условиях итерации и рекурсии,
скорее всего выберу рекурсию
1
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
12.07.2022, 17:05
Цитата Сообщение от chessman2 Посмотреть сообщение
Lisp может реализовывать многие хвостовые рекурсивные вызовы функции внутри как циклы
CL не обязан так делать (в нём вообще нет формального определения "хвостового вызова") и умение зависит от реализации. Всеми любимый SBCL по умолчанию их не оптимизирует.
1
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
12.07.2022, 20:35  [ТС]
helter, А как заставить оптимизировать?
0
 Аватар для chessman2
164 / 144 / 10
Регистрация: 21.10.2012
Сообщений: 492
13.07.2022, 00:02
Цитата Сообщение от Regrin1 Посмотреть сообщение
А как заставить оптимизировать?
Можете эту умную разработку попробовать.
https://gitlab.common-lisp.net/frideau/ptc
0
217 / 212 / 8
Регистрация: 09.06.2019
Сообщений: 240
Записей в блоге: 1
13.07.2022, 08:43
helter, вот что написано в документации по SBCL:
5.3.4 Debug Tail Recursion

The compiler is “properly tail recursive.” If a function call is in a tail-recursive position, the stack frame will be deallocated at the time of the call, rather than after the call returns. Consider this backtrace
т.е на самом деле sbcl оптимизирует хвостовые вызовы, а вот чтобы он этого не делал(что иногда надо при отладке) надо приложить некоторые усилия.

Добавлено через 14 минут
вот я нашел статью по оптимизации хвостовых вызовов
https://0branch.com/notes/tco-cl.html
там сказано что sbcl точно будет оптимизировать все хвостовые вызовы глобально если задать
(declaim (optimize (debug 0) (safety 0) (speed 3)))

т.е отменить отладку и безопасность. но это не значит что по умолчанию sbcl не делает эту оптимизацию, просто иногда, он может её не сделать по соображениям безопасности выполнения кода.

а вот что бы отменить эту оптимизацию надо поставить debug > 2 (из документации по sbcl)
2
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
13.07.2022, 11:47
Значит, был неправ. Мне казалось, нужно выставлять какие-то недефолтные debug и safety.
1
217 / 212 / 8
Регистрация: 09.06.2019
Сообщений: 240
Записей в блоге: 1
13.07.2022, 20:04
Catstail, вернемся немного к "изобретению велосипедов". Вот нашел интересное замечание в книге Идеальная Архитектура

Одной из самых неприметных, но серьезных проблем Мегаполиса было дублирование кода. Без четкой архитектуры и четких правил
размещения функциональности программисты постоянно «изобретали велосипед» по всей кодовой базе. Простые операции, стандартные
алгоритмы и структуры данных повторялись во многих модулях, причем каждая реализация обладала собственным набором неприметных
ошибок и странностей. Более масштабные аспекты, такие как внешний обмен данными и кэширование, тоже были реализованы
многократно.
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
13.07.2022, 20:18
Цитата Сообщение от IisNuINu Посмотреть сообщение
Идеальная Архитектура
Хорошее название, что это за книга?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38205 / 21137 / 4311
Регистрация: 12.02.2012
Сообщений: 34,750
Записей в блоге: 14
13.07.2022, 20:30
IisNuINu, да, дублирование кода - это плохо. Но проблема-то не в "велосипедах" как таковых, а совсем в другом: Без четкой архитектуры и четких правил размещения функциональности программисты постоянно «изобретали велосипед» по всей кодовой базе.. Против этого трудно возразить. Да я с этим и не спорю. Создание масштабных проектов должно базироваться на четкой архитектуре и правилах.

Я бы сформулировал свое "кредо" так: недопустимо, чтобы "чёткие правила" убивали креативность. Вы не согласны?

Добавлено через 7 минут
Цитата Сообщение от helter Посмотреть сообщение
Хорошее название
- особенно, если учесть, что все, что сделано человеком - не идеально.
0
217 / 212 / 8
Регистрация: 09.06.2019
Сообщений: 240
Записей в блоге: 1
13.07.2022, 21:21
helter, так и называется Идеальная архитектура ведущие специалисты о красоте программных архитектур, Диамидис Спинеллис и Георгиос Гусиос.

Добавлено через 12 минут
Catstail, да я согласен. креативность это важно. но её важно проявлять вовремя и по месту. в той задаче которая перед вами стоит, возможно в той которую вы сами себе поставили. Но не возможно писать сколь нибудь значимую систему с нуля, с голого языка программирования. Вернее можно, но это займет много времени. ОЧЕНЬ много. и до решения самой задачи, той самой которая перед вами стоит можно и не дожить, погрязнув в решении мелких проблем, написании вспомогательных библиотек, которые возможно ктото уже решил.
Вот если их нет, то да, тут самое время проявить свою креативность и способность к программированию, как это сделал Баггерс, для занятия графикой написавший библиотеку cepl.

Я когда решил заняться лиспом, перевел две на мой взгляд основные документации по библиотекам: asdf и cffi.
Почему!? Потому что они являются ключем к использованию мирового опыта программирования на языке лисп.
cffi дает интрефейс к сторонним библиотекам, asdf дает интерфейс к системам написанным на лиспе.
Основной мой тезис, что начинающие не умеют использовать мировой опыт программирования, и его игнорирование
это ошибка! А чтобы его использовать его надо изучать, изучать не менее тщательно чем теорию программирования и
построение алгоритмов.
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38205 / 21137 / 4311
Регистрация: 12.02.2012
Сообщений: 34,750
Записей в блоге: 14
14.07.2022, 06:52
Цитата Сообщение от IisNuINu Посмотреть сообщение
Но не возможно писать сколь ни-будь значимую систему с нуля
- я за это и не ратую! Поймите, наконец: креативность и стандартизация важны по-своему. Но они немного друг-другу противоречат. Очень важно соблюсти баланс.

Грамотный (в моем понимании!) программист - это тот, кто знает структуры данных и алгоритмы. Знание библиотек вторично.

Что же до Лиспа, то главная его сила не в библиотеках, а в идеологии языка. Да, если Вы хотите сделать на Лиспе что-то промышленное, то без библиотек - никуда. Это само собой разумеется.

PS

Я уже приводил на Форуме этот пример. Читали "Таинственный остров" Ж. Верна? Сайрес Смит сумел построить цивилизацию, потому что обладал фундаментальными инженерными знаниями. Современный "инженер" (зачастую не знающий даже сопромата - зачем? Все знает программа...) попади он на этот остров, жил бы в пещере и питался ракушками!
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
18.07.2022, 00:28
Цитата Сообщение от Catstail Посмотреть сообщение
Я уже приводил на Форуме этот пример. Читали "Таинственный остров" Ж. Верна? Сайрес Смит сумел построить цивилизацию, потому что обладал фундаментальными инженерными знаниями. Современный "инженер" (зачастую не знающий даже сопромата - зачем? Все знает программа...) попади он на этот остров, жил бы в пещере и питался ракушками!
И что? При этом современный инженер приносит больше пользы современной цивилизации, чем древний. Приводить фантастическое произведение в качестве примера чего-либо --- такое себе. Как и гипотетические ситуации.

И да, не каждому инженеру нужен сопромат. Зачем?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38205 / 21137 / 4311
Регистрация: 12.02.2012
Сообщений: 34,750
Записей в блоге: 14
18.07.2022, 04:52
korvin_, Я рассуждаю с моей (индивидуалистической) точки зрения. Я хочу быть похожим на С.Смита, а не на современный гибрид инженера с офисным клерком.

А мои оппоненты, как я понял, рассуждают с точки зрения так называемых "потребностей общества". И каждый прав по-своему. Например, "инженеру по технике безопасности" сопромат действительно не нужен.
0
Заблокирован
19.07.2022, 12:01
Цитата Сообщение от korvin_ Посмотреть сообщение
И что? При этом современный инженер приносит больше пользы современной цивилизации, чем древний.
Почему вы так решили?
Постройка аквидука для снабжения поселения водой - это несомненная польза.
Разработка айфона - это пустушка, выдаваемая за достижение.
Если говорить о строительстве мостов, зданий, машин, то тут сопромат в самый раз)
0
217 / 212 / 8
Регистрация: 09.06.2019
Сообщений: 240
Записей в блоге: 1
19.07.2022, 14:53
Говорят интернет все знает, а я вот попытался найти песню студентов бауманки по словам и не нашел, но первые слова такие:
"Дана вам балка, в ней все силы поперек.
А я и балку, а я и балку, а я и балку,
рассчитать не смог"

Catstail,
В данном контексте упоминание сопромата лишь усиливает мою аргументацию. потому как знание и изучение сопромата для инженера, это то же самое, что для программиста еще одна БИБЛИОТЕКА которую надо знать. В противном случае выпускник, будет при построении конструкции заниматься изучением прочностных характеристик материалов и ставить эксперименты с точки зрения общих знаний физики, над различными материалами, в то время как от него лишь требуется применить знания сопромата.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38205 / 21137 / 4311
Регистрация: 12.02.2012
Сообщений: 34,750
Записей в блоге: 14
19.07.2022, 16:17
IisNuINu, сопромат - это дисциплина, а не "библиотека". Сопромат для инженера - то же, что понимание алгоритмов для программиста. Так Вы и математику объявите "библиотекой". Не стоит "гнуть мир" под свою картину. Я выхожу из дискуссии.
0
 Аватар для chessman2
164 / 144 / 10
Регистрация: 21.10.2012
Сообщений: 492
24.07.2022, 14:38
Сопромат нужен, но редко. Как бывший инженер-конструктор
это могу сказать.
Типа прикинуть расчет балки. Знаю что выдержит, но...
... полагание на существующие конструкции.
новую волшебную палку - изобретать долго и дорого.
0
Заблокирован
25.07.2022, 12:50
Цитата Сообщение от chessman2 Посмотреть сообщение
Как бывший инженер-конструктор
А почему бывший? Неправильно рассчитали? хи-хи-хи)
0
 Аватар для chessman2
164 / 144 / 10
Регистрация: 21.10.2012
Сообщений: 492
25.07.2022, 17:25
сменил профессию снова ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.07.2022, 17:25
Помогаю со студенческими работами здесь

Типичные ошибки WI-FI
Всем привет! Есть wi-fi роутер TP-LINK. К нему подключено 4 компьютера, а при подключений 5,6,7,8 и т.д. у них не работает интернет выдаёт...

Типичные ошибки новичка
Создал проект консольного приложения, в котором есть строка #import "c:/Program Files/Common Files/System/ADO/msado15.dll"...

Знаете типичные ошибки в ООП? ;)
Прииивет!!! :) :confusion: Вот интересно, какие пунктики вы выделите касаемо ошибок в коде при ООП подходе.:rtfm: Можете не раскрывать...

Ошибки при написании проекта.
Я новичок в программировании на ASP. NET. Напишите, пожалуйста, какие ошибки возникают чаще всего в свежих проектах. Спасибо.

Ошибки при написании программы
1. JA @2 {Если >='A', то на метку @2} SOB AH,32 {Значит английская строчная - вычитаем из кода 32} Вопрос: Почему во 2-ой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru