Популярные методы разработки программного обеспечения в 2030 году
Пользователь заходит на сайт, назовем его autoprg.com, набирает запрос нужной ему программы и она автоматически генерируется из существующих стандартных модулей.
Каждая программа будет состоять из файлов-модулей — похоже на нынешние .dll библиотеки. Главное отличие — интерфейсная часть основных модулей — стандартизована, подобно тому, как сейчас стандартизованы интерфейсы составных частей компьютера — процессора, жесткого диска, плат памяти и др. Любой производитель может начать выпуск мониторов, причем работать они будут даже без нового драйвера — в Windows предусмотрен драйвер «стандартный монитор».
Также будет и с программами — они будут иметь стандартные и нестандартные модули, причем первые можно будет МЕНЯТЬ. К примеру, если меню программы сделано в Ribbon стиле (современные «ленты»), а пользователь хочет «классические тулбары», то поменяв один модуль, он заменит ribbon на «классические тулбары».
Программистам для написания новой программы не придется мучаться с пользовательским интерфейсом — теми же тулбарами или гридами — достаточно будет воспользоваться готовыми наборами модулей в качестве базы, куда вставится модуль, реализующий лишь логику программы.
Конечно, сейчас можно купить «компоненты» с реализацией ribbon или навороченные Grid, но попробуйте заменить один компонент на другой — от конкурента. Сколько времени на это потребуется? В будущем это будет не сложнее, чем заменить старый CD-ROM на новый. Причем даже программист не понадобится — это можно будет делать на уровне пользователя.
Кроме написания новых программ, программисты смогут писать новые модули по существующим стандартам. Например, некий программист придумал алгоритм сверхбыстрого просмотра jpg файлов. Программист пишет новый модуль на основе интерфейсов текущего jpg_format стандарта, и этот модуль каждый пользователь сможет без проблем вставить в популярные программы — просмоторщик файлов от windows, броузеры, ACDSee, IrfanView, TotalCommander… По сути, новый модуль является плагином ко всем программам, которые используют jpg и реализовали программу по заданным СТАНДАРТАМ.
Реализована такая модель может быть на уровне com, .net или других системах и языках программирования. Главное — стандартизация, принимаемая большинством.
Наиболее интересный вывод, который можно получить из такой стандартизации — автоматическое создание программ, без участия программистов.
Пример 1.
Программа «просмоторщик файлов формата sg» состоит из следующих модулей:
Приложение
Главная форма + просмоторщик файлов + sg формат + печать
Программа состоит из модулей, подобно тому, как компьютер состоит из таких деталей, как материнская плата, процессор или жесткий диск.
Модуль — это один или более файлов, отвечающих за определенный функционал. Например, модуль «печать» отвечает за печать документов, а модуль «sg формат» отвечает за чтение и показ sg формата. Если мы заменим модуль «sg формат» на модуль «jpg формат», то получим программу просмотра фотографий в формате jpg. Очень важно, что для этого изменения не нужно «писать код», «компилить» и делать другие стандартные операции программирования. Классическое программирование необходимо в первую очередь для создания новых модулей на основе заданных стандартов.
Цвета в примере означают:
зеленый — модули, написанные в рамках autoprg.com
желтый — модуль, написанный сторонней компанией, но сертифицированный в autoprg.com в качестве надежного модуля.
красный — несертифицированные модули сторонних компаний
Абстракция или абстрактный модуль — описание интерфейсов модуля без непосредственной реализации.
Абстракции делятся на типы подобно модулям
зеленый — абстракция, взятая за стандарт в рамках autoprg.com
желтый — абстракция, предложенная сторонней фирмой и принятая в autoprg.com как возможная к применению. Желтая абстракция может перейти на зеленый уровень — по решению autoprg.com. При регистрации желтых модулей возможно создание на их основе желтых либо зеленых абстракций.
красный — абстракция, не имеющая статуса в autoprg.com
Стандартизация стоит во главе всего метода автопрограммирования. Вводится набор стандартных интерфейсов (правил связи с другими модулями) для набора базовых модулей.
Базовый набор модулей — или «зеленые» модули — набор модулей и интерфейсов, сделанных в рамках особой организации, далее будем называть её autoprg.com
ООП — модули подчиняются иерархической системе наследования интерфейсов. Например, модули «sg формат» и «jpg формат» наследуют интерфейсы из абстрактного модуля «графический формат». Существует возможность не переписывать все интерфейсы модуля — предка.
Предок — модуль, интерфейсы которого берутся за основу нового модуля (потомка).
Интерфейсы всех модулей, добавляемых в базу autoprg.com, проверяются на соответствие интерфейсам их «предков» и также разделяются по цветам:
Интерфейсы
зеленый — соответствие
желтый — новый интерфейс
красный — не поддерживается существующий — Например, может не поддерживаться интерфейс сохранения в файл, если суть модуля только в чтении файла.
Пример 2
- Существует зеленый модуль «файл» с интерфейсами:
- открыть
- сохранить
- показать
- 2. Фирма SGSoft добавила в autoprg.com модуль sgfilereader — читающий и показывающий файлы с расширением SG, но не сохраняющий в SG
- модуль sgfilereader — красный
- интерфейсы:
- открыть — зеленый
- сохранить — красный
- показать — зеленый
- получить элементы чертежа — желтый
Если модуль sgfilereader получит сертификат autoprg.com, то станет желтым.
Определяем программу, которая состоит из модулей:
- приложение
- главная форма
- просмотр файлов — визуальный элемент, позволяющий масштабировать и «таскать» изображения, поддерживаю интерфейс абстракции graphic_format
- sgfilereader наследник graphic_format
- jpgfilereader наследник graphic_format
По цветам модулей видно, что модули «приложение» и «jpgfilereader» написаны в autoprg.com. Модуль «главная форма» написан сторонней компанией, но сертифицирован в autoprg.com, а значит ему можно «доверять». Модуль sgfilereader написан компанией Sgsoft, а модуль «просмотр файлов» написан в SGSoft, без гарантий его применимости. До некоторой степени можно сказать, что чем больше в программе зеленых и желтых модулей, тем она надежнее.
Пример 3
Возьмём программы для систем безопасности и правоохранительных органов, использующих стандартный модуль «идентификация по отпечатку пальца», и построенных на идеях автопограммирования. Предположим, что программист-одиночка разработал новую идею идентификации по отпечатку пальца и сделал модуль, поддерживающий «зеленые» интерфейсы абстрактного модуля «идентификация по отпечатку пальца», опубликованного на autoprg.com.
Пользователи программ, использующих идентификацию по отпечаткам, скачивают новый модуль, добавляют к своим программам и проверяют качество работы. Если они видят, что новый модуль работает быстрее и качественнее ранее используемой версии, то делают заказ на покупку модуля. Здесь работают классические методы лицензирования ПО — в том числе есть возможность продажи модуля в исходниках, либо в «закрытом» виде. Устаревшие модули идентификации могут быть заменены в десятках программ в разных странах мира. При этом:
Пользователи видят улучшение в существующей программе, при этом им не надо переучиваться
Программисты программ безопасности добавляют новый модуль без дополнительного программирования.
Программист модуля использует стандартный интерфейс и при минимуме маркетинга имеет возможность заработать деньги.
Автопрограммирование — программирование без программистов.
Пример:
без autoprg.com
Завод А имеет систему мониторинга за 10 станками разных производителей. Программа (система мониторинга) написана программистами завода А, с учетом особенностей каждого станка, данные сохраняются в базе данных MS SQL.
На заводе B. аналогичная ситуация. Они также написали собственную программу мониторинга станков (отличных моделей от используемых на заводе А), работающую с базой даных SQLx.
с autoprg.com
Завод А пишет стандартный модуль, основанный на интерфейсах абстрактного зеленого модуля «мониторинг», опубликованного на autoprg.com. Новый модуль «мониторинг работы станков» сертифицируется на autoprg.com и получает желтый статус.
Производители станков написали свои модули, поддерживающие интерфейсы абстрактного модуля «станок», также опубликованного на autoprg.com.
Ввиду того, что модуль «мониторинг работы станков» использует стандартный интерфейс «станок», специальная настройка программы для каждого станка не потребуется.
Завод B.
Сотрудник компании заходит на сайт autoprg.com и в разделе «автоматическое программирование» набирает следующий текст: «программа мониторинга станков моделей С1, С2, С3, база SQLx»
После чего сайт автоматически ищет необходимые модули.
Оказывается, что уже есть готовый модуль мониторинга станков от фирмы «завод А.». Есть модули станков «станок С1», «станок С2» и т.д. Также есть модуль «SQLx», обеспечивающий работу с соответствующей базой данных.
Одно нажатие на клавишу, и… происходит маленькое чудо: сайт autoprg.com предлагает готовое приложение, выполняющее условие запроса! 100% автоматизация программирования!!! В случае, если существует множество вариантов программ для выполнения заданных условий, сайт предложит выбрать подходящее решение из существующих вариантов.
Постепенно, с увеличением количества модулей на сайте autoprg.com, все большее число программ будет генерироваться автоматически!
В случае, если появится станок БЕЗ стандартного модуля на основе интерфейса «станок», в этом случае придется написать модуль вручную, с возможностью также опубликовать его на autoprg.com
4 комментария
Николай · Декабрь 10, 2012 в 6:44 пп
Почему 2030 год?
Робот · Ноябрь 1, 2013 в 7:36 дп
По поводу того, что вы написали: уже сейчас существует Друпал.
Я являюсь профессиональным разработчиком и делаю сайты на 95% без программирования, путем комбинации возможностей разных умных модулей наподобие views и panels.
Я представляю себе будующее программирования несколько по другому: в будущем появится искуственный интеллект, который возьмет программирование на себя.
Так что людям нужно будет только объяснять компьютеру, что им от него нужно, а делать всё он будет уже сам.
Либо, вариант еще круче: компьютер будет настолько умным, что будет знать то, что нужно человеку лучше его самого.
И давать ему это.
О том, к чему в конечном счете все это приведет, говорить тут не буду.
NeoNeuro · Ноябрь 3, 2013 в 2:57 пп
Статья написана давно. Сейчас всё больше программирование приходит к созданию «кирпичиков» и последующего использования их многими.
Полностью согласен! ИИ — это главный мой интерес и данная статья описывает постепенное движение к ИИ в области программирования. Автоматическое создание программ — это вид ИИ.
Это развитие ИИ. Интереснейшая тема, как с математической, так и с морально-этической точек зрения.
Иван · Март 16, 2017 в 6:44 дп
Разве верно говорить что это программирование без программистов? Все равно нужны люди, которые будут писать эти модули… А идея хорошая. Есть ли что-нибудь что можно пощупать?