Главная страница
Навигация по странице:

  • «КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ ИМЕНИ И.Т. ТРУБИЛИНА» Факультет

  • КУРСОВАЯ РАБОТА (ПРОЕКТ)

  • Оценка _______________ ___________________________

  • Глава 1. Концепция непроцедурного программирования

  • Объектный подход

  • Компонентная структура Компонентная структура

  • Технология «промежуточного слоя»

  • Непроцедурные языки

  • Становление непроцедурного программирования

  • Непроцедурный язык для АСУТП

  • Программирование на языке «НАВТ»

  • Глава 2. Обзор основных языков непроцедурного программирования

  • Объектно-ориентированные языки

  • Суть функционального (аппликативного) программирования

  • Логическое или реляционное программирование

  • Список использованной литературы.

  • Курсач — копия. кубанский государственный аграрный университет имени и. Т. Трубилина


    Скачать 50.95 Kb.
    Названиекубанский государственный аграрный университет имени и. Т. Трубилина
    Дата24.01.2022
    Размер50.95 Kb.
    Формат файлаdocx
    Имя файлаКурсач — копия.docx
    ТипКурсовая
    #340884


    МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ

    Федеральное государственное бюджетное образовательное учреждение

    высшего образования

    «КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ

    ИМЕНИ И.Т. ТРУБИЛИНА»

    Факультет прикладной информатики

    Кафедра компьютерных технологий и систем

    КУРСОВАЯ РАБОТА (ПРОЕКТ)

    «Концепция непроцедурного программирования. Обзор основных языков непроцедурного программирования.»

    Направление подготовки_______________________________________________________________

    Направленность______________________________________________________________________

    Выполнил:

    Перминов Константин Александрович

    ИТ2102

    Руководитель:


    подпись
    _________________Курносов С.А.

    Дата защиты_______________


    Оценка
    _______________

    ___________________________


    подпись
    ______________________Ф.И.О

    Краснодар 2021

    Оглавление


    ВВЕДЕНИЕ 3

    Глава 1. Концепция непроцедурного программирования 4

    1.1.Непроцедурные языки - новое поколение средств разработки АСУТП 4

    1.2. Объектный подход 6

    1.3.Компонентная структура 6

    1.4.Технология «промежуточного слоя» 7

    1.5.Непроцедурные языки 7

    1.6.Становление непроцедурного программирования 7

    1.7.Непроцедурный язык для АСУТП 9

    1.8.Программирование на языке «НАВТ» 12

    Глава 2. Обзор основных языков непроцедурного программирования 14

    2.1.Классификация непроцедурных языков программирования 14

    1.9.Объектно-ориентированные языки 14

    1.10.Суть функционального (аппликативного) программирования 19

    1.11.Логическое или реляционное программирование 21

    ЗАКЛЮЧЕНИЕ 23

    Список использованной литературы. 25


    ВВЕДЕНИЕ


    Непроцедурное программирование представляет собой прямо противоположную методологию (парадигму) разработки, когда компьютеру ставится определённая задача в более или менее общем виде, без написания формализованного алгоритма, который отдаётся на усмотрение машины.

    Непроцедурные (декларативные) языки — это языки, при использовании которых в программе в явном виде указывается, какими свойствами должен обладать результат, но не говорится, каким способом он должен быть получен. Непроцедурные языки делятся на две группы: функциональные и логические.

    Декларативные языки программирования — это языки программирования высокого уровня, в которых операторы представляют собой объявления или высказывания в символьной логике. Типичным примером таких языков являются языки логического программирования (языки, основанные на системе правил и фактов). Характерной особенностью декларативных языков является их декларативная семантика. Основная концепция декларативной семантики заключается в том, что смысл каждого оператора не зависит от того, как этот оператор используется в программе. Декларативная семантика намного проще семантики императивных языков, что может рассматриваться как преимущество декларативных языков над императивными.

    Глава 1. Концепция непроцедурного программирования


      1. Непроцедурные языки - новое поколение средств разработки АСУТП

    Сразу же после появления программируемых устройств снижение сложности программирования стала одной из главных забот всех разработчиков. Первые этапы развития средств программирования хорошо описаны в литературе и не являются предметом данной статьи.

    Для нас интересен момент выделения из общего дерева программных средств языков технологического программирования. Это событие стало результатом осознания особенностей задач, стоящих перед разработчиком АСУТП, и желанием приблизить алгоритмиста-технолога к написанию прикладных программ. Для удобства технологов программы стали представлять в графическом виде, привычном для проектировщиков АСУТП: релейно-контактных схем (RCS), функциональных блоковых диаграмм (FBD), ...(SFC). К концу 80-х годов, как вершина этого подхода, был разработан стандарт IEC1131-3. Опубликованный в 1988г, он включил в себя 5 языков технологического программирования: перечисленные выше графические плюс текстовые ST и IL. На момент своего принятия стандарт использовал современные технологии программирования и стал важным этапом развития языков технологического программирования, существенно облегчив разработчикам создание прикладных программ.

    Однако, поставленную задачу, стать средством программирования для технологов - языки стандарта не решили и решить не могли, т.к. структура описания алгоритма, естественная для технолога (примером которой может служить любая инструкция оператора-машиниста), принципиально отличается от структур языков 1131-3.

    В 90-х годах в мире программирования произошла настоящая революция, связанная с внедрением объектной и компонентной технологий. Однако, перевернув весь программистский мир, они лишь всколыхнули поверхность в «стране» АСУТП. Знакомство с новейшими пакетами нескольких очень известных фирм разочаровывает - новые технологии используются преимущественно в графических и цифровых интерфейсах, почти не повлияв на внутреннюю организацию систем. Последняя редакция IEC1131-3, опубликованная в 1999г, вообще не обратила на них никакого внимания, хотя при программировании систем реального времени эти технологии дают максимальный эффект. Фактически, первоначально удачный стандарт превратился сейчас в тормоз, а не стимул развития средств технологического программирования.

    Характерно, что наиболее «продвинутые» SCADA-системы, например Genesis32, в качестве встроенного средства программирования используют не языки 1131-3, а различные варианты Visual Basic - объектность и компонентность языка перевешивают его «не технологичность», но естественным для алгоритмиста-технолога такой язык не является.

    Использование современных технологий позволяет уже сейчас создавать системы программирования действительно дружественные для алгоритмиста-технолога.

    Основой современной системы технологического программирования являются:




    • объектный подход;




    • компонентная структура;




    • технология «промежуточного слоя» с микроядром;




    • непроцедурное программирование.

      1. Объектный подход

    Объектный подход - мощная современная технология проектирования и программирования, разработанная в конце 80-х годов. К настоящему времени АСУТП в силу большой инерционности остается одной из наименее освоенных этой технологией областей. Он практически не используется в системах технологического программирования, а при организации управления «объектность» не поднимается выше уровня задвижки и регулятора. Преимущества объектного подхода в сравнении с функциональным доказаны как теоретически, так и 15-летней практикой его использования.

    В системе технологического программирования очень важны такие преимущества объектной технологии как естественный параллелизм описания процессов, легкость расширения набора функций без изменения структуры системы (например, при переходе от информационной системы к управляющей), простота расширения системы при увеличении объема автоматизации объекта, эффективность тиражирования на аналогичные объекты.

      1. Компонентная структура

    Компонентная структура - современная технология построения программной системы из набора типовых элементов (компонентов). Для всех компонентов разрабатывается единый протокол взаимодействия с исполняющей системой, пользователями и другими компонентами.

    При программировании конкретного компонента достаточно описать внутреннюю логику его работы и реализацию указанного протокола, а все взаимодействия с окружением реализует исполняющая система. Использование технологии существенно сокращает сроки разработки и увеличивает надежность программного обеспечения.

      1. Технология «промежуточного слоя»

    Технология «промежуточного слоя» - современная технология, обеспечивающая высокую степень переносимости ПО, путем создания в программной системе внутреннего системного слоя и максимальной локализации и стандартизации его взаимодействия с операционной системой.

    Многослойная организация системы полностью изолирует технологическую логику работы прикладного ПО от используемых технических и низкоуровневых программных средств, обеспечивает высокую переносимость программного комплекса.

    «Последним словом» данной технологии является использование виртуальных машин обеспечивающих максимальную переносимость программного кода.

      1. Непроцедурные языки

    Непроцедурные языки - современное направление системного программирования, позволяющее сконцентрировать внимание разработчика на описании целей и правил, а не на последовательности действий по их реализации (т.е. описывается «что делать» вместо «как делать»). Использование непроцедурного языка обеспечивает максимально возможную простоту и понятность программ для разработчика-технолога, перенося сложности процедурной реализации на системный уровень, что сокращает трудоемкость и сроки разработки, увеличивает надежность ПО.

      1. Становление непроцедурного программирования

    Как известно, человеческое мышление построено прежде всего на ассоциациях и связях. Естественное мышление непроцедурно - алгоритмы типа «делай раз, делай два» составляются с трудом лучшими специалистами, а всеми остальными выучиваются наизусть. Вне производства люди по - возможности избегают жестких алгоритмов (показательно, что даже в классически-процедурном кулинарном процессе хозяйки не любят использовать «строгие» измерения и активно варьируют рецептуру, сохраняя смысловые связи между компонентами).

    Однако, современные вычислительные машины требуют процедурного описания своего функционирования. Поэтому, уже в течении последних 50 лет все большее количество людей занимаются ручной компиляцией своего непроцедурного мышления в процедурные описания. Принципиальное несовершенство глобальной процедурности было осознано сравнительно недавно, а системы непроцедурного программирования, позволяющие заменить ручную компиляцию знаний на автоматическую, только начинают заявлять о себе. В настоящий момент такие системы активно используются в элитных отраслях типа космических исследований, параллельных вычислений в задачах ядерной физики и т.п. Эпоха широкого внедрения в непроцедурные программирования в промышленности еще не наступила, хотя в лабораториях крупных фирм ведутся соответствующие разработки.

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

    Совокупность объектно-компонентных технологий дала качественно новый базис для построения систем непроцедурного программирования, что существенно упростило и удешевило их создание, открывая возможность использования в базовых отраслях промышленности.

    Заканчивая исторический экскурс хотелось бы особо отметить, что непроцедурное программирование - одна из немногих областей, в которых отечественная наукоемкое производство находится на передовых рубежах. Несколько коллективов РАН, ведущих соответствующие разработки высоко котируются в мире. К сожалению, Российское правительство практически не финансирует развитие этого стратегического направления отечественной научной технологии, а существенным источником финансирования работ в течении длительного времени были заказы от НАСА и министерства обороны США!

    Применение непроцедурного программирования в АСУТП рассмотрим на конкретном примере языка «НАВТ» («Непроцедурная АВТоматизация»), составляющего основу программного комплекса «САРГОН», производимого ЗАО «НВТ-Автоматика».

      1. Непроцедурный язык для АСУТП

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

    Непроцедурность языка не превращается в фетиш - там, где естественным является процедурное описание (например, в алгоритмах переключений) оно активно используется.

    Отличительными чертами языка технологического программирования «НАВТ» являются:

    1)   Удобные средства типизации прикладных программных компонентов, четкое разделения описания типовых алгоритмов от их применения в конкретном проекте, что обеспечивает простоту создания библиотек типовых решенийи их дальнейшей модификации. При сохранении внешнего интерфейса внутренняя логика работы типового элемента может быть эффективно модернизирована без всякой переделки проекта.

    2)   Описание алгоритмов функционирования на «НАВТ» обладает естественным параллелизмом - пользователю не приходится искусственно объединять в одно дерево описания слабо связанных процессов - организация параллельных вычислений организуется на системном уровне.

    3)   В соответствии с логикой технолога (зафиксированной в любой инструкции) язык предоставляет средства раздельного описания нормального хода процесса и действий в исключительных ситуациях. Программный комплекс «САРГОН» содержит средства, проверяющие непротиворечивость независимо составленных описаний, что является дополнительным средством нахождения содержательных ошибок.

    4)   В язык встроены (а исполняющей системой поддержаны) развитые средства передачи сообщений, команд и данных дающие возможность назначать приоритеты взаимодействий между компонентами в наиболее естественной для технолога-алгоритмиста форме и писать прикладные программы, не зависящие от размещения компонентов по вычислительным узлам.

    5)   Использование для описания любого типа объекта базовой модели конечного автомата обеспечивает:




        1. гарантированную детерминированность процесса управления и невозможность попадания системы в непредусмотренное программой состояние;




        1. однообразность операций контроля и регистрации состояния объектов различного типа;




        1. однообразность выполнения операций по управлению объектами всех уровней: от клапана до энергоблока в целом;




        1. возможность эффективного управления системными ресурсами (каналами связи, базами данных и т.п.), представляемыми в языке как системные модели.

    6)   «Модельное» строение программ обеспечивает возможность полномасштабной проверки технологических программ управления любого объекта (от клапана до энергоблока включительно) на одном компьютере. Для проверки используется уникальная система отладки и моделирования, включенная в состав комплекса «САРГОН», которая обрабатывает непосредственно код, подготовленный для выполнения в реальном времени. При этом не требуется никакого дополнительного программирования.

    7)   Исполнение программ реализовано через виртуальную машину (ВМ), которая обеспечивает:




        1. высокую эффективность выполнения программ в реальном времени - при загрузке программы осуществляется Just-In-Time компиляция, в результате которой устанавливаются эффективные связи между компонентами, которые используются при в процессе выполнения прикладной программы; эффективность исполнения кода близка к «натуральному» С++ и на порядок выше, чем у программ, использующих ActiveX или любые формы OLE (в том числе OPC);




        1. максимальную переносимость прикладных программ на вычислительные платформы различного типа (сама виртуальная машина реализована на С++ и уже дважды легко переносилась на другие ОС).



      1. Программирование на языке «НАВТ»

    Технологическая программа на непроцедурном языке представляет собой совокупность форм заданной структуры:

    • Таблица параметров модели.

    • Таблица исполнителей команд.

    • Таблица перечислимых типов модели.

    • Таблица состояний модели.

    • Таблица реакций модели.

    • Таблица запретов на команды подчиненным.

    • Расчеты.

    • Диаграммы контуров регулирования

    • Диаграммы переключений модели.




    Разделение описания на указанные формы обеспечивают максимальную ясность технологического смысла каждого выражения и перекладывают на системный уровень организацию взаимодействия между ними. При этом в раздел «Расчеты» могут быть помещены описания произвольной структуры, что позволяет реализовать произвольные алгоритмы.


    Глава 2. Обзор основных языков непроцедурного программирования

      1. Классификация непроцедурных языков программирования


    Непроцедурные языки включают две основные языковые группы:

    • объектно-ориентированные;

    • декларативные.

    Объектно-ориентированные состоят из ряда независимых объектов, которые функционируют как отдельные компьютеры. С помощью этих блоков можно решать задачи, не вникая во «внутреннюю кухню» их работы. Работа с декларативным языком подразумевает установление взаимосвязей между исходными информационными структурами и свойствами конечного результата. При этом в нём не существует понятия «команда», а программист не создаёт алгоритмы.

    Декларативные языки подразделяются на два семейства:

    • логические;

    • функциональные.

    Логическое программирование описывает проблемы в виде фактов и формул, а система решает их посредством механизмов логического вывода. Функциональное, в свою очередь, формулирует задачу как совокупность определённых функций.

      1. Объектно-ориентированные языки

    Смолток (Smalltalk – светская беседа) начал разрабатываться в 1970 г. в исследовательской лаборатории XEROX (США) и первоначально предназначался для реализаций функций машинной графики. Данный язык оригинален тем, что его синтаксис очень компактен и базируется исключительно на понятии объекта. В нем отсутствуют операторы или данные. Все, что входит в Смолток, является объектами, а объекты общаются друг с другом исключительно с помощью сообщений. В настоящее время версия Visual Age for Smalltalk развивается компанией IBM.

    С++ (Си-плюс-плюс) С++ появился очень давно, но до сих пор пользуется большой популярностью у профессионалов, которые считают владение им практически обязательным. Изучать его как первый язык программирования не нужно, но приобретение профессионализма характеризуется тем, что человек начинает использовать С++ на постоянной основе. Со времени создания он прошёл несколько процедур стандартизации и обновления, поэтому сохраняет актуальность и по сей день. Главным его плюсом является то, что он полностью универсален. На С++ можно писать всё что угодно, именно это и обеспечило ему любовь профессионалов. Кроме того, он относительно прост в освоении — тому, кто уже изучил С, Python или Java, будет нетрудно разобраться и в С++. Верно и обратное, так что С++ часто представляют, как своего рода универсальную формулу и некий ключик к миру программирования вообще. В то же время критики отмечают неудобный синтаксис и слишком длинный, громоздкий программный код, который часто появляется в результате работы на С++. Однако эта проблема уже отчасти исправлена с помощью дополнительных шаблонов. Язык Cи++ (C++) был разработан в начале 80-х гг. Бьярном Страуструпом в лаборатории Bell корпорации AT&T. К 1990 г. была выпущена третья версия языка C++, стандартизированная американским государственным комитетом стандартов ANSI. Объектно-ориентированное расширение языка Си позволило резко повысить производительность труда программистов, унаследовав при этом определённую низкоуровневость.

    В 1990 г. сотрудник корпорации Sun Д. Гослинг разработал объектно-ориентированный язык на основе расширения C++, путём исключения из него низкоуровневых возможностей. Новая интегрируемая в Internet версия языка получила название Java (Ява, Джава). Он известен своей мультиплатформенностью и тем, что находится в составе большинства современных операционных систем, так как работа многих приложений без него будет недостаточно результативной или вообще невозможной. Практически каждый пользователь сталкивался с необходимостью установить или обновить Java-модуль. К подводным камням Java относится медлительность написанных на нём программ и их «прожорливость» (то есть они задействуют оперативную память в большом объёме). Синтаксис языков C++ и Java практически полностью совпадает. Принципиальным различием является то, что язык C++ компилируется в машинный код, a Java – в платформно-независимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора – виртуальной Java-машины (Java Virtual Machine), версии которой созданы сегодня для любых платформ.

    Java script – этот язык прост, многофункционален и уже давно стал неотъемлемым атрибутом большинства современных интернет-браузеров. Обычно его используют для придания сайтам большей интерактивности, то есть возможности пользователя взаимодействовать с контентом. JavaScript применяется где только можно — это браузеры, плагины, прикладное программное обеспечение, офисные и серверные приложения. Дополнительную популярность ему обеспечили специальные высокоабстрактные библиотеки. Однако JavaScript довольно небезопасен, а написанные на нём приложения обычно пестрят ошибками. Любой пользователь интернета с ними сталкивался, причем не раз. Но стереть его из истории пока что нельзя, ведь браузеры без него попросту перестанут работать.

    Ruby (Руби) - кроссплатформенный и по-настоящему универсальный скриптовый язык, относящийся к сфере объектно-ориентированного программирования. Его синтаксис прост и лаконичен, благодаря чему новичкам будет несложно его освоить. Профессионалы любят его за бережливость по отношению к компьютерным ресурсам. Ruby часто хвалят за динамизм и хорошую сбалансированность, где красота не принесена в жертву удобству и наоборот. Кроме того, он абсолютно открыт для использования, изменения, копирования и распространения, а ещё у него довольно много разных библиотек, которые обновляются одна за другой и позволяют решать разные задачи.

    ActionScript (Экшн-скрипт) ActionScript — это мультимедийный скриптовый язык, который предназначен для написания объектно-ориентированных программ, а именно Flash-приложений. Его заточенность под конкретные задачи является одновременно и плюсом, и минусом, так как в пределах Flash он отличается многофункциональностью, но ничего другого на нём написать практически невозможно. Кроме того, его характеризует гибкость, позволяющая решать задачи разными и порой нестандартными способами, но иногда такой код трудно понять кому-либо, кроме самого автора. Однако даже и он через время может запутаться в своём коде, а ведь это чревато трудностями с отладкой, обновлениями и повторным использованием.

    Nemerle (Немерле) Это высокоуровневый гибридный язык, в котором сочетаются элементы функционального и объектно-ориентированного программирования. Он появился не так давно и вобрал в себя лучшие наработки языков-предшественников, но при этом дал и реальный вклад в программирование — возможность создания метапрограмм. Этот метод заключается в выработке алгоритмов, которые в процессе своей работы создают возможные сценарии для дальнейшего образования исполняемых файлов. Проще говоря, в Nemerle соединились лучшие и самые полезные черты предыдущих языковых поколений. Это пример языка, который совмещает в себе новизну и универсальность.

    К объектно-ориентированным системам визуального проектирования относятся Visual Basic, вряд ли найдётся тот, кто не слышал об этом продукте от Microsoft, ведь многие программисты именно на нём познавали азы программирования. Visual Basic простой, многофункциональный и подходит для быстрого прототипирования. VB даёт широкие возможности по созданию программного кода, а также позволяет разрабатывать UI (пользовательский интерфейс) программ. Именно его чаще всего используют специалисты Microsoft для создания таблиц с данными. Впрочем, не обошлось и без недостатков, таких как отсутствие комментариев и доступ к памяти компьютера на низком уровне. Кроме того, у этой программы невысокая скорость работы, использовать её можно только на ОС Windows и macOS. Delphi - императивный объектно-ориентированный язык, разработанный на основе высокоуровневого Object Pascal. Он широко распространён благодаря многофункциональности, а также множеству компиляторов и диалектов, среди которых программист найдёт именно то, что подходит под его конкретные задачи. С помощью Delphi написано много программ, включая плееры, файловые менеджеры, мессенджеры и многое другое. Диалектное богатство одновременно является и достоинством, и недостатком. Дело в том, что программа, написанная на одном из его видов, скорее всего, просто не откроется на другой версии. C++ Builder, Visual C++. VBA (Visual Basic for Application – Visual Basic для приложений) является общей языковой платформой для приложений Microsoft Office (Excel, Word, Power Point и др.). VBA соблюдает основной синтаксис и правила программирования языков Бейсик-диалектов. VBA помогает довольно сильно расширить возможности приложений за счет написания макросов — программ, предназначенных для автоматизации выполнения многих операций. Программы на языке VBA для приложений создаются двумя способами: в автоматическом режиме как результат записи клавишной макрокоманды и путем написания программного кода.

      1. Суть функционального (аппликативного) программирования

    Суть функционального (аппликативного) программирования определена Андреем Петровичем Ершовым как «способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части является введение имени функции, а единственным правилом композиции – оператор суперпозиции функций. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передачи управления». Ключевым понятием в функциональных языках является выражение. Программа, написанная на функциональном языке, представляет собой последовательность описаний функций и выражений, которые необходимо вычислить.

     Основной конструкцией в функциональных языках является выражение. К выражениям относятся константы, структурированные объекты, функции, их тела и вызовы функций. Аппликативный язык программирования включает следующие элементы:

    • классы констант, которыми могут манипулировать функции;

    • набор базовых функций, которые можно использовать без предварительного объявления;

    • правила построения новых функций из базовых;

    • правила формирования выражений на основе вызовов функций.

             Программа представляет собой последовательность описаний функций и выражения, которые необходимо вычислить. Выражение вычисляется методом редукции, т.е. проводится серия упрощений, до тех пор, пока это возможно по следующим правилам: вызовы базовых функций заменяются соответствующими значениями; вызовы не базовых функций заменяются их телами, в которых параметры заменены аргументами.

                Функциональное программирование не рассматривает память как хранилище значений. Понятие оператора присваивания отсутствует, поэтому переменные обозначают объекты программы, что полностью соответствует понятию переменной в математике. Можно составлять программы и без переменных. Нет существенных различий между константами и функциями, т.е. между программами и данными. В результате этого функция может быть значением вызова другой функции и может быть элементом структурированного объекта. Число аргументов при вызове функции не обязательно должно совпадать с числом параметров, указанных при ее описании.

    Первым функциональным языком стал Лисп (LISP, LISt Processing – обработка списков), созданный в 1959 г. Джоном Маккарти. Этот язык ориентирован на структуру данных в форме списка и позволяет организовать эффективную обработку больших объемов текстовой информации. Существенная черта языка — единообразие программных структур и структур данных: все выражения записываются в виде списков.

      1. Логическое или реляционное программирование

     Создание языка искусственного интеллекта Пролог (PROLOG, PROgramming in LOGic – программирование в терминах· логики) в 1973 г. французским ученым Аланом Кольмероэ открыло новую область – логическое или реляционное программирование.

             Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами и цели. Процесс выполнения программы трактуется как процесс общезначимости логической формулы, построенной из программы по правилам, установленным семантикой используемого языка. Результат вычисления является побочным продуктом этого процесса. В логическом программировании нужно только специфицировать факты, на которых основывается алгоритм, а не определять последовательность шагов, которые требуется выполнить. Это свидетельствует о декларативности языка логического программирования. Логические программы имеют небольшое быстродействие, так как вычисления. осуществляются методом проб и ошибок, поиском с возвратами к предыдущим шагам.

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

    ЗАКЛЮЧЕНИЕ


    Консерватизм АСУ ТП привел к тому, что базовый стандарт на системы технологического программирования препятствует использованию современных технологий, однако программные системы, основанные на новых принципах уже появились и способны обеспечить более высокий уровень скорости и качества разработки автоматизированных систем управления.

    Применение непроцедурных языков программирования – одно из наиболее перспективных направлений развития АСУ ТП. В последние годы, в связи с ростом требований к надёжности систем управления, разработка непроцедурных языков значительно активизировалась, но часто производится разработчиками неосознанно, что заставляет их “изобретать велосипед”. Непроцедурный язык программирования заложен в основе систем, успешно применяется и развивается в течение 25 лет. Его использование обеспечило следующие свойства:

    • Гарантированная надёжность технологических программ.

    • Эффективное средство формализации описаний.

    • Поддержка всех уровней и всех этапов жизненного цикла системы управления.

    • Мульти проектная поддержка с эффективным тиражированием.

    • Встроенная поддержка имитационного моделирования.

    Независимость прикладных программ от конфигурации ПТК. Использование передовой технологии – непроцедурного языка программирования – одна из важных составляющих высокой надёжности.

    Список использованной литературы.


        1. Кручинин, В. В. Процедурно-ориентированное программирование: Учебное пособие / В. В. Кручинин. – Томск: ТУСУР, 2006. – 211 с.

        2. Кручинин, В. В. Технологии программирования: Учебное пособие /
          В. В. Кручинин. – Томск: ТУСУР, 2013. – 271 с.

        3. Павловская, Т. C/C++. Процедурное и объектно-ориентированное программирование. Учебник / Т. Павловская. – М.: Питер, 2015. – 496 c.

        4. Семакин, И. Г. Основы программирования и баз данных. Учебник / И.Г. Семакин. – М.: Academia, 2014. – 224 c.

        5. Черпаков, И. В. Основы программирования. Учебник и практикум / И.В. Черпаков. – М.: Юрайт, 2016. – 220 c.





    написать администратору сайта