Не вдаваясь в политические и социологические аспекты вопроса, зададим себе вопрос на вопрос: А что надо сделать сейчас, чтобы наступил все же Полдень?
Если мы ограничимся только технологической составляющей, то часть ответа очевидна: программирование – вторая профессия и вторая грамотность. Говоря другим языком, созидающая часть человечества (а в идеале всё человечество) использует компьютеры для решения своих рутинных и творческих задач. Программирование уже нас окружает, люди программируют везде и всегда, хотя нет понимания, что это часть нашей жизни. Часть, которая не уйдет, а вырастет и окрепнет. Люди будут программировать все больше, как это не назови.
Теперь попробуем понять – как они будут программировать? Или о каком программировании мы говорим?
Для ответа на этот вопрос, разделим области программирования на слои, они очевидны:
- Инфраструктурное или государственное программирование
- Производственное или корпоративное программирование (B2B)
- Программирование приложений (B2C)
Еще можно выделить учебное программирование (обучение программированию) и спортивное (олимпиадное) программирование – но это не слои. Обучение программированию относится к каждому слою, а спортивное – это что-то типа подготовки спецназа.
Мы же говорим о программировании для всех, и такое программирование, очевидно, не попадает ни в один из слоев. Скорее, это еще один слой, который можно назвать «бытовым программированием».
Чем бытовое программирование отличается от всех остальных?
Во-первых, отличие в требованиях к результату и способам программирования.
- Инфраструктурное: Защищенность (безопасность), бесперебойность, надежность, производительность
- Производственное: Эффективность, производительность, надежность, гибкость
- Программирование приложений: Конкурентные преимущества, time-to-market
- Бытовое: Простота (легкость) программирования, наглядность, унифицированный способ работы с разными устройствами, отсутствие необходимости в длительном обучении и чтении руководств
Как уже видно из этого списка, слой бытового программирования явно отличается от других.
Во-вторых, важной особенностью бытового программирования является то, что программы делает не профессиональный программист. Сокращенно можем назвать: M2M (me-to-me).
Бытовое программирование можно определить как программирование человеком своих устройств для решения бытовых (повседневных) задач. Бытовое программирование очевидно распространяется на решения семейных задач и (частично) задач индивидуальных предпринимателей и малых предприятий. К «своим» устройствам я отношу не только гаджеты и компьютеры, а также сервисы и ресурсы (например, Яндекс.Диск), которые могут использоваться для решения повседневных задач.
Требования к инструментам разработки для бытового программирования явно отличаются от требований к инструментам для других уровней.
Рассмотрим бытовое программирование на жизненном примере.
Ребенок идет домой из школы.
Хочу запрограммировать следующее:
- Получить сигнал, когда он вышел из школы
- Получить тревожный сигнал, если он вышел не вовремя
- Посмотреть маршрут движения на карте – онлайн или позже
- Получить сигнал, что он дошел до дома
Очевидное условие: у ребенка должно быть устройство с GSM/GPS (часы, браслет или телефон)
Что нужно для решения этой задачи бытовому программисту:
- Расписание уроков (доступное по сети)
- Гео-локатор в устройстве (доступный по сети)
- Карта с возможностью изображать маршрут на моем устройстве (смартфон, планшет, десктоп)
- Сервис для сохранения маршрута (облако, желательно приватное)
- Сервис, связывающий все компоненты – некий управляющий «диспетчер»
Если все это есть, бытовой программист может написать скрипты и расставить триггеры для запуска этих скриптов. Скрипты и триггеры в совокупности и составляют «супер-приложение», решающее задачу.
Набросаем часть решения (то, что нужно запрограммировать):
- Диспетчер отслеживает время завершения урока (сервис времени) и подает сигнал тревоги, если через N минут после завершения урока ребенок не вышел из школы;
- Устройство ребенка посылает сообщение диспетчеру при пересечении границы школы;
- Получив сигнал от устройства (о пересечении границы), диспетчер проверяет время по расписанию уроков – подает сигнал тревоги (на мое устройство), если не вовремя, или сигнал выхода, если вовремя;
- Диспетчер подключает поток координат к карте на моем устройстве для показа маршрута;
- Диспетчер сохраняет маршрут в облаке;
Очевидна похожесть супер-приложения на программу на визуальном языке Scratch. Программа на Scratch также есть совокупность скриптов, срабатывающих по триггерам, например, триггер начала работы, триггер касания объектов на экране и т.д. Разница в том, что супер-приложение является распределенным и меж-платформенным.
Понятно, что нужно обеспечить бытового программиста инструментами, средой разработки и готовыми сценариями. Об этом мы поговорим в следующих статьях.
Полезные ссылки