Корни одиночества

G
Завершён
34
1
автор
Серия:
Фэндом:
Размер:
304 страницы, 67 197 слов, 18 частей
Описание:
Примечания:
Публикация на других ресурсах:
Уточнять у автора / переводчика
34 Нравится 2 Отзывы 14 В сборник

Цифровое убежище

Настройки
Начальная школа Сакура, класс 1-А, осень 2015 года. Кадзуто 7 лет. Дождь барабанил по окнам класса, создавая монотонный фон для урока чистописания. Кадзуто старательно выводил иероглифы, но мысли его были далеко от школьных заданий. Сегодня вечером он планировал попробовать создать новую программу — симулятор роста растений для роботов-садовников Суго. Формула роста... Если солнечный свет умножить на количество воды, плюс время, минус вредители... Нет, слишком просто. Нужно учесть сезоны, тип почвы, температуру... — Кадзуто-кун, — голос Танигучи-сенсей вернул его в реальность. — Можешь показать свою работу? Ой. Я не следил за временем. Надеюсь, написал достаточно. Он поднял тетрадь, демонстрируя аккуратно выведенные иероглифы. Учительница кивнула с одобрением. — Хорошо. Но старайся не отвлекаться. Не отвлекаться. Легко сказать. Но в голове так много интересных задач. За соседней партой Дайчи бросил на него сочувствующий взгляд. За месяцы учёбы они научились понимать друг друга без слов. Дайчи тоже часто терялся в собственных мыслях, особенно когда думал о том, как устроены механизмы. Школьный двор, большая перемена На большой перемене дети высыпали во двор, несмотря на моросящий дождь. Кадзуто, Дайчи и Аяме устроились под навесом, наблюдая за игрой других детей в футбол. — Смотрите, как они промокают, — заметила Аяме. — И всё равно играют. Почему? Хороший вопрос. Почему люди делают что-то, даже когда это неудобно? — Может быть, им нравится сама игра больше, чем комфорт? — предположил Кадзуто. — Или они не хотят выглядеть слабыми, — добавил Дайчи. Не хотят выглядеть слабыми. Да, это тоже важно для людей. Аяме задумчиво кивнула. — А что важнее — делать то, что нравится, или то, что от тебя ждут другие? Сложный вопрос. Очень сложный вопрос для семилетних детей. Кадзуто молчал, размышляя. В последнее время он всё чаще сталкивался с этой дилеммой. В школе от него ждали, что он будет "обычным" ребёнком — играть в те же игры, интересоваться тем же, что и остальные. Но его настоящие интересы лежали в совершенно других областях. — Думаю, нужен баланс, — сказал он наконец. — Иногда делать то, что ждут другие, чтобы не причинить им боль. Но иногда — то, что важно для тебя. Баланс. Как в городском планировании — нужно учесть потребности всех групп. — А если эти вещи совсем не совпадают? — не унималась Аяме. — Тогда... тогда нужно найти людей, у которых ожидания ближе к твоим интересам. Как мы трое. Мы нашли друг друга, потому что думаем похоже. Дайчи неожиданно изменил тему: — Кадзуто, а можешь научить меня программировать дома? Родители всё-таки купили компьютер! У Дайчи есть компьютер! Значит, можно будет работать над проектами вместе. — Правда? — обрадовался Кадзуто. — Конечно! А какой компьютер? — Не знаю точно. Папа сказал, что для обучения и простых программ достаточно. — Тогда после школы пойдём к тебе? — Да! А ты покажешь мне, как создавать программы? Покажу. И может быть, мы сможем создать что-то вместе. Аяме слушала их разговор с интересом, но и с лёгкой грустью. — А у меня родители считают компьютеры слишком дорогими, — призналась она. Жаль. Аяме бы понравилось программирование. У неё хорошо с логикой. — Ничего, — утешил её Кадзуто. — Можешь приходить к нам. И потом, не обязательно программировать на компьютере. Можно планировать алгоритмы на бумаге. — Алгоритмы? — Пошаговые инструкции для решения задач. Как рецепт, только не для готовки, а для любого дела. Алгоритмы повсюду. Даже в том, как мы одеваемся утром или собираем портфель. — Покажешь? — заинтересовалась Аяме. — Конечно. Например, алгоритм для планирования идеального школьного дня. Дом Дайчи, квартира в спальном районе, после школы Квартира Дайчи была меньше дома Кадзуто, но уютной и технически оснащённой. В углу гостиной стоял новенький компьютер — более современный, чем домашний компьютер Кадзуто. Хорошая машина. И монитор цветной! А у нас дома чёрно-белый. — Папа выбирал долго, — объяснил Дайчи, заметив восхищённый взгляд друга. — Сказал, что если покупать, то хороший, чтобы на годы хватило. Родители Дайчи оказались инженерами, и это было заметно по обстановке. Везде лежали технические журналы, на полках стояли модели самолётов и автомобилей, а на стенах висели чертежи каких-то механизмов. Семья технарей. Неудивительно, что Дайчи так хорошо понимает, как всё работает. — Дайчи рассказывал, что ты увлекаешься программированием, — сказала его мама, Кэйко-сан. — Это замечательно для такого возраста. — Спасибо, — скромно ответил Кадзуто. — Мне просто интересно создавать программы. — А что именно тебя привлекает в программировании? Что привлекает? Сложный вопрос. Кадзуто задумался. — Возможность создать что-то из ничего. И то, что компьютер делает именно то, что я ему скажу. Никаких недомолвок, никаких скрытых смыслов. Именно то, что скажу. В программировании нет социальных сложностей. Кэйко-сан кивнула с пониманием. — Логичность и предсказуемость. Это действительно привлекает многих технически мыслящих людей. — А ещё можно моделировать разные ситуации, — добавил Кадзуто. — Проверять идеи без последствий в реальном мире. Без последствий в реальном мире. Если программа не работает, никто не пострадает. Комната Дайчи, первые уроки программирования Кадзуто включил компьютер и запустил BASIC. Цветной монитор делал программирование ещё более привлекательным — команды можно было выделять разными цветами. — Начнём с простого, — сказал он, усаживаясь за клавиатуру. — Программа, которая здоровается с пользователем. С простого. Но даже простое может быть интересным, если подходить творчески. Он набрал:       10 PRINT "Как тебя зовут?"       20 INPUT N$       30 PRINT "Привет, "; N$; "!"       40 PRINT "Сегодня хороший день для программирования!" — Попробуй запустить, — предложил он Дайчи. Дайчи набрал RUN и ввёл своё имя. Программа поприветствовала его по имени. — Это круто! — воскликнул он. — Как будто компьютер действительно со мной разговаривает! Разговаривает. В каком-то смысле так и есть. — А теперь попробуй изменить программу, — предложил Кадзуто. — Добавь ещё один вопрос. Дайчи задумался, затем добавил строку:       25 INPUT "Сколько тебе лет?"; A       35 PRINT "Тебе "; A; " лет! Здорово!" Программа заработала, и Дайчи просиял от гордости. — Я создал программу! — восхитился он. Он понял! Понял, что программирование — это творчество, а не просто набор команд. — Отлично, — похвалил Кадзуто. — А теперь попробуем что-то сложнее. Программу, которая помогает планировать день. Следующий час они провели, создавая программу-органайзер. Простую, но функциональную.       10 PRINT "Планировщик дня"       20 PRINT "Сколько дел планируешь?"       30 INPUT D       40 FOR I = 1 TO D       50 PRINT "Дело номер "; I; ":"       60 INPUT T$       70 PRINT "Время на выполнение (минут):"       80 INPUT M       90 PRINT "Дело: "; T$; ", время: "; M; " минут"       100 NEXT I       110 PRINT "План на день готов!" Планировщик дня. Простой, но полезный. И Дайчи понимает каждую строку. — Видишь? — объяснил Кадзуто. — Программирование — это не только игры и развлечения. Можно создавать полезные инструменты. — А можно создать программу для планирования города? — спросил Дайчи. Для планирования города. Мечта! Но пока слишком сложно. — Можно, но очень сложно. Сначала нужно изучить много математики, алгоритмов, научиться работать с графикой. — А с чего начать? Кадзуто задумался. — Может быть, с программы, которая считает площади и периметры разных фигур? Это основа для планирования участков. Площади и периметры. Геометрия на службе у урбанистики. Они принялись за новую программу:       10 PRINT "Калькулятор для планировщика"       20 PRINT "1 - Прямоугольник"       30 PRINT "2 - Треугольник"       40 PRINT "3 - Круг"       50 INPUT "Выбери фигуру: "; F       60 IF F = 1 THEN GOSUB 100       70 IF F = 2 THEN GOSUB 200       80 IF F = 3 THEN GOSUB 300       90 END       100 INPUT "Длина: "; L       110 INPUT "Ширина: "; W       120 PRINT "Площадь: "; L * W       130 PRINT "Периметр: "; 2 * (L + W)       140 RETURN       200 INPUT "Основание: "; B       210 INPUT "Высота: "; H       220 PRINT "Площадь: "; B * H / 2       230 RETURN       300 INPUT "Радиус: "; R       310 PRINT "Площадь: "; 3.14 * R * R       320 PRINT "Длина окружности: "; 2 * 3.14 * R       330 RETURN Уже не так просто. Условия, подпрограммы. Но Дайчи следит за логикой. — Сложно, — признался Дайчи, изучая код. — Но логично. — Программирование — это искусство разбивать сложные задачи на простые части, — объяснил Кадзуто. — Каждая строка проста, но вместе они решают большую задачу. Разбивать сложное на простое. Как в городском планировании — большой город состоит из районов, районы из кварталов, кварталы из домов. Кухня семьи Дайчи, полдник За чаем к мальчикам присоединился папа Дайчи, Хирото-сан. Он работал инженером-конструктором и с интересом расспрашивал о программировании. — Показывай, что вы создали, — попросил он. Дайчи с гордостью продемонстрировал планировщик дня и калькулятор площадей. — Впечатляюще для первого дня, — одобрил Хирото-сан. — А планируете развивать эти программы дальше? Развивать. Интересная мысль. Можно добавить новые функции. — Можно добавить расчёт объёмов, — предложил Кадзуто. — Для планирования зданий. — А можно добавить базу данных дел в планировщик, — подхватил Дайчи. — Чтобы сохранять планы на разные дни. База данных. Это уже серьёзно. Но почему бы не попробовать? — База данных — это сложно, — предупредил Хирото-сан. — Но можно начать с простого — сохранения данных в файлы. — А как это работает? — заинтересовался Кадзуто. — Программа записывает информацию на диск, а потом может её прочитать в следующий раз. Постоянная память. Как память человека, только надёжнее. — Покажете? — попросил Дайчи. Хирото-сан сел за компьютер и продемонстрировал простейшие операции с файлами. Для Кадзуто это было откровением — программы могли не только вычислять, но и запоминать информацию между запусками. Запоминать информацию. Это открывает совершенно новые возможности. — А можно создать программу, которая запоминает планы городов? — спросил он. — Технически можно, — ответил Хирото-сан. — Но это потребует изучения структур данных, алгоритмов поиска, возможно графики. Структуры данных. Алгоритмы поиска. Графика. Столько всего нужно изучить. — А где можно научиться всему этому? — В книгах, журналах, позже в университете. А пока можете экспериментировать с простыми задачами. Дорога домой, вечер По дороге домой Кадзуто размышлял о прошедшем дне. Программирование с Дайчи оказалось ещё интереснее, чем он ожидал. Вдвоём они генерировали больше идей, чем каждый по отдельности. Коллективное мышление. Когда люди думают вместе, результат получается лучше. Он представлял, как они могли бы развивать свои программы. Добавить графику, создать интерфейс, соединить разные модули в единую систему. Единую систему. Как операционная система компьютера или инфраструктура города. В автобусе он достал блокнот и начал набрасывать идеи для будущих проектов: Программа для расчёта оптимальных маршрутов в городеСимулятор роста растенийПланировщик ресурсов для строительстваБаза данных зданий с их характеристиками Столько идей! И теперь есть с кем их воплощать. Мама, сидевшая рядом, заглянула в блокнот. — Что это? — поинтересовалась она. — Идеи для программ, которые мы будем создавать с Дайчи. — Амбициозные планы, — улыбнулась мама. — А не слишком ли сложно для твоего возраста? Слишком сложно? Может быть. Но разве не стоит попробовать? — Начнём с простого и постепенно усложним, — ответил Кадзуто. — Папа говорил, что любой сложный проект начинается с маленьких шагов. — Мудрый подход, — согласилась мама. Дом Киригая, вечер Дома Кадзуто сразу прошёл к компьютеру. Хотелось попробовать создать что-то новое, применить полученные знания. Что бы такое написать? Что-то полезное, но не слишком сложное. Он решил создать программу для планирования семейного бюджета — тему, которую недавно обсуждали родители.       10 PRINT "Семейный бюджет"       20 PRINT "Доходы:"       30 INPUT "Зарплата папы: "; P1       40 INPUT "Зарплата мамы: "; P2       50 LET INCOME = P1 + P2       60 PRINT "Общий доход: "; INCOME       70 PRINT "Расходы:"       80 INPUT "Продукты: "; F       90 INPUT "Коммунальные: "; U       100 INPUT "Транспорт: "; T       110 INPUT "Одежда: "; C       120 INPUT "Развлечения: "; E       130 LET EXPENSES = F + U + T + C + E       140 PRINT "Общие расходы: "; EXPENSES       150 LET BALANCE = INCOME - EXPENSES       160 IF BALANCE > 0 THEN PRINT "Остаток: "; BALANCE       170 IF BALANCE < 0 THEN PRINT "Превышение: "; -BALANCE       180 IF BALANCE = 0 THEN PRINT "Баланс нулевой" Работает! Простая, но полезная программа. — Что ты делаешь? — Суго заглянула через плечо. — Программу для планирования денег семьи. — А можно добавить категорию "игрушки"? — с надеждой спросила она. Игрушки. Конечно, дети тоже часть семейного бюджета. — Можно, — улыбнулся Кадзуто и добавил строку. К ним присоединился папа, заинтересовавшийся программой. — Семейный бюджет? — удивился он. — Интересная идея. А откуда взялась? — Слышал, как вы с мамой обсуждали расходы на этот месяц. Подумал, что программа могла бы помочь. Помочь семье. Использовать программирование для решения реальных задач. Мичиру изучил код. — Хорошая структура, — отметил он. — А можешь добавить планирование на будущее? — Как это? — Например, рассчитать, сколько месяцев нужно копить на покупку компьютера для Дайчи. Планирование на будущее. Интересная задача. Кадзуто задумался и добавил новый блок:       190 PRINT "Планирование покупки:"       200 INPUT "Стоимость покупки: "; COST       210 IF BALANCE <= 0 THEN PRINT "Сначала нужно сбалансировать бюджет"       220 IF BALANCE > 0 THEN LET MONTHS = COST / BALANCE       230 IF BALANCE > 0 THEN PRINT "Нужно копить "; MONTHS; " месяцев" Математика на службе у планирования. Числа помогают принимать разумные решения. — Очень практично, — похвалил папа. — Такие навыки пригодятся в жизни. — А можно создать программу для планирования учёбы? — поинтересовалась подошедшая мама. Планирование учёбы. Распределение времени между предметами, отслеживание прогресса. — Можно попробовать, — согласился Кадзуто. — Но это сложнее. Нужно учесть разные предметы, время на каждый, сложность тем. — Не обязательно делать всё сразу, — заметил папа. — Начни с простого планировщика домашних заданий. Простого планировщика. Хорошая идея для начала. Дом Киригая, выходные На выходных к Кадзуто пришли Дайчи и Аяме. Они планировали провести день, работая над новыми программными проектами и обновляя Lego-город. — Смотрите, что я создал, — Кадзуто показал друзьям программу семейного бюджета. Они оценят практичность. И может быть, предложат улучшения. Дайчи и Аяме изучили код с интересом. — Полезная программа, — одобрила Аяме. — А можно добавить категории расходов на образование и благотворительность? Образование и благотворительность. Аяме думает о важных вещах. — Конечно, — согласился Кадзуто. — А ещё можно добавить графики расходов по месяцам. — Графики? — удивился Дайчи. — Это возможно в BASIC? — Простые — да. Можно рисовать символами. Символьная графика. Примитивно, но наглядно. Они принялись улучшать программу, добавляя новые функции. Работать втроём оказалось ещё интереснее — каждый вносил свои идеи и навыки. — А что, если создать целую систему программ для дома? — предложила Аяме. — Бюджет, планировщик дел, учёт продуктов в холодильнике. Система программ. Интегрированное решение для домашнего хозяйства. — Как операционная система, только для семьи, — подхватил Дайчи. — Семейная операционная система, — повторил Кадзуто. — Звучит фантастично. Фантастично, но почему бы и нет? Начать можно с простых модулей. — Можем попробовать, — сказал он. — Каждый создаёт свой модуль, а потом объединяем. — Я возьму планировщик питания, — выбрала Аяме. — Меню на неделю, список покупок, калории. — А я — учёт вещей в доме, — решил Дайчи. — Где что лежит, когда купили, когда нужно заменить. Каждый выбрал то, что ему близко. Аяме — заботу о людях, Дайчи — организацию вещей. — Тогда я создам главное меню, которое объединит все программы, — сказал Кадзуто. — И добавлю модуль планирования времени. Главное меню. Центральный узел системы. Как мозг города — координирует все службы. Следующие три часа они провели за программированием. Каждый работал над своим модулем, но время от времени обсуждали общие вопросы дизайна и взаимодействия между программами. К концу дня у них получился работающий прототип семейной операционной системы. Простой, с текстовым интерфейсом, но функциональный. Главное меню: СЕМЕЙНАЯ СИСТЕМА v1.0 ╔══════════════════════════════╗ ║ ДОБРО ПОЖАЛОВАТЬ! ║ ╠══════════════════════════════║ ╠ 1. Семейный бюджет ║ ║ 2. Планировщик питания ║ ║ 3. Учёт вещей ║ ║ 4. Планировщик времени ║ ║ 5. Выход ║ ╚══════════════════════════════╝ Работает! Наша первая настоящая система программ. — Невероятно! — восхитилась Аяме. — Мы создали настоящую компьютерную систему! — И каждый внёс свой вклад, — добавил Дайчи. — Как настоящая команда программистов. Команда программистов. Мне нравится, как это звучит. — А что дальше? — спросил Кадзуто. — Можем улучшать систему, добавлять новые модули. — А можем попробовать создать что-то для школы, — предложила Аяме. — Программу для учителей или учеников. Для школы. Интересная идея. Что могло бы быть полезно в школе? — Электронный журнал? — предположил Дайчи. — Или планировщик расписания, — добавил Кадзуто. — А библиотечную систему? — предложила Аяме. — Учёт книг, кто что взял, когда вернуть. Библиотечная система. Практично и не слишком сложно. — Библиотечная система — отличная идея, — согласился Кадзуто. — Можем предложить школьному библиотекарю. — Правда? — удивилась Аяме. — Мы можем создать программу для настоящего использования? — Почему бы и нет? — пожал плечами Кадзуто. — Если программа работает и решает реальную задачу. Реальная задача. Переход от игрушечных программ к настоящим. Школьная библиотека, понедельник после уроков В понедельник после уроков они втроём отправились в школьную библиотеку. Миямото-сан, пожилая библиотекарша, встретила их с удивлением. — Что-то случилось, дети? — спросила она. Она думает, мы пришли из-за проблем. Нужно аккуратно объяснить цель визита. — Миямото-сан, мы создали компьютерную программу и хотели бы показать её вам, — вежливо сказал Кадзуто. — Компьютерную программу? — удивилась библиотекарша. — А зачем мне её смотреть? — Она помогает вести учёт книг, — объяснила Аяме. — Кто какие книги взял, когда нужно вернуть. Она заинтересовалась. В глазах появились искорки любопытства. — Покажите, — попросила Миямото-сан. Они продемонстрировали программу на листе бумаги, объяснив, как она работает. Библиотекарша слушала внимательно, иногда задавая вопросы. — А как программа узнает, что книга просрочена? — спросила она. — Сравнивает текущую дату с датой возврата, — объяснил Дайчи. — И выводит список просроченных книг. — А если читатель потерял книгу? — Есть специальная пометка "потеряна", — ответила Аяме. — И программа считает стоимость возмещения. Она задаёт практические вопросы. Значит, серьёзно рассматривает возможность использования. — Интересно, — задумчиво сказала Миямото-сан. — А вы можете настроить программу под нашу библиотеку? Настроить под конкретную библиотеку. Это уже серьёзная работа. — Можем попробовать, — осторожно ответил Кадзуто. — Но нужно понять, какие именно функции вам нужны. — Тогда давайте встретимся завтра после уроков. Я покажу вам, как сейчас ведётся учёт, и мы обсудим, что можно улучшить. Настоящий заказ! Первый в жизни коммерческий проект. Дети переглянулись, едва сдерживая восторг. — Конечно, Миямото-сан, — согласился Кадзуто. — Мы будем завтра. Дорога домой, после библиотеки — Не могу поверить! — восхищалась Аяме. — Мы получили настоящий заказ! — И это только начало, — добавил Дайчи. — Если программа понравится, может быть, другие школы тоже заинтересуются. Другие школы. Масштабирование. Превращение хобби в бизнес. — Главное — сделать программу действительно полезной, — заметил Кадзуто. — Не просто технически правильной, а удобной для работы. Удобной для работы. Пользовательский опыт важнее технических изысков. — А что если мы создадим компанию? — предложила Аяме. — Компанию по разработке программ для школ. — В семь лет? — засмеялся Дайчи. — Почему бы и нет? — серьёзно ответила Аяме. — Есть же дети-актёры, дети-спортсмены. Почему не может быть детей-программистов? Дети-программисты. Звучит фантастично, но логично. Кадзуто задумался. Идея была захватывающей, но и пугающей одновременно. — Сначала нужно доказать, что мы можем создавать действительно качественные программы, — сказал он. — А потом уже думать о компании. Доказать качество. Заработать репутацию. Построить портфолио. — Тогда библиотечная система — наш первый серьёзный тест, — решил Дайчи. — Да, — согласился Кадзуто. — И мы должны пройти его идеально. Дом Киригая, вечернее планирование Дома Кадзуто сел за стол с блокнотом и начал планировать работу над библиотечной системой. Это был его первый опыт управления настоящим проектом. Управление проектом. Планирование задач, распределение ролей, контроль сроков. Он записал основные требования: - Учёт книг (название, автор, жанр, местоположение) - Учёт читателей (имя, класс, контакты) - Выдача и возврат книг - Поиск по каталогу - Отчёты по просроченным книгам - Статистика популярности книг Шесть основных функций. Каждую можно разбить на подзадачи. Затем он составил план работы: 1. Встреча с библиотекарем — анализ требований 2. Проектирование структуры данных 3. Создание модулей программы 4. Тестирование 5. Обучение пользователя 6. Внедрение и поддержка Шесть этапов. Как в профессиональной разработке. — Что это? — спросила Суго, заглянув в блокнот. — План создания программы для школьной библиотеки. — А можно я помогу? Суго хочет помочь. У неё хорошие идеи, и она понимает потребности детей. — Конечно. Можешь придумать, как сделать программу удобной для детей. — Как это? — Например, как искать книги. Дети не всегда помнят точное название или автора. Поиск для детей. Действительно, специфическая задача. Суго задумалась. — А можно искать по цвету обложки? — предложила она. — Или по картинкам на обложке? Поиск по цвету обложки. Необычно, но для детей может быть полезно. — Интересная идея, — кивнул Кадзуто. — А ещё? — По настроению! — воскликнула Суго. — Весёлые книги, грустные, страшные. — Поиск по настроению, — записал Кадзуто. — Тоже хорошо. Поиск по эмоциональному содержанию. Нетривиальная задача, но реализуемая. — А ещё можно добавить картинки в программу, — продолжала Суго. — Чтобы было красиво. — В текстовом режиме сложно, но можно попробовать символьные рисунки. Символьные рисунки. ASCII-арт для украшения интерфейса. К концу вечера у Кадзуто получился подробный план проекта с учётом предложений Суго. План выглядел профессионально и вместе с тем учитывал потребности детей. Профессиональный план. Я серьёзно отношусь к этому проекту. Школьная библиотека, вторник после уроков Во вторник Кадзуто, Дайчи и Аяме пришли в библиотеку с блокнотами и ручками. Миямото-сан ждала их с кипой карточек и журналов. — Вот как мы сейчас ведём учёт, — объяснила она, показывая картотеку. — Каждая книга имеет карточку, каждый читатель — формуляр. Бумажная система. Работает, но медленно и неудобно. Кадзуто изучал процесс поиска книги. Библиотекарша перебирала карточки в ящике, сверяла данные, записывала информацию вручную. — Сколько времени занимает поиск одной книги? — спросил он. — Если знаю, где искать — минуту-две. Если нужно проверить несколько вариантов — до десяти минут. Десять минут на поиск одной книги. Компьютер сделал бы это за секунды. — А сколько книг у вас в библиотеке? — Около двух тысяч. И каждый день приходится работать с десятками запросов. Две тысячи записей. Для компьютера — ничто. Для человека — огромный массив данных. Аяме изучала процесс выдачи книг. — А как вы отслеживаете просрочки? — Раз в неделю просматриваю все формуляры, — вздохнула Миямото-сан. — Это занимает почти целый день. Целый день на то, что программа может сделать мгновенно. Дайчи заинтересовался статистикой. — А какие книги читают чаще всего? — Точно не знаю. Могу оценить приблизительно, но для точных данных нужно пересчитывать записи вручную. Никакой аналитики. А ведь эти данные могли бы помочь планировать закупки. После часа наблюдений дети составили список требований к программе: 1. Быстрый поиск книг по автору, названию, жанру 2. Учёт выдач и возвратов 3. Автоматический контроль просрочек 4. Статистика популярности книг 5. Простой интерфейс для библиотекаря 6. Резервное копирование данных Шесть основных требований. Каждое решает реальную проблему. — Сколько времени займёт создание такой программы? — спросила Миямото-сан. Сколько времени? Нужно учесть все этапы. — Две-три недели, — осторожно ответил Кадзуто. — Если работать каждый день после школы. — А я смогу разобраться с программой? — Сделаем интерфейс максимально простым, — пообещала Аяме. — И напишем подробную инструкцию. Простой интерфейс. Программа должна быть удобной для людей, не знакомых с компьютерами. Следующие две недели, интенсивная разработка Следующие две недели стали самыми интенсивными в программистской практике Кадзуто. Каждый день после школы они собирались то у него, то у Дайчи, то у Аяме, работая над своими модулями. Настоящая разработка. С дедлайнами, планами, еженедельными встречами. Программирование оказалось сложнее, чем ожидалось. Простые на первый взгляд задачи требовали учёта множества нюансов. — Смотри, — показывал Дайчи найденную ошибку. — Если ввести имя читателя с апострофом, программа зависает. Апостроф в имени. Кто бы подумал, что это может быть проблемой. — Нужно проверять все вводимые символы, — решил Кадзуто. — Фильтровать недопустимые. Валидация данных. Ещё одна важная тема. Аяме столкнулась с другой проблемой: — А что если две книги имеют одинаковые названия, но разных авторов? Одинаковые названия. Нужен уникальный идентификатор. — Добавим номер экземпляра, — предложил Кадзуто. — Каждая книга получает уникальный номер. Уникальный номер. Как паспорт для книги. Постепенно программа обрастала функциями и защитами от ошибок. Код становился всё сложнее, но и надёжнее. Дом Киригая, финальное тестирование За день до презентации библиотекарше друзья собрались у Кадзуто для финального тестирования. Они заполнили программу тестовыми данными и попробовали все возможные сценарии использования. Финальное тестирование. Последний шанс найти ошибки. — Попробуем выдать книгу, которой нет в наличии, — предложила Аяме. Программа корректно выдала сообщение: "Книга недоступна. Все экземпляры выданы." — А теперь вернём книгу с просрочкой. "Книга возвращена с опозданием на 5 дней. Штраф: 50 йен." Штраф автоматически рассчитывается. Библиотекарше не нужно вычислять вручную. — А если попытаться зарегистрировать читателя без имени? "Ошибка: Поле 'Имя' не может быть пустым." Все ошибки обрабатываются корректно. Программа готова. Дайчи запустил генератор отчётов: "ТОП-5 ПОПУЛЯРНЫХ КНИГ: 1.Алиса в стране чудес - 15 выдач 2. Гарри Поттер - 12 выдач 3. Винни-Пух - 10 выдач 4. Незнайка на Луне - 8 выдач 5. Мумий-тролль - 7 выдач" Статистика работает. Теперь библиотекарша будет знать, какие книги заказывать. — Программа готова, — торжественно объявил Кадзуто. Готова. Наш первый настоящий продукт. Школьная библиотека, демонстрация На следующий день втроём они пришли в библиотеку с дискетой и распечатанной инструкцией. — Покажите, как это работает, — попросила Миямото-сан. Момент истины. Либо программа произведёт впечатление, либо мы провалимся. Кадзуто загрузил программу и продемонстрировал главное меню: БИБЛИОТЕЧНАЯ СИСТЕМА v1.0 ╔══════════════════════════════╗ ║ ДОБРО ПОЖАЛОВАТЬ! ║ ╠══════════════════════════════╣ ║ 1. Работа с книгами ║ ║ 2. Работа с читателями ║ ║ 3. Выдача книг ║ ║ 4. Возврат книг ║ ║ 5. Отчёты ║ ║ 6. Выход ║ ╚══════════════════════════════╝ Красивое оформление. Аяме постаралась с интерфейсом. — Попробуем найти книгу, — предложил Кадзуто. Миямото-сан ввела "Пушкин", и программа мгновенно выдала список всех книг этого автора. — Быстро! — удивилась она. — Намного быстрее картотеки. Она впечатлена скоростью. Хороший знак. Затем они показали выдачу книги. Библиотекарша ввела данные читателя и название книги, программа автоматически рассчитала дату возврата и вывела квитанцию. — А если книгу не вернут вовремя? — Программа каждый день проверяет просрочки, — объяснила Аяме. — И выводит список должников. Автоматический контроль. Больше не нужно проверять тысячи карточек вручную. — Невероятно, — покачала головой Миямото-сан. — Вы решили проблемы, с которыми я мучилась годами. Мы решили реальные проблемы. Создали что-то действительно полезное. — А сложно научиться пользоваться? — Мы написали инструкцию, — показал Дайчи толстую папку. — И можем провести обучение. Инструкция и обучение. Полный цикл внедрения. — Тогда давайте попробуем, — решила библиотекарша. — На следующей неделе начнём переводить картотеку в электронный вид. Согласие! Наш проект будет использоваться реально. Дорога домой, успех По дороге домой друзья не могли сдержать радости. — Мы сделали это! — ликовала Аяме. — Создали настоящую рабочую программу! — И она будет помогать людям каждый день, — добавил Дайчи. Помогать людям каждый день. Лучшей награды для программиста не существует. — А что дальше? — спросил Кадзуто. — Можем создать программы для других школ. — Или для магазинов, — предложила Аяме. — Учёт товаров похож на учёт книг. — А можем попробовать что-то совсем новое, — сказал Дайчи. — Игру или образовательную программу. Столько возможностей. Теперь мы знаем, что способны создавать серьёзные вещи. — Главное — не останавливаться, — решил Кадзуто. — Продолжать учиться и создавать. Месяц спустя, результаты Месяц спустя Миямото-сан пригласила создателей программы в библиотеку, чтобы поделиться результатами. — Ваша программа изменила мою работу, — сказала она с улыбкой. — То, что раньше занимало часы, теперь делается за минуты. Изменила работу к лучшему. Это и есть цель любой технологии. Она показала статистику за месяц: 1. Время поиска книги сократилось с 5 минут до 30 секунд 2. Выдача книги теперь занимает 2 минуты вместо 10 3. Проверка просрочек — 10 минут вместо целого дня 4. Выявлено 15 популярных книг, которые нужно закупить дополнительно Конкретные цифры. Измеримые улучшения. — А ещё директор школы заинтересовался вашей программой, — добавила библиотекарша. — Хочет встретиться с вами на следующей неделе. Директор школы. Это уже серьёзно. — Правда? — удивился Кадзуто. — Да. И ещё звонили из двух других школ. Слышали о нашей программе и тоже хотят попробовать. Две другие школы. Наш проект масштабируется. Дайчи, Аяме и Кадзуто переглянулись. То, что начиналось как школьный проект, превращалось в нечто большее. — Но самое главное, — продолжила Миямото-сан, — дети стали чаще ходить в библиотеку. Им нравится, что поиск книг стал быстрым и удобным. Дети ходят в библиотеку чаще. Мы не просто автоматизировали процесс — мы сделали чтение доступнее. — Спасибо вам, — искренне сказала библиотекарша. — Вы показали, что технологии могут быть не просто сложными, а полезными. Полезными. Вот чем должны быть технологии. Дом Киригая, вечерние размышления Дома Кадзуто сел за свой письменный стол и открыл новый блокнот. На первой странице написал: "Дневник программиста". Дневник программиста. Хочу записывать не только код, но и мысли, идеи, уроки. Первая запись: "Сегодня понял важную вещь. Программирование — это не про компьютеры. Это про людей. Программы нужны для того, чтобы решать человеческие проблемы, делать жизнь проще и лучше. Библиотечная система научила меня: 1. Важно понять потребности пользователей 2. Простота интерфейса важнее сложности кода 3. Тестирование критически важно 4. Командная работа даёт лучшие результаты 4. Настоящая награда — когда твоя программа помогает людям Следующая цель: изучить графическое программирование. Хочу создавать не только полезные, но и красивые программы." Красивые программы. Эстетика тоже важна. — Что пишешь? — спросила подошедшая Суго. — Записываю мысли о программировании. — А можно я тоже буду вести дневник? — попросила она. — Дневник будущего робототехника. Дневник будущего робототехника. Суго тоже серьёзно относится к своим идеям. — Конечно, — улыбнулся Кадзуто. — И можем обмениваться записями, обсуждать идеи. — А ещё можем создать семейный журнал изобретений! — воскликнула Суго. — Записывать все наши идеи и проекты. Семейный журнал изобретений. Хорошая традиция для технической семьи. К ним присоединились родители, заинтересовавшиеся разговором. — Журнал изобретений? — переспросил папа. — Место, где мы записываем идеи, планы проектов, результаты экспериментов, — объяснил Кадзуто. — Как настоящие учёные, — одобрила мама. — Документирование процесса исследований. Документирование исследований. Мы становимся настоящей семьёй изобретателей. — А можно я покажу директору школы наш семейный подход к технологиям? — спросил Кадзуто. — Зачем? — удивился папа. — Может быть, стоит создать в школе кружок программирования. Учить других детей тому, что знаем мы. Кружок программирования. Передача знаний следующему поколению. — Интересная идея, — кивнул папа. — Но готов ли ты учить других? Готов ли? Хороший вопрос. Учить — это большая ответственность. — Можно попробовать, — ответил Кадзуто. — Начать с простого, посмотреть, как получается. — Тогда нужно подготовиться к встрече с директором, — сказала мама. — Продумать программу кружка, материалы, цели. Программа кружка. Ещё один проект для планирования. Спальня Кадзуто, планы на будущее Поздним вечером Кадзуто лежал в кровати, планируя будущее. За несколько месяцев его жизнь кардинально изменилась. Программирование из хобби превратилось в серьёзное увлечение с реальными результатами. Реальные результаты. Программа работает, помогает людям, получает признание. Он думал о встрече с директором школы. Что сказать? Как объяснить важность программирования для детей? Как показать, что это не просто игра, а полезный навык? Полезный навык. Программирование учит логическому мышлению, решению проблем, работе в команде. А ещё думал о новых проектах. Графические программы, игры, образовательные приложения. Столько интересных задач впереди! Столько задач. И теперь я знаю, что способен их решать. — Каз-кун, — позвала Суго, — а ты думаешь, мы действительно можем изменить мир? Изменить мир. Грандиозная цель. Но всё начинается с маленьких шагов. — Думаю, да, — ответил он. — По одной программе, по одному проекту за раз. — А что, если у нас не получится? — Тогда будем учиться на ошибках и пробовать снова. Пробовать снова. Главное качество изобретателя — не сдаваться. — А что самое важное в программировании? — спросила Суго. Кадзуто задумался. За месяцы изучения программирования он понял много важных вещей, но что было главным? — Помогать людям, — сказал он наконец. — Создавать вещи, которые делают жизнь лучше. Делают жизнь лучше. Вот настоящая цель любых технологий. — Тогда мы на правильном пути, — довольно сказала Суго. Кадзуто улыбнулся в темноте. Да, они были на правильном пути. Путь был долгим, полным неизвестности, но он вёл в правильном направлении. В правильном направлении. К будущему, где технологии служат людям, где дети могут изменить мир, где виртуальное и реальное объединяются для общего блага. Засыпая, он представлял, каким может стать мир через десять, двадцать лет. Умные города, помогающие роботы, программы, решающие глобальные проблемы. И где-то в этом мире — его программы, его идеи, его вклад в общее будущее. Мой вклад в общее будущее. Пока маленький, но постоянно растущий. Он не знал ещё, что через несколько лет его навыки программирования и системного мышления станут вопросом выживания в мире, где ошибка в коде означает смерть, а умение быстро адаптироваться к новым системам — разницу между жизнью и гибелью тысяч людей. Пока что это только детские проекты. Но принципы остаются неизменными — понять систему, найти проблемы, создать решение, помочь людям.
34 Нравится 2 Отзывы 14 В сборник