1
00:00:00,000 --> 00:00:07,690
Представь, мой новый торговый бот в первый же день заработал 11 долларов! Две сделки, две победы.

2
00:00:07,940 --> 00:00:15,271
Вау, 100% винрейт! Пусть и на двух сделках, но это отличное начало. Что за бот?

3
00:00:15,521 --> 00:00:27,652
Назвал его «РВВ Хантер». Простая стратегия, но она сработала. Я был так доволен, что решил внести небольшое улучшение в код и перезапустил его.

4
00:00:28,052 --> 00:00:38,543
А час спустя я вернулся полюбоваться на свою прибыль... и увидел на дашборде нули. Абсолютно всё по нулям, будто ничего и не было.

5
00:00:38,793 --> 00:00:45,804
О нет! Сердце, наверное, в пятки ушло. Подумал, что всё пропало или какой-то сбой в интерфейсе?

6
00:00:46,054 --> 00:00:54,745
Именно! Первая мысль — паника. Я обновлял страницу, кликал везде, но нули смотрели на меня с холодным безразличием.

7
00:00:55,145 --> 00:01:03,156
Но я же помнил, что сделки были! Я полез напрямую в базу данных, написал простой SQL-запрос...

8
00:01:03,406 --> 00:01:05,617
И что там? Деньги нашлись?

9
00:01:05,867 --> 00:01:17,318
Да! Вот они, $11.53, аккуратно записаны на жёстком диске. Бот их сам записал, а теперь смотрит на меня и не понимает, о чём речь.

10
00:01:17,718 --> 00:01:27,529
И тут до меня дошло. Проблема в классической ошибке: разнице между хранилищем, то есть базой данных, и оперативной памятью программы.

11
00:01:27,779 --> 00:01:37,030
А, то есть данные в базе остались, но при перезапуске программа о них «забыла», потому что её внутренняя память обнулилась?

12
00:01:37,280 --> 00:01:46,411
Совершенно верно. Его список закрытых сделок был просто переменной в коде, которая создавалась пустой при каждом запуске.

13
00:01:46,811 --> 00:01:55,622
К счастью, у меня был механизм восстановления состояния для открытых сделок. Я просто забыл добавить туда загрузку закрытых.

14
00:01:55,872 --> 00:01:59,403
И сколько времени занял фикс этой «амнезии»?

15
00:01:59,653 --> 00:02:08,144
Минут 15 и 30 строк кода. Всего-то нужно было научить бота при старте читать свою же историю из базы данных.

16
00:02:08,544 --> 00:02:17,795
В моём случае это забавная история. Но представь, если бы это был коммерческий продукт, и у инвестора пропала бы вся его история успеха.

17
00:02:18,045 --> 00:02:26,456
Это была бы катастрофа. Никто не будет разбираться в коде. Они просто решат, что сервис — дырявое ведро, и уйдут навсегда.

18
00:02:26,706 --> 00:02:32,117
Именно. Доверие, однажды потерянное, вернуть почти невозможно.

19
00:02:32,517 --> 00:02:41,608
Из этой истории я вынес несколько железных правил. Во-первых, всё важное нужно немедленно писать в постоянное хранилище.

20
00:02:41,858 --> 00:02:47,349
А во-вторых, при каждом запуске программы нужно это состояние восстанавливать, верно?

21
00:02:47,599 --> 00:02:57,850
Да. И обязательно тестировать этот процесс, специально «убивая» сервис и проверяя, что всё на месте после перезапуска. Как пожарная тревога.

22
00:02:58,250 --> 00:03:06,541
Забавно, в этом и разница между нами и ИИ. Мы можем забыть что-то важное, просто отвлёкшись на птичку за окном.

23
00:03:06,791 --> 00:03:16,962
А искусственный интеллект забывает только тогда, когда его создатель забывает написать 30 строчек кода. Получается, мы и есть его память!

