Программирование
будущего
Как научить компьютер делать то,
что нужно, без всякого программирования
Денис Сергеевич Перевалов
Институт Математики и Механики им. Н.Н.Красовского
Что такое программа?
Программа - последовательность действий
Чайная программа
Программа приготовления чая
1. Вскипятить воду
2. Налить в кружку воду
3. Налить в кружку заварку
4. Добавить сахар
5. Размешать
Как объяснить роботу?
Программа приготовления чая
1. Вскипятить воду
2. Налить в кружку воду
3. Налить в кружку заварку
4. Добавить сахар
5. Размешать
Универсальный робот, скорее всего, не сможет
выполнить сразу. Почему?
Робот
какая вода - из крана или из
льда с улицы? сколько вскипятить?
какую взять
кружку?
сколько налить воды в кружку?
сколько заварки? сколько сахара?
сколько времени размешивать?
Подробная чайная программа
1. Вскипятить воду (200 мг воды из фильтра)
2. Налить в кружку воду,
⅘ воды; в чистую кружку, самую большую
1. Налить в кружку заварку (⅕ заварки)
2. Добавить сахар (2 чайных ложки)
3. Размешать (20 сек)
Подробная чайная программа
А если заварки нет? ...
Программа становится больше и больше…
В программах для компьютера - такая же проблема.
Программы должны быть очень подробными, чтобы
быть готовыми ко всем неожиданностям.
Способы программирования
Процедурный - КАК
1. А положить равным 3
2. Б положить равным 4
3. В положить равным сумме А и Б
4. Вывести на экран значение В
Способы программирования
Декларативный - ЧТО
Способы программирования
Обучение на примерах - ПОВТОРЯЙ ЗА
МНОЙ
Способы программирования
Процедурный - КАК
Декларативный - ЧТО
Обучение на примерах - ПОВТОРЯЙ ЗА
МНОЙ
Программирование будущего
Программирование сегодняшнего дня
Тезис Чёрча-Тьюринга
Процедурный - КАК
Программирование сегодняшнего дня
Любое вычисление можно
запрограммировать
процедурно
Простейший вычислитель
- “машина Тьюринга”
Всё чётко, но
программировать - бывает
долго и утомительно!”
Декларативное программирование
Задаём факты и правила о “мире”, и задаём
задачу. Программа строится сама, и решает
задачу.
Поиск пути робота - задаём схему комнаты,
начальную и конечную точку,
и программа “поиск пути” строит путь сама.
Пролог
Денис
Ольга Сергей
Вера Алексей Галина Геннади
й
Декларативный язык программирования.
Введём в него систему родственных отношений:
Мать = Родитель + Женщина.
Бабушка = Родитель Матери.
Язык программирования Пролог
родитель(ольга,денис).
родитель(сергей,денис).
родитель(вера,ольга).
родитель(алексей,ольга).
родитель(галина,сергей).
родитель(геннадий,сергей).
женщина(ольга).
женщина(вера).
женщина(галина).
мать(X,Y) :-
родитель(X,Y),женщина(X).
бабушка(X,Y) :-
мать(X,Z),родитель(Z,Y).
Денис
Ольга Сергей
Вера Алексей Галина Геннади
й
Мать = Родитель + Женщина.
Бабушка = Родитель Матери.
Обучение на примерах
Макрорекордер - программа, запоминяющая
ваши действия и повторяющая их.
Демо - Automator
Обучение на примерах
Программы “дорисовки” - по фрагменту
изображения, дорисовывают до нужных размеров
Wolfram Alpha
http://habrahabr.ru/post/244729/
Обучение на примерах
Обучение на примерах
Обучение на примерах
Демо программы продолжения линий
Благодарности
1. Спасибо В.Б. Костоусову (ИММ УрО РАН) за семинары по Си++ и
шаблонам проектирования
2. Спасибо В.Л.Авербуху (ИММ УрО РАН) за то, что в 11 классе школе
познакомил меня с программированием путём демонстраций
3. Спасибо Т.Б. Токманцеву (ИММ УрО РАН) за идеи и сведения про
современные методы тестирования.
4. Спасибо А.В. Марьяновой (УрФУ) за ссылку на Inpainting

Программирование будущего - 2015

Editor's Notes

  • #9 процедурный - подробное описание всех действий. Декларативный - связь между объектами и правила. А программа строится сама.
  • #10 процедурный - подробное описание всех действий. Декларативный - связь между объектами и правила. А программа строится сама.
  • #11 процедурный - подробное описание всех действий. Декларативный - связь между объектами и правила. А программа строится сама.