Paradigm Linter
Jul. 10th, 2024 10:14 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
вот тут nataraj в очередной раз ругает Python. Но по-моему зря ругает. К сожалению это общее правило. Ежели нечто у нас практически полезное, оно не может быть концептуально чистым. Его задача get things done, а не научить людей правильно мыслить. Нельзя вырезать узор на дереве инструментом, который не позволяет порезаться.
Поэтому, если испольовать для обучения не игрушечные инструменты, а настоящие (кстати perl это касается в примерно той же степени), то нужен какой-то отдельный прибамбас, который будет следить за тем, чтобы ученик учился мыслить правильно, концептуально чисто, а не эклектично. (на следующем этапе обучения ученика надо будет научить когда, как и почему надо уметь отсупать от концептуальной чистоты).
Вот у нас есть такие инструменты как pylint и perlcritic, которые находят разнообразные стилистические и не только погрешности. Я вообще взял себе за правило не коммитить питоновский код, не проходящий pylint и шелловский код, не проходящий shellcheck, Потому что если проанализируешь все ворнинги этих инструментов и некоторые потключаешь управляющим комментарием в конкретном месте кода, будешь по крайней мере уверен что код делает то, что ты имел в виду.
Но для целей (само)обучения нужен инструмент более высокого уровня. Который будет тыкать в нос "вот у тебя 80% кода написано в объектной парадигме, а здесь ты почему-то используешь чисто процедурное решение". То есть отслеживать применение известных парадигм и выдавать предупреждение где происходит переключение с одной на другую. Наверное, с помощью нынешних LLM такое уже можно написать.
Видимо, тут нужен подход, подобный тому, который использует perlcritic - учебник, и в сообщениях программы линтера ссылки на конкретные разделы этого учебника, в которых достаточно пространно объяснено почему так не надо делать.
no subject
Date: 2024-07-10 04:27 pm (UTC)no subject
Date: 2024-07-10 04:42 pm (UTC)Если что-то не показалось нужным ни одному из тысячи дебиановских мейнтейнеров, есть подозрение что оно не нужно и мне. И старья я как-то не особо наблюдаю. Ну это может я такой консерватор, для меня всё, что написано в этом тысячелетии - не старьё.
Ну что там старьё? clang 16.0.6 или gcc 12.2.0? Или может openssl 3.0.13, libxml2 2.9.14? Там даже постгрес вполне актуальный - 15.7, выпущенный в мае этого года.
no subject
Date: 2024-07-10 05:01 pm (UTC)Некоторые важные питоновские библиотеки и программы рекомендуется обновлять:
pip
,setuptools
,wheel
. Иных библиотек вообще нет в дистрибутиве, а я ими пользуюсь.auditwheel
, например.wxPython
.