Проект «Зелёное Колесо»
Проект «Зелёное Колесо»

Полная версия

Проект «Зелёное Колесо»

Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
1 из 2

Ярослав Мудрый

Проект "Зелёное Колесо"

Глава 1: Первый байт, первый свет

Летним утром, когда солнце только начинало разгонять туман над крышами типичного западного городка Риджвью, в комнате на втором этаже одного из ничем не примечательных домов уже горел свет. Не желтый, теплый свет настольной лампы, а холодное, мерцающее голубое сияние огромного монитора. Это было окно в другой мир. И в этом мире уже несколько часов как находился Лео.

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

На экране в окне терминала – чёрный фон и зелёные буквы – бежали строчки кода. Лео писал свою, уже пятую по счёту, программу. Прошлой была «Умный будильник», который вместо противного писка читал ему афоризмы известных программистов. Та, что была перед ним сейчас, должна была помогать его отцу, бухгалтеру по профессии, сортировать счета. Идея была проста: программа сканировала отсканированные PDF-файлы, находила в них даты, суммы и названия компаний и раскладывала всё по папкам. В теории. На практике же, программа на десятый раз запуска упорно отправляла счёт за воду в папку «Налоги».

– Ну что же ты такое, – пробормотал Лео, не обращаясь ни к кому конкретно. – В строке 47… Ага! Цифра «1» и буква «l»! Опять!

Он поправил ошибку, нажал F5. Зелёные строчки побежали снова. На этот раз всё сработало безупречно. На экране появилось сообщение: «Обработка завершена. 12 файлов отсортировано. Спасибо, что пользуетесь LeoSoft!». Лео широко улыбнулся. Это чувство – когда кусок виртуального мира, созданный твоим мозгом и пальцами, начинает работать, – было сродни волшебству. Первый компьютер, старый и громоздкий «монстр» от дяди-инженера, попал к нему в восемь лет. Родители, Эмили и Дэвид, смотрели на это скептически: «Ещё одну игрушку». Но для Лео это была не игрушка. Это был Лего Вселенной. Он разбирал его, изучал, устанавливал и переустанавливал операционные системы, ломал, чинил и снова ломал. К десяти годам он уже свободно говорил на языке железа и операционок.

Раздался лёгкий стук в дверь.

– Лео, завтрак! И оторвись от этого ящика, а то глаза квадратные станут, – послышался голос матери.

– Уже иду, мам! Просто закончил кое-что важное! – крикнул он в ответ, сохраняя файл с кодом под названием «AccountHelper v1.0».

За завтраком царила обычная семейная идиллия. Отец просматривал новости на планшете, мама наливала апельсиновый сок.

– И что ты там опять собираешь, Архимед? – с улыбкой спросил отец, отрываясь от экрана.

– Помощник для тебя, пап. Программу, которая сама разложит все твои счета по папкам.

– Серьёзно? – Дэвид приподнял бровь. – А она не отправит мою годовую отчётность в корзину?

– Версия 1.0 теоретически не должна, – с деловым видом ответил Лео. – Но для полной уверенности нужны полевые испытания. Можешь стать моим бета-тестером.

– О, почётно, – засмеялся отец. – Договорились. После работы.

Лео знал, что родители гордятся им, хоть и не всегда понимали, чем он целыми днями занят. Они, люди «традиционных» профессий – бухгалтер и школьная учительница, – воспитывали его в простых принципах: будь добрым, любознательным, ответственным и много двигайся. Последнее Лео соблюдал религиозно. После завтрака, до того как сесть за код, он всегда совершал велопрогулку.

Через полчаса он уже мчался по велодорожке вдоль реки, что протекала через Риджвью. Ветер свистел в ушах, смывая остатки цифровой концентрации. Лео любил это чувство скорости и свободы. Его мозг, отключившись от логических задач, переходил в режим фонового созерцания. Именно на таких прогулках часто приходили самые лучшие идеи. Сегодня он думал о том, как можно было бы улучшить городскую систему проката велосипедов. Приложение было неудобным, станции вечно пустые или переполненные. «Нужен умный алгоритм прогнозирования, – размышлял он, обгоняя бегуна. – С учётом времени суток, погоды, событий в городе… И геймификация, чтобы люди чаще пользовались…»

После прогулки и душа был запланирован «код-двор» – встреча в онлайн-чате с его немногочисленными, но верными друзьями по интересам: Майлзом и Авой.

Майлз, толстячок с бездной остроумия и энциклопедическими знаниями про «железо», жил в соседнем городе. Он мог часами рассказывать о преимуществах одной архитектуры процессора над другой. Ава, рыжая и стремительная, была гением дизайна и интерфейсов. Она считала, что самая крутая технология бессмысленна, если ей неудобно пользоваться. Их трио было идеальным балансом: Лео – архитектор и логик, Майлз – инженер-конструктор, Ава – волшебница, превращающая их творения во что-то красивое и доступное.

В 14:00 по местному времени на экране Лео всплыло окно группового видеозвонка. Появились два знакомых лица.

– Всем привет, земляне! – начал Майлз, его камера традиционно была направлена в потолок, показывая только часть подбородка и полку с процессорами. – Лео, твой «Помощник» ещё не сожрал чьи-то финансы?

– Пока нет. На очереди финансы моего отца, – улыбнулся Лео. – А у вас что нового?

Ава, сидевшая на фоне плаката с японскими аниме-персонажами, оживилась:

– Я думаю над нашим следующим проектом. Всё эти утилиты – это здорово, но скучно. Нужно что-то… масштабное. Полезное для многих. И красивое.

– Я как раз на велопрогулке думал о системе проката, – сказал Лео. – Вот! – воскликнула Ава. – Экология, здоровый образ жизни, удобство! Мы можем сделать приложение, которое будет не просто показывать станции, а будет… предсказывать, строить идеальные маршруты, учитывая рельеф, чтобы не пришлось в горку лезть… Начислять бонусы за километраж, которые можно обменять на кофе в партнёрских кафе…

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

Глаза у троицы загорелись тем самым огнём, который знаком всем изобретателям и мечтателям. Они говорили ещё час, строя планы, рисуя в воздухе архитектуру будущего приложения, которое они, в шутку, уже назвали «GreenWheel» («Зелёное Колесо»).

Под вечер, после ужина и помощи матери с мытьём посуды, Лео вернулся в свою комнату. Он не сел сразу за код. Вместо этого он открыл чистый текстовый документ и начал писать:

«Зелёное Колесо. Концепт. Цель: Сделать использование городского велотранспорта максимально удобным, предсказуемым и приятным, чтобы сократить число машин в городе. Принципы:

Польза для человека (удобный интерфейс, экономия времени).

Польза для города (разгрузка дорог).

Польза для планеты (меньше выбросов CO2). Техническая основа…»

Он писал долго, освещённый голубым светом монитора, который в темноте комнаты казался порталом в будущее. Будущее, которое он мог построить сам, строка за строкой, байт за байтом. Первый шаг к «чему-то большому» был сделан. И это было невероятно интересно.


Полезная информация из главы 1:

Python – это язык программирования высокого уровня. «Высокого уровня» означает, что он ближе к человеческому языку, чем к машинному коду. Его часто используют для веб-разработки, анализа данных, искусственного интеллекта и, как у Лео, для создания различных вспомогательных программ-утилит. Девиз Python: «Простота – залог надёжности».

PDF (Portable Document Format) – межплатформенный формат электронных документов, созданный компанией Adobe. Его главное преимущество – документ выглядит одинаково на любом устройстве.

Бета-тестер – пользователь, который тестирует практически готовую версию программы (бета-версию) в реальных условиях, чтобы найти ошибки, которые не заметили разработчики.

Алгоритм – это четкая, последовательная инструкция для решения задачи за конечное число шагов. Рецепт пирога – это алгоритм. Маршрут, который строит навигатор, – это результат работы алгоритма.

Геймификация – применение игровых подходов и элементов (очки, уровни, рейтинги, награды) в неигровых процессах, чтобы повысить вовлечённость пользователей.

Интерфейс – буквально «место встречи». В компьютерах это всё, с помощью чего пользователь взаимодействует с программой или устройством: кнопки, меню, поля ввода. Удобный интерфейс (UX/UI – User Experience/User Interface) – залог того, что программой будут пользоваться.

Машинное обучение (Machine Learning, ML) – это подраздел искусственного интеллекта, где компьютеры учатся выполнять задачи, не будучи явно запрограммированными на них. Они анализируют большие массивы данных (например, историю аренды велосипедов за год) и находят закономерности, чтобы делать прогнозы (где завтра в 18:00 будет нехватка велосипедов).


Глава 2: Архитектура мечты и старый скейтпарк

Следующие несколько недель пролетели в вихре обсуждений, споров и первых пробных строк кода. Комната Лео превратилась в штаб-квартиру проекта «GreenWheel». На стене рядом с монитором появилась большая бумажная схема – «архитектура приложения», испещрённая прямоугольниками, стрелками и пометками Авы на стикерах разного цвета.

Они распределили роли. Лео, как самый сильный в логике и основном коде, взял на себя «движок» – ту часть, которая будет заниматься расчётами маршрутов и прогнозированием. Майлз погрузился в изучение API (Application Programming Interface – программный интерфейс приложения) городской системы проката и размышлял, как получать данные о свободных велосипедах в реальном времени. Ава рисовала эскизы экранов будущего приложения на своём графическом планшете: где будет большая карта, как будет выглядеть кнопка «Построить маршрут», как анимировать процесс аренды.

Однажды в субботу, после утренней велопрогулки и созвона с командой, Лео столкнулся с проблемой. Его алгоритм построения «идеального» маршрута упорно предлагал велосипедистам кратчайший путь, который, однако, вел по оживлённой магистрали с грузовиками. Это было не просто неэкологично из-за выхлопных газов, но и опасно.

– Он не понимает контекста, – вслух размышлял Лео, глядя на карту на экране. – Для машины – это просто линия на карте. Для человека – это стресс и грязный воздух. Как научить программу думать о комфорте?

Он откинулся в кресле и вспомнил, как выбирал маршруты для своих прогулок. Он избегал больших дорог, предпочитал тихие улицы с деревьями, набережную, парковые аллеи. «Нужны весовые коэффициенты, – осенило его.

– Каждой улице – оценка. Шкала от 1 до 10: уровень шума, загруженность транспортом, наличие велодорожки, зелёные насаждения». Но где взять эти данные?

Позвонил телефон. Это был Итан, один из немногих школьных приятелей Лео, который разделял его любовь к технологиям, но больше увлекался дронами и видеосъёмкой.

– Лео, привет! Ты где? Мы в старом скейт-парке за библиотекой. Тут нечто эпическое происходит, нужно запечатлеть с воздуха. Мой новый дрон с камерой 4K! Приезжай, поболтаем!

Лео колебался. Код не писался. «Перезагрузка нужна», – подумал он. – Да и Итан может невзначай подкинуть интересную идею, он всегда видит мир под другим углом. – Хорошо, буду через двадцать минут.

Старый скейт-парк, заброшенный муниципалитетом, был местом паломничества местной молодежи. Скейтеры, BMX-еры, роллеры – все облюбовали его потрескавшиеся рампы и граффити-стены. Когда Лео подъехал, пристегнув свой шлем, Итан уже запускал свой дрон. Аппарат с тихим жужжанием взмыл в небо, а на планшете в руках Итана открылся потрясающий вид на парк с высоты птичьего полёта.

– Смотри, какая перспектива! – восторженно говорил Итан, управляя джойстиками. – Видишь, как люди двигаются? Вот эта группа вот-вот столкнется на пересечении, если они не сбавят скорость. А вот тут – «слепая зона» за той половинкой трубы, её все избегают.

Лео смотрел на экран планшета, и в его голове что-то щелкнуло. Он видел не просто скейт-парк. Он видел живую, динамичную систему. Данные о движении в реальном времени. Точки скопления людей. Неиспользуемые зоны. Это была идеальная метафора для городского трафика!

– Итан, ты гений! – выпалил Лео. – Я-то что? – удивился приятель. – Твой дрон! Он собирает данные о движении! Если бы мы могли анализировать такие потоки в масштабах города… Мы бы видели не просто улицы, а живые артерии. Где пробки, где свободно, где люди любят ехать, а где нет… Мы могли бы строить маршруты не по кратчайшему расстоянию, а по наименьшему сопротивлению и наибольшему комфорту!

Итан, привыкший к внезапным озарениям друга, усмехнулся:

– Опять твои алгоритмы. Ладно, объясни на пальцах, что тебе надо.

Они уселись на бордюре, и Лео, жестикулируя, начал рисовать в воздухе схемы:

– Представь, что каждый велосипедист – это твой дрон. Его телефон отправляет анонимные данные: координаты, скорость, направление. Мы собираем эту информацию и видим «тепловую карту» популярных маршрутов. Плюс, можно добавить краудсорсинг: пользователи сами отмечают, где плохая дорога, где красиво, где страшно. Как Waze, но для велосипедов!

– Звучит круто, – сказал Итан, уже представляя себе эпичные видео-презентации с эриал-съемкой. – Но это же гигабайты данных. Где ты всё это хранить будешь? Не на своём же стареньком ноуте?

Лео задумался. Это был серьёзный технический вызов. Персональный компьютер для таких задач не годился. Нужен был сервер. Или…

– Облако! – произнёс он.

– Какое ещё облако? – Итан посмотрел на небо, где не было ни облачка.

– Не то облако, – засмеялся Лео. – Облачные вычисления. Это когда данные хранятся и обрабатываются не на твоём компьютере, а на мощных удалённых серверах, через интернет. Ты как бы арендуешь вычислительную мощь. У Amazon есть AWS, у Google – Cloud Platform, у Microsoft – Azure… Это как виртуальный суперкомпьютер, который доступен из любой точки мира. Нам нужна как раз такая штука, чтобы обрабатывать данные со всего города.

Идея обрела новые, но сложные очертания. Вернувшись домой, Лео не сел за Python. Вместо этого он открыл браузер и начал читать статьи и смотреть видеоуроки про облачные сервисы, про big data (большие данные) и их обработку. Он узнал, что можно арендовать не целый сервер, а небольшую его часть – виртуальную машину – за вполне приемлемые для стартапа деньги (а многие компании дают бесплатный начальный кредит для студентов и начинающих разработчиков).

Вечером на созвоне с командой он выложил свои идеи.

– Итак, новый план, – начал Лео, делясь экраном с открытыми вкладками. – Наше приложение будет состоять из трёх основных частей, или «слоёв». Первый – мобильное приложение (это твоя зона, Ава, интерфейс). Второй – наш мозг, серверное приложение на Python (это мы с Майлзом), которое будет жить не у меня под столом, а в облаке, например, на Google Cloud. И третий слой – данные. Данные от пользователей (анонимные треки), данные от города (доступность велосипедов) и наши собственные картографические слои с «коэффициентом комфорта» улиц.

– А как мы получим эти «коэффициенты комфорта»? – спросила Ава. – Мы же не можем объехать все улицы в городе.

– Краудсорсинг, – уверенно сказал Лео. – Пользователи сами смогут ставить оценку маршруту после поездки: от одной до пяти звёзд. Плюс, мы можем подключить открытые муниципальные данные: где официально обозначенные велодорожки, где парки, где школы (значит, нужно снижать скорость и быть осторожным). А в перспективе… – он сделал драматическую паузу, – можно попробовать подключить даже данные о качестве воздуха с городских метеостанций, чтобы предлагать самые экологичные маршруты.

В трубке воцарилось молчание.

– Вау, – наконец произнёс Майлз. – Это уже не игрушка. Это серьёзный социально-технологический проект. Мне нравится.

– И мне, – согласилась Ава. – Но это огромный объём работы. Нам нужен план и, возможно, помощь.

– Помощь будет, – сказал Лео. – Первый помощник – это документация. Давайте начнём с подробного технического задания. И… я думаю, нам стоит поговорить с муниципалитетом. Если мы хотим получить их данные и сделать что-то действительно полезное для города, лучше действовать открыто и легально с самого начала.

Они договорились, что Лео и Ава (как самые презентабельные и коммуникабельные) на следующей неделе попробуют записаться на приём в городской отдел транспорта и экологии. Майлз тем временем углубился в изучение Google Cloud Platform.

Перед сном Лео снова вышел на балкон. Город тихо шумел внизу, огни фонарей выхватывали из темноты улицы, которые скоро, как он надеялся, станут понятнее и дружелюбнее для таких же, как он, велосипедистов. Он чувствовал лёгкий трепет. Его детское увлечение компьютерами выводило его в большой, реальный мир. Мир, где строки кода могли влиять на то, как люди перемещаются, дышат и чувствуют себя в своём городе. Это было страшно и невероятно интересно. Он сделал глубокий вдох ночного воздуха и улыбнулся. Завтра будет новый день, новые строки кода и новые открытия.


Полезная информация из главы 2:

API (Application Programming Interface) – это набор правил и инструментов, который позволяет одним программам взаимодействовать с другими. Проще говоря, это «посредник». Когда приложение «GreenWheel» хочет узнать, сколько велосипедов свободно на станции, оно не лезет в базу данных города напрямую (ему не позволят), а вежливо спрашивает через специальное «окошко» (API): «Эй, дай, пожалуйста, данные по станции №5». Городское API возвращает ответ в понятном для программы формате (чаще всего JSON).

Краудсорсинг – решение задач или сбор информации силами большого количества добровольцев, обычно координируемых через интернет. Пример: Википедия (создаётся пользователями), Waze (данные о пробках поступают от самих водителей).

Облачные вычисления (Cloud Computing) – модель предоставления вычислительных услуг (серверы, хранилища, базы данных, сети, программное обеспечение) через интернет. Пользователь не покупает и не обслуживает железо, а арендует нужные мощности у провайдера (Amazon AWS, Google Cloud, Microsoft Azure) и платит только за то, что использует. Это как вода из водопровода: вы не копаете колодец, а платите за кубометры.

Виртуальная машина (Virtual Machine, VM) – программа, которая эмулирует (симулирует) работу отдельного физического компьютера со своей операционной системой внутри основной системы. В облаке вы арендуете именно виртуальные машины с нужными параметрами (процессор, память, диск).

Большие данные (Big Data) – огромные массивы структурированных и неструктурированных данных, которые слишком велики, чтобы их можно было обработать традиционными методами за разумное время. Анализ больших данных (например, миллионов маршрутов велосипедистов) позволяет выявлять скрытые закономерности и тенденции.

JSON (JavaScript Object Notation) – популярный, простой и лёгкий для чтения формат обмена данными. Он представляет собой текст, организованный в виде пар «ключ: значение» и массивов. Именно в таком формате чаще всего приложения получают данные с серверов и API.

Тепловая карта (Heatmap) – графическое представление данных, где значения отображаются цветами. На карте города самые «горячие» (красные) участки будут показывать самые популярные маршруты, «холодные» (синие) – наименее используемые.


Глава 3: Дверь в мэрию и параллельные миры

Поход в мэрию Риджвью стал для Лео и Авы событием, сравнимым с выходом в открытый космос. Их мир, состоящий из линий кода, дизайнерских эскизов и дружеских видеозвонков, теперь должен был столкнуться с миром бюрократии, галстуков и офисных кофе-машин.

Ава, к удивлению Лео, отнеслась к этому с полной серьёзностью. Она нарядилась не в свою привычную худи с аниме-персонажем, а в элегантную белую блузку и тёмные джинсы.

– Первое впечатление, Лео, – сказала она по видеосвязи накануне, показывая два варианта. – Мы должны выглядеть не как дети, которым в голову взбрела идея, а как молодые профессионалы с конкретным предложением. Ты тоже приведи себя в порядок. Лео, который считал чистую футболку с принтом в виде схемы алгоритма пиком формальности, покорно покивал.

В назначенный день и час они стояли перед монументальным зданием мэрии из коричневого кирпича.

– Как будто собираемся сдавать экзамен по квантовой физике, – прошептал Лео, поправляя очки.

– Просто дыши, – успокоила его Ава. – Мы же не просим деньги. Мы предлагаем бесплатное решение проблемы, о которой они сами пишут в своих же «зелёных» отчетах.

Их приняла миссис Эвелин Картер, начальница отдела устойчивого развития и транспорта. Женщина лет пятидесяти, с внимательным, изучающим взглядом и энергичной улыбкой. Её кабинет был заставлен папками и моделями ветрогенераторов.

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

Лео, который заранее отрепетировал речь, на секунду растерялся, но Ава мягко подхватила:

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

– Благая цель, – кивнула миссис Картер. – Но приложений для проката и так хватает. Что в вашем особенного? Теперь вступил Лео. Он включил планшет, где была подготовлена короткая презентация со схемами. – Наше приложение будет строить маршруты не по кратчайшему, а по самому комфортному и безопасному пути. Для этого нам нужны данные. Во-первых, реальное расписание и доступность велосипедов через ваш API. Во-вторых, открытые геоданные: карта официальных велодорожек, пешеходных зон, парков, школ.

– И зачем вам школы? – уточнила миссис Картер.

– Чтобы алгоритм снижал приоритет улиц рядом со школами в часы пик, предлагая альтернативы. Безопасность детей – прежде всего, – чётко ответил Лео, поймав одобрительный кивок Авы.

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

Миссис Картер задумалась, перебирая ручкой.

– API… Открытые данные… Это технически возможно. У нас как раз есть инициатива «Открытый Риджвью». Но краудсорсинг… Это же субъективные оценки. А если кто-то начнёт жаловаться на всё подряд или, наоборот, захламит систему фейковыми похвалами?

– Мы продумали и это, – быстро сказал Лео. – Система будет учитывать «репутацию» пользователя. Тот, кто активно и адекватно пользуется приложением, ведёт длительные поездки, его оценкам будет присваиваться больший вес. Разовые жалобы от новых аккаунтов будут проходить модерацию. Плюс, мы можем предоставлять вам, как городу, агрегированные, обезличенные отчёты: вот топ-10 самых проблемных для велосипедистов мест по мнению граждан. Это поможет планировать инфраструктуру.

В кабинете повисла тишина. Лео и Ава переглянулись.

– Знаете, что мне нравится в вашем поколении? – наконец сказала миссис Картер, откладывая ручку. – Вы не ждёте, что кто-то придёт и всё сделает за вас. Вы видите проблему и сразу думаете, как её решить с помощью технологий, которые у вас в кармане. У нас в отделе два айтишника, и они вечно завалены текучкой. Дай Бог им просто сайт обновить. Хорошо. Я даю вам условное «добро». Вы получите доступ к тестовому API и открытым данным. Но с условием.

– Каким? – почти хором спросили они. – Раз в две недели – отчёт о прогрессе. И первая бета-версия приложения должна быть протестирована в том числе и нашими сотрудниками. Если идея сработает, мы можем рассмотреть вопрос о небольшом гранте для развития или официальном партнёрстве. Договорились?

– Да! Конечно! Спасибо! – Лео едва сдержался, чтобы не подпрыгнуть на стуле.

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

– У нас получилось! – радостно сказала Ава. – Я не верила, что она так легко согласится.

На страницу:
1 из 2