Архив метки: Теория

Верификация частными случаями

Буду говорить в контексте программирования, но соображения можно распространить шире.

Когда мы описываем алгоритм: программу, доказательство теоремы или решение математической задачи — мы строим его описание в рамках некоторой формальной модели. В рамках соглашений и ограничений, которые мы явно или неявно принимаем.

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

Отсюда вытекает интересная проблема.

Читать далее

Тарантога: второй блин

Потоки данных во второй версии прототипа Тарантоги. Кликните, чтобы увеличить.

Продолжаю эксперименты. Как видно из заголовка, вторая попытка тоже не удалась, хотя выглядит симпатичнее.

Реализация ушла довольно далеко от описанного в посте о первом блине. В частности, GraphQL не подошёл.

Как всегда, работа породила сторонние результаты. Я подумал об уменьшении сложности работы с данными, вынес в отдельную библиотеку логику работы с предикатами.

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

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

А пока расскажу что получилось на этот раз.

Читать далее

Python 3 Types in the Wild

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

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

Читать далее

Бесконечность схем данных

Программист думает о путях, которыми ходят байты. Демон сидящий (с) Врубель

Расскажу об одной боли при разработке и проектировании ПО — преобразованиях данных между их схемами. Буду говорить о серверах, как наиболее наглядном и знакомом мне примере, но соображения можно распространить на весь софт. 

Для демонстрационных целей местами может случиться некоторое преувеличение. 

Рассмотрим простейший проект, этакий минимальный набор:

  • один тип клиентов;
  • один сервис;
  • одно хранилище.

Данные, соответственно, ходят в обе стороны:

  • между клиентом и сервисом; 
  • между сервисом и хранилищем.

Сколько схем данных вы тут видите?

Читать далее

Значимость события в ММО

В комментариях ММОзговеда случилось обсуждение, которое затронуло по касательной такую штуку как значимость события для игрока. Вынесу оттуда свои соображения.

Читать далее