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

Жизнь и работа с моделями

Масштабная модель кораблика. [Источник](https://www.modelboats.co.uk/news/article/puffin/525).

Масштабная модель кораблика. Источник.

Продолжение жизни и работы с ошибками — обсудим штуки на уровень выше.

Эссе получилось большим, но точно найдутся упущенные моменты. Если я что-то забыл — пишите. Буду благодарен и за более интересные примеры.

Итак. Давайте подумаем, как мы предсказываем будущее всякое.

Предсказаниями мы занимаемся постоянно — это буквально суть нашего существования:

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

Это примеры «гарантированных» предсказаний, но даже они могут не исполнится:

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

Фактически, мы никогда не знаем актуальное состояние мира вокруг нас:

  • Не воспринимаем весь спектр информации об окружении, например, не видим в инфракрасном свете.
  • Сигналы до органов восприятия и от них до мозга передаются не мгновенно.
  • Мозг тоже работает не мгновенно.

Мы даже не обладаем всей информацией о прошедших событиях.

Поэтому.

Каждое наше решение и действие основывается на предположениях о прошлом, настоящем и будущем.

Штуки, которыми мы создаём предсказания, называются моделями.

Далее

Как выбрать ВУЗ и специальность

Если вы хотите от жизни большего, не можете сжульничать и родились в СНГ.

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

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

Этот текст мало полезен для тех, кому родители уже подготовили тёплое место, кто косит от армии, кто идёт учится «потому что надо» и так далее.

Строго субъективно, конечно.

Далее

О миграциях backend

Недавно смотрел чего за последние годы сделано в области решений для миграций схем и данных в базах данных и как-то мне все решения не понравились. По крайней мере из open source ни одного проекта без косяков нюансов не нашёл.

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

Я предполагаю, что вы более-менее понимаете суть миграций в БД и сможете ориентироваться в моих допущениях: явных и неявных.

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

Далее

Что почитать, чтобы лучше кодить?

Экспресс пост в ответ на вопрос.

Кратко: чтобы лучше кодить, надо больше кодить :-) и вдумчиво читать код.

Если чуть подробнее, то вопрос сложный и что-то посоветовать из чтения мне сложно:

  • Я уже давно не читал книг для начинающих. Те, что вспомню, могут быть устаревшими лет как 10.
  • У меня другой бэкграунд, о котором сейчас расскажу.

Я больше писал, чем читал :-D В итоге, когда я начал читать шаблоны проектирования, я подумал: «и что тут такого, я уже с этим сталкивался», когда листал совершенный код, я подумал аналогично. То есть моя практика обгоняла теорию.

Из книг я читал то, что советовали преподаватели в универе, благо было кому советовать, и то, что считал интересным. Страуструпа, например, 2 раза прочитал.

Далее

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

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

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

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

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

Далее