21
Программирование будущего Как научить компьютер делать то, что нужно, без всякого программирования Денис Сергеевич Перевалов Институт Математики и Механики им. Н.Н.Красовского

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

Embed Size (px)

Citation preview

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

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

Как научить компьютер делать то, что нужно, без всякого программирования

Денис Сергеевич ПереваловИнститут Математики и Механики им. Н.Н.Красовского

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

Что такое программа?Программа - последовательность действий

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

Чайная программаПрограмма приготовления чая1. Вскипятить воду2. Налить в кружку воду3. Налить в кружку заварку4. Добавить сахар5. Размешать

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

Как объяснить роботу?Программа приготовления чая1. Вскипятить воду2. Налить в кружку воду3. Налить в кружку заварку4. Добавить сахар5. Размешать

Универсальный робот, скорее всего, не сможет выполнить сразу. Почему?

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

Робот какая вода - из крана или из льда с улицы? сколько вскипятить?

какую взять кружку?сколько налить воды в кружку?сколько заварки? сколько сахара?сколько времени размешивать?

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

Подробная чайная программа1. Вскипятить воду (200 мг воды из фильтра)2. Налить в кружку воду, ⅘ воды; в чистую кружку, самую большую3. Налить в кружку заварку ( заварки)⅕4. Добавить сахар (2 чайных ложки)5. Размешать (20 сек)

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

Подробная чайная программаА если заварки нет? ...

Программа становится больше и больше…

В программах для компьютера - такая же проблема.

Программы должны быть очень подробными, чтобы быть готовыми ко всем неожиданностям.

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

Способы программирования

Процедурный - КАК

1. А положить равным 32. Б положить равным 43. В положить равным сумме А и Б4. Вывести на экран значение В

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

Способы программирования

Декларативный - ЧТО

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

Способы программирования

Обучение на примерах - ПОВТОРЯЙ ЗА МНОЙ

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

Способы программирования

Процедурный - КАК

Декларативный - ЧТО

Обучение на примерах - ПОВТОРЯЙ ЗА МНОЙ

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

Программирование сегодняшнего дня

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

Тезис Чёрча-Тьюринга

Процедурный - КАК Программирование сегодняшнего дня

Любое вычисление можно запрограммировать процедурно

Простейший вычислитель - “машина Тьюринга”

Всё чётко, но программировать - бывает долго и утомительно!”

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

Декларативное программированиеЗадаём факты и правила о “мире”, и задаём задачу. Программа строится сама, и решает задачу.

Поиск пути робота - задаём схему комнаты,начальную и конечную точку, и программа “поиск пути” строит путь сама.

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

Пролог

Денис

Ольга Сергей

Вера Алексей Галина Геннадий

Декларативный язык программирования.Введём в него систему родственных отношений:

Мать = Родитель + Женщина.Бабушка = Родитель Матери.

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

Язык программирования Прологродитель(ольга,денис).родитель(сергей,денис).

родитель(вера,ольга).родитель(алексей,ольга).родитель(галина,сергей).родитель(геннадий,сергей).

женщина(ольга).женщина(вера).женщина(галина).

мать(X,Y) :- родитель(X,Y),женщина(X).бабушка(X,Y) :- мать(X,Z),родитель(Z,Y).

Денис

Ольга Сергей

Вера Алексей Галина Геннадий

Мать = Родитель + Женщина.Бабушка = Родитель Матери.

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

Обучение на примерахМакрорекордер - программа, запоминяющая ваши действия и повторяющая их.

Демо - Automator

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

Обучение на примерахПрограммы “дорисовки” - по фрагменту изображения, дорисовывают до нужных размеров

Wolfram Alphahttp://habrahabr.ru/post/244729/

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

Обучение на примерах

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

Обучение на примерах

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

Обучение на примерах

Демо программы продолжения линий

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

Благодарности1. Спасибо В.Б. Костоусову (ИММ УрО РАН) за семинары по Си++ и

шаблонам проектирования2. Спасибо В.Л.Авербуху (ИММ УрО РАН) за то, что в 11 классе школе

познакомил меня с программированием путём демонстраций3. Спасибо Т.Б. Токманцеву (ИММ УрО РАН) за идеи и сведения про

современные методы тестирования.4. Спасибо А.В. Марьяновой (УрФУ) за ссылку на Inpainting