Показано с 1 по 10 из 37

Тема: Конечный автомат на ПР200.

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #24

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    1) Никакой макрос не делает ничего кроме вычисления результата своей работы. - это отсуствие побочных эффектов.
    2) история результата работы любого макроса определяется историей состояний его входов. - это детерминированность (в указанном смысле)
    Как ловко жонглируем терминами "детерминированная функция без побочных эффектов" и "историей состояний его входов".
    Перевожу с русского на русский: эти два утверждения совершенно противоположны и одновременно не могут сосуществовать.

    На всякий случай, дам ссылку на Wikipedia про побочные эффекты:
    https://ru.wikipedia.org/wiki/%D0%9F...D%D0%B8%D0%B5)

    Нужная часть:
    Цитата Сообщение от Wikipedia
    Если вызвать функцию с побочным эффектом дважды с одним и тем же набором значений входных аргументов, может случиться так, что в качестве результата будут возвращены разные значения. Такие функции называются недетерминированными функциями с побочными эффектами.
    Очевидно, TON/TOF/SR/BLINK и т.п. функциональные блоки хранят и изменяют состояние. Их вызов сопряжён с чтением и записью этих значений.
    Операция "write to FB" так вообще один сплошной побочный эффект.

    Согласно определению с Wikipedia, если ОЛ-макрос содержит что-нибудь типа TON/TOF/SR/BLINK, то этот макрос нужно называть "недетерминированными функциями с побочными эффектами". Ведь, наличие TON/TOF/SR/BLINK может привести к тому, что "будет разный результат при одних и тех же входных аргументах".

    И после этого будем говорить, что "Каждый макрос в нем есть детерминированная функция без побочных эффектов"? Ну как такое можно говорить?

    Не стоит выдавать желаемое за действительное (ну или зачем ещё говорить высокопарные слова?)
    Очевидно, что большинство программ/макросов с побочными эффектами (как я говорил, TON/TOF/BLINK/SR/write to FB -- и всё, получай побочный эффект)

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    ОЛ не поддерживает глобальные переменные
    Вот те раз. А сетевые переменные не глобальные что-ли?

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    То есть возможность из внутренних макросов менять внешние переменные.
    Подразберитесь с теорией. Разумеется, из внутренних макросов менять внешние переменные нехорошо, но это (изменение внешних) не является необходимым критерием на "наличие побочных эффектов".

    Например, блок BLINK ничего не меняет, но это побочный эффект -- "обращение к источнику времени". Его вызываешь, и он возвращает разное.
    Аналогично и блок TON в макросе это тоже побочный эффект, хоть он "как бы" и не изменяет "внешнюю переменную"
    Последний раз редактировалось Владимир Ситников; 19.04.2017 в 17:33.

Похожие темы

  1. Нужна помощь в написании программы управления для ПР200
    от plotnik.off86 в разделе Среда программирования OWEN Logic
    Ответов: 47
    Последнее сообщение: 27.01.2017, 14:32
  2. Ответов: 32
    Последнее сообщение: 16.01.2016, 16:04
  3. Ответов: 5
    Последнее сообщение: 14.08.2015, 15:01
  4. пошаговое выполнение Sfc-программы
    от drvlas в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 01.11.2010, 20:35
  5. Пошаговое выполнение
    от FVG-8 в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 02.09.2008, 09:17

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •