Содержание
- 
              
            Предметно - ориентированное программированиеСтепулёнок Денис Олегович 1 
- 
              
            Искусственный интеллектАвтоматизация “рутинных” задач, “скучных” для человека Автономные системы “Быстрое” управление 
- 
              
            Фантастика: разговор с компьютером«Идеальный» компьютер «понимает» естественный язык человека. «Программирование» на естественном языке 
- 
              
            Deep Blue – шахматныйсуперкомпьютер11 мая 1997 года одержал победу в матче из 6 партий с чемпионом мира по шахматам Гарри Каспаровым Разработан компанией IBM Название получил от «Deep Thought» (глубокая мысль) из романа Дугласа Адамса «Автостопом по галактике» и «клички» IBМ: «Big Blue» После матча с чемпионом Deep Blue был разобран. В основе Deep Blue II находится сервер RS/6000 фирмы IBM, у которого имеется 31 процессор. Один процессор объявлен главным, а ему подчиняются 30 остальных. К каждому из этих 30 процессоров подключено 16 специализированных шахматных процессора. Таким образом всего имеется 480 шахматных процессоров 
- 
              
            Применение ИИ - турнир RoboCup
- 
              
            Гуманоидный робот
- 
              
            Тест Тьюринга
- 
              
            Основные подхода к разработке ИИ:нисходящий (англ. Top-Down 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 последовательность геометрического построения задаёт алгоритм). 18 
- 
              
            Создание ПОЯПроектирование языка программирования Реализация интерпретаторов (компиляторов) для выбранных платформ Создание редактора (среды разработки) 19 При создании ПОЯ нужно разработать не только сам язык, но и среду программирования (IDE), удобный редактор кода, отладчик, профилировщик и т.д. Тут возможно несколько подходов. 
- 
              
            
 Использовать достаточно гибкий существующий универсальный Язык Программирования (C#, Java, Python) и добавить предметно-ориентированные возможности при помощи библиотеки компонентов (Framework’а); Использовать существующую систему для создания предметно-ориентированных языков (Meta Programming System от JetBrains или DSL от Microsoft – позволяет рисовать графические схемы и генерировать по ним код); Использовать среду программирования, в которой синтаксические конструкции языка можно модифицировать (настраивать процесс компиляции на определенную предметную область). Например, среда Phoenix, дополнение к компиляторам .Net; Создать собственный ЯП с компилятором, отладчиком и т.д. Для генерации лексического анализатора можно использовать продуктыlex иyacc; 
- 
              
            Процесс компиляции21 
- 
              
            Geometer’s Sketchpad
- 
              
            
 
- 
              
            Пример: Создание иконки
- 
              
            Схема работы «Журнала в журнале»
- 
              
            Программирование на языке общего назначения
- 
              
            Программирование на основе ПОЯ
- 
              
            Интерфейс учителя
- 
              
            Интерфейс ученика
- 
              
            Разбиение системы на модули
- 
              
            Элементы редактора
- 
              
            Редакторы
- 
              
            Delphi – предметная ориентированностьРедактор интерфейса позволяет визуально (без программирования) нарисовать большую часть интерфейса. Процесс создания нагляден. Встроенные средства рефакторинга позволяют «переименовать» классы, методы, компоненты, модули в любой момент когда вы обнаружите несоответствие реального использования класса, метода, модуля и представления о нём. Среда разработки генерирует шаблон метода при выборе события в редакторе свойств, нужно писать только само тело обработчика. 
- 
              
            Работа в среде Delphi
- 
              
            
 http://www.jetbrains.com/mps/ 
- 
              
            Создание языка
- 
              
            Создание редактора
- 
              
            Использование - sandbox
- 
              
            Создаём поле ввода данных
- 
              
            И редактор для него
- 
              
            Добавляем поле в калькулятор
- 
              
            Генерируем и тестируем полученный язык
- 
              
            Выходное поле и формула
- 
              
            Можем использовать значение входных полей
- 
              
            Создаем генератор кода
- 
              
            Создание полей «в цикле»
- 
              
            Ссылка на другой макрос
- 
              
            Пример использования
- 
              
            Готовая программа
- 
              
            Спасибо за внимание!Вопросы? 
 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
   
   
   
   
   
   
   
   
   
   
   
  
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.