Бэктрекин без рекурсии на Python

В Питоне нет оптимизации хвостовой рекурсии и достаточно жесткий лимит на рекурсивные вызовы. Это может вызвать затруднения при решении задач с помощью алгоритма бэктрекинга: лимита хватает на поиск решения судоку, но он может оказаться слишком низким, если количество решений для проверки в задаче довольно высоко.

more ...

Обзор курса Functional Programming Principles in Scala

Это осенью я закончил курс на Курсере "Functional Programming Principles in Scala". Этот курс - часть специализации из 5 курсов "Functional Programming in Scala." Это 6 недельное введение в функциональное программирование и Scala.

more ...

Хочется добавить тип локальной переменной? Пора делать рефакторинг!

PEP 526 добавляет начиная с Python 3.6 опциональную возможность указать тип для локальной переменной. Это более стройная замена комментариям с указанием типа. Это хорошо, но есть одна ловушка: указывание типа в питоне может скрыть проблемы в коде.

more ...

MongoDB count могут сильно замедлить API

Иногда команда фронтенда или другие потребители API просят выводить в ручках общее число объектов. Если в качестве хранилища используется MongoDB, постарайтесь избежать этого. Такое поведение ручек может значительно их замедлить.

more ...

Не используйте dict так часто

У разработчиков на Python наблюдается тенденция использовать дикты там где нужно и там где нет. В основном, это касается передачи данных внутри приложения в виде дикта, вместо создания объекта. Это плохой дизайн, который приводит к целому вороху проблем, самая страшная из которых - такой код невозможно читать.

more ...

c