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