Предметно - ориентированное программирование Степулёнок Денис Олегович 1.

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



Advertisements
Похожие презентации
Центр информатизации образования
Advertisements

Искусственный интеллект Проблема создания человеческого разума.
Выполнил: Гусев Данил. Что такое программное обеспечение? Возможности современного ПК столь велики, что все большее число людей находят ему применение.
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
АНАСТАСИЯ ТКАЧУК PK11-PV TEKO 1 Языки программирования.
Этапы решения задач на компьютере 1. Постановка задачи. 2. Построение математической модели. 3. Составление алгоритма. 4. Запись алгоритма на языке программирования(кодирование)
Системы программирования Средства создания программ Интегрированные системы программированияИнтегрированные системы программирования Среды быстрого проектирования.
Лекция 3. Программное обеспечение информационных технологий По дисциплине: «Информационные технологии в коммерческой деятельности»
Этапы решения задач на компьютерах Постановка задачи Формальное построение модели задачи Формальное построение модели задачи Построение математической.
Программное и аппаратное обеспечение. Программное обеспечение (ПО, software) Классификация ПО по назначению: –системное; –прикладное; –инструментальное.
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
Языки программирования часто классифицируют по уровню. Уровень языка показывает, насколько язык близок к естественной для человека записи. Уровни языков.
Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических.
Программа Виды программ Языки программирования. ПК – это электронный прибор, предназначенный для автоматизации создания, хранения, обработки и передачи.
Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических.
Языки программирования. Программа - это алгоритм, записанный на языке программирования. Программирование – процесс создания программы.
§ 4 Языки программирования Глава 1. Введение в программирование.
Проект выполнили Алёшин И.В. Волков А.Н. Золотарёв С.А. Учитель информатики Малыхин С.А. Prezentacii.com.
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ. Системное программное обеспечение - это комплекс программ, которые обеспечивают эффективное управление компонентами.
ГОРОДСКОЙ МЕТОДИЧЕСКИЙ ЦЕНТР mosmetod.ru Примерная программа учебного предмета «Информатика»
Транксрипт:

Предметно - ориентированное программирование Степулёнок Денис Олегович 1

Искусственный интеллект Автоматизациярутинных задач,скучных для человека Автоматизациярутинных задач,скучных для человека Автономные системы Автономные системы Быстрое управлениеБыстрое управление

Фантастика: разговор с компьютером «Идеальный» компьютер «понимает» естественный язык человека. «Программирование» на естественном языке

Deep Blue – шахматный суперкомпьютер 11 мая 1997 года одержал победу в матче из 6 партий с чемпионом мира по шахматам Гарри Каспаровым 11 мая 1997 года одержал победу в матче из 6 партий с чемпионом мира по шахматам Гарри Каспаровым Разработан компанией IBM Разработан компанией IBM Название получил от «Deep Thought» (глубокая мысль) из романа Дугласа Адамса «Автостопом по галактике» и «клички» IBМ: «Big Blue» Название получил от «Deep Thought» (глубокая мысль) из романа Дугласа Адамса «Автостопом по галактике» и «клички» IBМ: «Big Blue» После матча с чемпионом Deep Blue был разобран. После матча с чемпионом Deep Blue был разобран. В основе Deep Blue II находится сервер RS/6000 фирмы IBM, у которого имеется 31 процессор. Один процессор объявлен главным, а ему подчиняются 30 остальных. К каждому из этих 30 процессоров подключено 16 специализированных шахматных процессора. Таким образом всего имеется 480 шахматных процессоров В основе Deep Blue II находится сервер RS/6000 фирмы IBM, у которого имеется 31 процессор. Один процессор объявлен главным, а ему подчиняются 30 остальных. К каждому из этих 30 процессоров подключено 16 специализированных шахматных процессора. Таким образом всего имеется 480 шахматных процессоров

Применение ИИ - турнир RoboCup

Гуманоидный робот

Тест Тьюринга

Основные подхода к разработке ИИ: нисходящий (англ. Top-Down AI), семиотический создание экспертных систем, баз знаний и систем логического вывода, имитирующих высокоуровневые психические процессы: мышление, рассуждение, речь, эмоции, творчество и т. д.; нисходящий (англ. Top-Down AI), семиотический создание экспертных систем, баз знаний и систем логического вывода, имитирующих высокоуровневые психические процессы: мышление, рассуждение, речь, эмоции, творчество и т. д.; восходящий (англ. Bottom-Up AI), биологический изучение нейронных сетей и эволюционных вычислений, моделирующих интеллектуальное поведение на основе биологических элементов, а также создание соответствующих вычислительных систем, таких как нейрокомпьютер или биокомпьютер. восходящий (англ. Bottom-Up AI), биологический изучение нейронных сетей и эволюционных вычислений, моделирующих интеллектуальное поведение на основе биологических элементов, а также создание соответствующих вычислительных систем, таких как нейрокомпьютер или биокомпьютер.

Уровни языков программирования Естественные языки Терминология конкретной предметной области Высокоуровневые языки программирования Низкоуровневые языки программирования (напр. C) Ассемблер (мнемокоды) Машинный код (то, что исполняет процессор) 9

Языки высокого/низкого уровня Языки высокого уровня – максимально приближены к задаче. Наиболее выражено в предметно ориентированных языках. Приоритет – что? Языки низкого уровня – в центре внимания не задача, а технология её реализации, связанная с языком / машиной. Привлекаются дополнительные понятия, не связанные с задачей. Приоритет – как? 10

Разнообразие языков программирования Со времени создания первых программируемых машин человечество придумало > 8500 языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.

Парадигмы программирования * Архитектура машины, ассемблер * Формула-ориентированные * Процедурное, структурное программирование * Объектно-ориентированное программирование * Языково-ориентированное программирование Сейчас

13 Классификации языков Языки программирования Высокого уровня Низкого уровня: C / C++, Assembler Общего назначения: Perl, Java, Python Предметно-ориентированные: Matlab, PL SQL, AutoLisp Языки программирования Императивные: C, Java, Perl Декларативные Функциональные языки: LISP, Haskell Языки логического прогр.: Prolog Мультипарадигменные Ruby

14

Предметно-ориентированный подход 15 Программа на предметно- ориентированном языке Реализация (трансляция) Описание задачи на естественном языке Готовая исполняемая программа …создать web-приложение для ведения каталога книг.. …хранить каталог книг.. осуществлять поиск по авторам … Элементы управления, общие элементы всех web- приложений и т.д. Работающий сайт Максимально приближена к описанию на ест. языке

ПОЯ Предметно-ориентированный язык программирования (англ. domain- specific programming language, domain- specific language, DSL) язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения, например C или Java, или языков моделирования общего назначения наподобие UML.

Требования к ПО Функциональность: программа должна выполнять ожидаемые функции. Функции нужно реализовывать в порядке их необходимости заказчику, чтобы это сделать, необходимо «вникнуть» в предметную область и определить, что действительно важно заказчику; выделить главные, вспомогательные и второстепенные функции. Функциональность: программа должна выполнять ожидаемые функции. Функции нужно реализовывать в порядке их необходимости заказчику, чтобы это сделать, необходимо «вникнуть» в предметную область и определить, что действительно важно заказчику; выделить главные, вспомогательные и второстепенные функции. Надежность: необходимо обеспечить минимум ошибок, сбоев, защиту информации от непреднамеренной порчи. Программа должна разумно реагировать на ввод пользователем любых данных, иначе пользователи будут «бояться» ошибиться, что, как минимум, замедлит их работу с системой. Кроме того, программы, предназначенные для работы в компьютерных сетях, требуют защиты от разного рода вирусных и хакерских атак, – программа должна проверять все входящие данные, особенно тщательно те, которые приходят по сети. Надежность: необходимо обеспечить минимум ошибок, сбоев, защиту информации от непреднамеренной порчи. Программа должна разумно реагировать на ввод пользователем любых данных, иначе пользователи будут «бояться» ошибиться, что, как минимум, замедлит их работу с системой. Кроме того, программы, предназначенные для работы в компьютерных сетях, требуют защиты от разного рода вирусных и хакерских атак, – программа должна проверять все входящие данные, особенно тщательно те, которые приходят по сети. Удобство: программа должна иметь интуитивно-понятный интерфейс, удобный для пользователя. Нужно минимизировать количество действий, необходимых пользователю для выполнения задачи, но не в ущерб понятности самих действий. Удобство: программа должна иметь интуитивно-понятный интерфейс, удобный для пользователя. Нужно минимизировать количество действий, необходимых пользователю для выполнения задачи, но не в ущерб понятности самих действий. Эффективность: программа должна эффективно использовать память, процессор, «жёсткий» диск и другие ресурсы системы. В особых случаях (когда «медлительность» системы критична) это требование становится едва ли не самым важным, важнее надёжности, но чаще оно менее существенно, чем сопровождение. Эффективность: программа должна эффективно использовать память, процессор, «жёсткий» диск и другие ресурсы системы. В особых случаях (когда «медлительность» системы критична) это требование становится едва ли не самым важным, важнее надёжности, но чаще оно менее существенно, чем сопровождение. Сопровождение: программа должна быть понятной, гибкой и «простой в сопровождении, переносе на новые платформы и развитии» - это требование программистов, в отличие от предыдущих, которые являются требованиями заказчиков, пользователей. Удобство сопровождения, как правило, находится в противоречии с эффективностью и для большинства программ более важно. Понятность программы позволяет быстро её развивать, добавлять новые функции, исправлять ошибки. Сопровождение: программа должна быть понятной, гибкой и «простой в сопровождении, переносе на новые платформы и развитии» - это требование программистов, в отличие от предыдущих, которые являются требованиями заказчиков, пользователей. Удобство сопровождения, как правило, находится в противоречии с эффективностью и для большинства программ более важно. Понятность программы позволяет быстро её развивать, добавлять новые функции, исправлять ошибки.

Виды ПОЯ ПОЯ могут быть: графическими (процесс программирования – «рисование» схемы в специальном редакторе); графическими (процесс программирования – «рисование» схемы в специальном редакторе); текстовыми (программирование – составление текста на некотором формальном языке). текстовыми (программирование – составление текста на некотором формальном языке). Кроме того, ПОЯ можно разделить на: статические – языки, в которых не важно, в каком порядке программист рисует элементы схемы или составляет текст программы; статические – языки, в которых не важно, в каком порядке программист рисует элементы схемы или составляет текст программы; динамические – имеет значение порядок действий (например, в Geometer's Sketchpad последовательность геометрического построения задаёт алгоритм). динамические – имеет значение порядок действий (например, в Geometer's Sketchpad последовательность геометрического построения задаёт алгоритм). 18

Создание ПОЯ Проектирование языка программирования Проектирование языка программирования Реализация интерпретаторов (компиляторов) для выбранных платформ Реализация интерпретаторов (компиляторов) для выбранных платформ Создание редактора (среды разработки) Создание редактора (среды разработки) 19 При создании ПОЯ нужно разработать не только сам язык, но и среду программирования (IDE), удобный редактор кода, отладчик, профилировщик и т.д. Тут возможно несколько подходов.

* Использовать достаточно гибкий существующий универсальный Язык Программирования (C#, Java, Python) и добавить предметно-ориентированные возможности при помощи библиотеки компонентов (Frameworkа); * Использовать существующую систему для создания предметно-ориентированных языков (Meta Programming System от JetBrains или DSL от Microsoft – позволяет рисовать графические схемы и генерировать по ним код); * Использовать среду программирования, в которой синтаксические конструкции языка можно модифицировать (настраивать процесс компиляции на определенную предметную область). Например, среда Phoenix, дополнение к компиляторам.Net; * Создать собственный ЯП с компилятором, отладчиком и т.д. Для генерации лексического анализатора можно использовать продукты lex и yacc;

Процесс компиляции 21

Geometers Sketchpad

Пример: Создание иконки

Схема работы «Журнала в журнале»

Программирование на языке общего назначения

Программирование на основе ПОЯ

Интерфейс учителя

Интерфейс ученика

Разбиение системы на модули

Элементы редактора

Редакторы

Delphi – предметная ориентированность Редактор интерфейса позволяет визуально (без программирования) нарисовать большую часть интерфейса. Процесс создания нагляден. Редактор интерфейса позволяет визуально (без программирования) нарисовать большую часть интерфейса. Процесс создания нагляден. Встроенные средства рефакторинга позволяют «переименовать» классы, методы, компоненты, модули в любой момент когда вы обнаружите несоответствие реального использования класса, метода, модуля и представления о нём. Встроенные средства рефакторинга позволяют «переименовать» классы, методы, компоненты, модули в любой момент когда вы обнаружите несоответствие реального использования класса, метода, модуля и представления о нём. Среда разработки генерирует шаблон метода при выборе события в редакторе свойств, нужно писать только само тело обработчика. Среда разработки генерирует шаблон метода при выборе события в редакторе свойств, нужно писать только само тело обработчика.

Работа в среде Delphi

Создание языка

Создание редактора

Использование - sandbox

Создаём поле ввода данных

И редактор для него

Добавляем поле в калькулятор

Генерируем и тестируем полученный язык

Выходное поле и формула

Можем использовать значение входных полей

Создаем генератор кода

Создание полей «в цикле»

Ссылка на другой макрос

Пример использования

Готовая программа

Спасибо за внимание! Вопросы?