По моему опыту обучения сотен программистов, идеи из формальных методов и теории языков программирования (прежде всего теории типов) -- самые лучшие пути выработки сильного вычислительного мышления, правильного думания о коде повседневных прикладных проектов.
Наслаждаюсь отчётами, которые ребята пишут в формате занятий Hard Work (практика в проектировании на основе сильных идей из CS):
- Хочется сначала сказать - "СНАЧАЛА Я НИЧЕГО НЕ ПОНЯЛ ПОТОМ ТОЖЕ НИЧЕГО НЕ ПОНЯЛ". 3 раза перечитал текст, и только на 3 раз понял материал). Метода with в php нет, зато php8 добавил много интересных решений.
- Однажды мне дали PR с +40000 -23000 примерно и сказали что вот эту либу обновили и перестали проходить тесты. Первым делом я пошел в changelog и посмотрел что случилось в новой версии, а там оказалось что добавили поддержку svg шрифтов при рендеренге и поэтому во всех картинках поехали шрифты, т е поведение стало правильным и все что нужно было сделать это перегенерировать картинки. Казалось что баг, а оказалась фича.
- Если миксины просто добавляют новое поведение, то порядок перечисления базовых классов не важен. Если же они должны переопределять или использовать методы родительского класса или друг друга, то нужно учитывать порядок поиска вызываемых методов (method resolution order aka MRO). Кое-где встречаются упоминания, что для этого используется поиск в ширину по дереву наследования, но на самом деле алгоритм немного другой. Если очень хочется отключить модификацию состояний, то лучше сделать это в самом миксине. Или можно использовать питоновскую магию.
Десятки таких и будет больше, ребята молодцы! :) 💥💥💥
Post #628
1.76K