Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет Прикладной математики и физики Кафедра Вычислительной математики и программирования.

Презентация:



Advertisements
Похожие презентации
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Advertisements

Языки программирования Дмитрий Сошников
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Сошников Д.В. Факультет инноваций и высоких технологий Московский физико-технический.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Введение в предмет Лекция 1 Парадигмы и стили программирования.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
класс-ПОВТОРЕНИЕ ОСНОВНЫХ ПОНЯТИЙ ТЕМЫ « ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ » 8 КЛАСС.
Дисциплина по выбору Кафедра ИиП Авторы курса – к.т.н. Синицын Иван Васильевич, к.т.н. Крахмалев Дмитрий Владимирович.
Процедуры и функции Вербицкая Ольга Владимировна, Заозерная школа 16.
Уильям (Билл) Гейтс. Информатика Hard Ware (технические средства) Soft Ware (программные средства) Brain Ware (алгоритмические средства) MS Windows MS.
Светлана Ахматова TVTB17. Содержание Введение Что такое логическое программирование? Planner Backtracking Стек Prolog 1.1 Пример программы: родственные.
Тема 15. Этапы подготовки и решения задач на ЭВМ.
2012 год Кафедра прикладной математики Руководитель работы: д.т.н., проф. Фальк В.Н. Национальный исследовательский университет «МЭИ» Выпускная работа.
2010 Предикатное программирование Формальные методы в описании языков и систем программирования п/г спецкурс Ведет спецкурс: Шелехов Владимир Иванович,
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
2,5 - 0,1 345 цел M, N, K вещ A, B, X вещ таб Т[1:12] Т а б л и ц ы Константы Переменные К о м а н д ы Ц и к л с п а р а м е т р о м Для k от 1 до 10 повторять.
Установочная лекция по дисциплине Старший преподаватель каф. ВТ Юлия Вадимовна Новицкая
Транксрипт:

Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет Прикладной математики и физики Кафедра Вычислительной математики и программирования Московский авиационный институт (государственный технический университет)

©2009 Сошников Д.В. 2 Майкрософт Россия, академический евангелист Кандидат физ.-мат. наук Распределенные интеллектуальные системы с явным представлением знаний Интеллектуальная реструктуризация социальных сетей на основе онтологий Семантически-ориентированные системы (Semantic Wiki) Кафедра Вычислительной математики и программирования МАИ (доцент) Логическое программирование Искусственный интеллект Студенческая лаборатория MAILabs ( ФИВТ

3 Что такое логическое программирование?

©2009 Сошников Д.В. 4

5 Тест Тьюринга – подробнее в курсе ИИ Проблемы: Неоднозначность человеческого языка При коммуникации мы полагаемся на картину мира, которая есть у нас в голове (common knowledge)

©2009 Сошников Д.В. 6 Формальный язык

©2009 Сошников Д.В. 7 Assembler (x86, …) C, C++, C#, Java Pascal … Brainfuck? FORTH? LISP, FP, ML, Haskell, OCaml, F#, … Prolog, Mercury, Datalog, …

©2009 Сошников Д.В. 8

FORTRAN LISP С, Pascal С++ Java Prolog F# Python Mercury

©2009 Сошников Д.В. 10 Первый язык программирования высокого уровня – ФОРТРАН – был создан Дж.Бэкусом, чтобы математики могли программировать на уровне формул. программирование переключателей машинные коды язык ассемблера FORTRAN г., Дж.Бэкус A 12 1F 4B C3 E0 EE F C3 1D F2 00 0C 0D 0010 … MOVAX, [ARG1] ADDAX, [ARG2] MOV[RES], AX JMPNEXT ARG1:DB10 ARG2:DB20 RES:DB0 NEXT:… S = 0 DO 10 I=1,10 S = S + I*I 10CONTINUE

©2009 Сошников Д.В. 11 Позже Дж.Бэкус пошел дальше и предложил язык FP, в котором формулы более соответствовали математическому понятию функции программирование переключателей машинные коды язык ассемблера FORTRAN 1977 г., Дж.Бэкус def fac = eq 0 1; * [id,fac ( - [id,1])] (defun factorial (n) (if (<= n 1) 1 (* n (factorial (- n 1))))) FP LISP 1958 г., Дж.Маккарти

©2009 Сошников Д.В. 12 Надо пытаться формализовать человеческий язык! Основной инструмент формализации: Формальные аксиоматические системы Логика!

©2009 Сошников Д.В. 13 программирование переключателей машинные коды язык ассемблера FORTRAN FP LISP С, Pascal С++ Java C# Haskell Prolog Mercury F# OCaml ML Miranda Python ? ? Datalog Oz

©2009 Сошников Д.В. 14 Вычисление факториала: function fact(x:integer):integer; var i, r : integer; begin r:=1; for i:=1 to x do r:=r*i; fact:=r end; Императивное программирование (Pascal) let rec fact = function 1 -> 1 | x -> x*fact(x-1);; Функциональное программирование (F#) fact(1,1). fact(N,F) :- N1 is N-1, fact(N1,F1), F is F1*N. Логическое программирование (Prolog) fact(1)=1. fact(N)=N*fact(N-1). Логическое программирование (Mercury)

©2009 Сошников Д.В. 15 При декларативном программировании мы (на некотором формальном языке) описываем результат (его свойства), а не способ его достижения Описание факториала HTML – описание расположения объектов SQL LINQ Функциональные, логические языки

©2009 Сошников Д.В. 16 Императивное – мы говорим компьютеру, как решать задачу (что делать) Основной акцент – манипулирование ячейками памяти Оператор присваивания Явные операторы передачи управления Циклы, условный оператор

©2009 Сошников Д.В. 17 Это не «чистая» императивная программа. В «чистых» императивных языках (ФОРТРАН) нет рекурсии Нет операторов присваивания «:= » -это возврат результата из функции, а не присваивание function fact(x:integer):integer; begin if x=1 then fact:=1 else fact:=x*fact(x-1) end;

©2009 Сошников Д.В. 18 Парадигма декларативного программирования, в которой программа представляет собой описание требуемого решения в терминах определенной логики решение задачи строится в процессе логического вывода по заданному описанию Различные разновидности логического программирования: индуктивное, в ограничениях,... Подход к программированию Языки программирования Prolog, Datalog, Mercury, Oz, …

©2009 Сошников Д.В. 19 Найдем все комбинации чисел от 1 до 10, что a 2 +b 2 =c 2 for a:=1 to 10 do for b:=1 to 10 do for c:=1 to 10 do if a*a+b*b=c*c then write(a,b,c);; [ for a in for b in for c in when a*a+b*b=c*c -> (a,b,c) ];; solve(A,B,C) :- for(A,1,10), for(B,1,10), for(C,1,10), A*A+B*B =:= C*C. zip3 [1..10] [1..10] [1..10] |> filter ( fun (a,b,c)->a*a+b*b=c*c );;

©2009 Сошников Д.В. 20 Функциональные языки Компактный синтаксис для списков, n-ок (tuples), вариантных типов Логические языки Компактный синтаксис для списков, n-ок (tuples), вариантных типов Возможность перебора и поиска различных решений, заложенная в язык

©2009 Сошников Д.В. 21 studied(petya,mathematics).studied(vasya,german). studied(petya,compscience).studied(vasya,literature). studied(petya,english). studied_technical(X) :- studied(X,mathematics). studied_technical(X) :- studied(X,compscience). studied_languages(X) :- studied(X,english). studied_languages(X) :- studied(X,german). speciality(X,tech_translator) :- studied_languages(X),studied_technical(X). speciality(X,programmer) :- studied(X,mathematics),studied(X, compscience). speciality(X,lit_translator) :- studied_languages(X),studied(X,literature). ?-specialty(vasya,X). ?- specialty(X,lit_translator).

©2009 Сошников Д.В. 22 Определения на логическом языке похожи на предложения математической логики Логическое программирование имеет очень четкую математическую основу Возможны рассуждения о программах: доказательство корректности, … Отсутствует оператор присваивания Есть знак =, но он имеет другую семантику – унификация, связывание имен Переменные связываются неявно, в процессе логического вывода Будучи один раз связанным, имя может менять свое значение только в процессе пересмотра решения (возврата) А это значит – нет побочных эффектов!

23

©2009 Сошников Д.В. 24 Императивное (алгоритмическое) Машина Тьюринга, Машина фон Неймана Pascal, C и т.д. Аппликативное (функциональное) λ-исчисление, рекурсивные функции F#, LISP / Scheme, ML и друзья, Haskell Декларативное (логическое) Логика предикатов 1-го порядка Prolog, Mercury, Oz, … Объектное, компонентное, многоагентное (эмерджентное) Синергетика, теория сложных систем Ситуационное (продукционное) Нормальные алгоритмы Маркова Рефал

©2009 Сошников Д.В. 25 Императивные языки Оперируют состоянием памяти. Выполнение операторов изменяет состояние. Функциональные языки Оперируют данными. Применение функции к аргументам изменяет данные. Подход, ориентированный на данные. Логические языки Оперируют пространством поиска решений. Программа задаёт множество возможных переходов в пространстве поиска

©2009 Сошников Д.В. 26 C# - императивный (ОО) + элементы функциональности F# - функциональный с элементами императивности Mercury – функционально-логический Oz Python …

27

©2009 Сошников Д.В. 28 Придется ли нам программировать на Прологе в реальной жизни? В лучшем случае – 1 человеку из группы Пролог удобен при быстром прототипировании определенного класса систем Принципы, заложенные в основу логического программирования, помогут при решении реальных задач

©2009 Сошников Д.В. 29 Задачи искусственного интеллекта Экспертные системы Лингвистика, обработка естественного языка Задачи с неопределенностью Задачи, связанные с поиском решений Мета-программирование, построение специализированных языков

©2009 Сошников Д.В. 30 Отсутствие операторов присваивания и побочных эффектов Декларативное программирование Естественная математическая модель вычислений Заложенная в язык возможность возвратов и перебора Заложенные в язык возможности по представлению списков, деревьев Развитые возможности мета- программирования и построения проблемно- ориентированных языков