Просматривая Звездные войны я подметил одну интересную особенность: когда голавным героям этой истории требуеться иметь дело с компьютерами, они не жмут сами на кнопки - они обращаються за помошью к дроидам-посредникам, которые понимают человеческий язык и способны общаться с другими машинами на их языке.
Должно быть вы все заметили, что Анакин скайокер в третьем эпизоде управлял звездолетом, отдавая голосывые команды дроиду R2D2? Дроид подключившись к системе управления кораблем сам управлял маневрами корабля избавив своего хозяина от необходимости жать на многочисленные кнопки и следить за десятками показателей на приборной панели. Пилоту надо было просто отавать команды: захвати цель, переворот, маневр, уходми и т.д.
Это наблюдение навело на одну мысль о будщем современных компиляторов. На заре развития компиляторов, человеку приходилось общаться с машиной на её язке: помнить десятки машинных кодов. уметь самостоятельно распределять память для данных, настравить адреса команд и т.д.
Сегодня мы имеем дело с высокоуровневыми обьектно-ориентировачными языками программирования, которые позволяют решать задчу в терминах предметной области. А уж такие языки как Prolog и ЛИСП и вовсе позволяют использовать языковые конструкции близкие к естественному человеческому языку.
История развития языков и технологий программирования позволяет судить о том что они по своим выразительным возможностям все более приближаються к нормальной человеческой речи, а это значит в недалеком будущем в ручном написании кода отпадет необходимость совсем.
Вот как я себе представляю себе компилятор будущего: вы берете в руки микрофон и начинаете диктовать требования к программе, котоую нужно разработать., продиктовали и нажали одну-единственную кнопку: создать. Далее запускаеться анализатор речи, который преобразует сказаное вами в требования к программе. Затем умный специальный робот-архитектор выбирает наиболее оптимальный вариант архитектуры программы используя базу шаблонов проектирования и общепринятые методологии по разделению интерфейса. аппаратного сопряжения и табличной бизнес-логики и создает высокоуровневый проект программы.
Вам как пользователю остаеться указать какой процент исходного кода вы используете в дальнейшем и какой фактор: надежность или быстродействие для вас важнее.
На основе высокоуровневого интерфейса автоматически генерируються нужные таблицы БД (запросы SQL ) и исходные модули программы (тут используеться система кодогенерации на основе диаграмм UML, построенных роботом-архитектором), и после этого в дело вступает обычный компилятор, с которыми мы имеем дело сегодня.
Далее происходит компиляция сгенерированного кода и выпуск искомого продукта.
Поскольку разработка прводилась автоматически, человеческий фактор исключаеться и вероятность ошибок близка к нулю - тестирование не требуеться, программой можно пользоваться уже сейчас.
Если ошибки все-таки возникли, тут на помощь приходят исходные коды модулей, сгенерированных кодогенератором, с ними работают программисты, чтобы внести исправления в исходный код или провести оптимизацию
Прототипы подобных систем мы можем наблюдать и в наше время:
- конструкторы игр, не требующие программирования
- системы автоматического написания текста, кторыми пользуеться Дарья Донцова при создании своих "шедевров"
- система автоматического производства сериалов по произведениям Дарьи Донцовой (сейчас ведеться работа по обьединению этих систем в одну)
Короче, позабыты хлопоты.
Новый наступает век:
Вкалывают роботы, отдыхает - человек.
А закончится это всё так: http://en.wikipedia.org/wiki/Technological_singularity
Где-то слышал, что также в указанную систему хотят встроить конструктор игр по произведениям Дарьи Донцовой. И даже говорят, что и сама Дарья Донцова скоро будет заменена дроидом-двойником с рабочим названием daRia2Doncova2
Тема в архиве.