Эссе о разработке игр, мышлении и книгах

Как завалить собес у меня

Мы в Palta активно ищем сотрудников, поэтому я собеседую людей уровня senior & lead. А до этого в Melsoft доводилось мидлов и выше собеседовать. Накопился ряд наблюдений, которыми хочется поделиться.

Сначала хотел написать на глобальную тему, вроде разницы между junior, middle, senior & lead, но дело шло туго, поэтому сделаю проще.

Расскажу о косяках, которые с большой вероятностью помешают пройти собеседование конкретно у меня.

По отдельности каждая проблема — не приговор, но точно снижает шансы на положительное впечатление.

Для каждой проблемы я написал упрощённый пример диалога. Надеюсь получилось наглядно. Главное помните, что вопросы и ответы там придуманы специально для иллюстрации проблемы, а не взяты из реальных собесов. По большей части :-)

Далее

Автоматический генератор квестов

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

Несмотря на то, что вопрос автоматической генерации заданий в RPG достаточно древний, общедоступных работающих версий таких генераторов почти нет (скорее совсем нет), если не считать совсем примитивных вариантов. Работ по этой теме тоже не много, хотя, если активно гуглить, кое-что можно откопать. Поэтому надеюсь, что этот текст (и сам генератор, ссылка на репозиторий есть в конце статьи) будет полезен.

Для торопливых: визуализация одного из полученных заданий.

Далее

Python 3 Types in the Wild

Вышла статья с исследованием состояния статической типизации в Python. Я её наискосок просмотрел, всё примерно так, как я и рассказывал в эссе:

Далее несколько интересных цитат.

Далее

Google стал Visionary Sponsor для Python

Новость в блоге PSF.

Не знаю что в PSF понимают под Visionary, но ничего хорошего такое визионерство языку не несёт. Конечно, если оно вообще что-то несёт. Но не вижу смысла продавливать отдельный термин для простого спонсорства — вряд ли PSF сама выбрала такую формулировку.

Цели, задачи, потребности корпорации планетарного масштаба принципиально отличаются от целей, задач и потребностей рядовых пользователей языка. Я даже не знаю как это оспорить можно. Я уже писал на тему целей Google при разработке Go в эссе о типизации в Python.

Своим текущим состоянием: идеологией, возможностями, распространённостью Python обязан в первую очередь рядовым пользователям, не Google.

В частности, одно из очевидных противоречий — вопрос гибкости и контролируемости кода.

Далее

Типы в Python не радуют

Сделал ещё один заход на контроль типов в Python. На этот раз со стороны собственной библиотеки для контроля изменений типов переменных в runtime.

Общие выводы ясны из названия поста, хотя полученная библиотека более-менее работает и я попытаюсь её со временем довести до ума. Если разработчики Python наведут порядок у себя в проекте.

Задумка

Как уже писал в обозрении актуального состояния типизации в Python, правильный подход к контролю типов в языке с динамической типизацией — делать контроль во время исполнения программы.

Краткое обоснование:

  1. Важная часть семантики программы на динамическом языке программирования конструируется во время выполнения программы.
  2. Поэтому закодировать её статически не получится — сложно и дорого.
  3. Поэтому статический анализ типов для динамических языков не пригоден — он игнорирует критические части логики и провоцирует разработчиков на создание костылей для обхода этого игнорирования.
  4. Поэтому анализировать типы имеет смысл только время выполнения программы.

Из библиотек для контроля типов Python во время выполнения можно выделить только typeguard, которая позволяет контролировать входные и выходные параметры функций и методов. Это уже хорошо и удобно, но хочется большего.

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

Библиотеку для такой функциональности я и попытался реализовать, но столкнулся с суровой реальностью.

Далее