Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя
Показано с 31 по 40 из 44

Тема: Макросы ОЛ: с побочными эффектами и/или детерминированные?

  1. #31
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,125

    По умолчанию

    Во понесло... -два гения на форуме это хорошо Может простых смертных в покое оставят
    электронщик до мозга костей и не только

  2. #32

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    предложенной мной чистотой
    Процитируйте хоть какой-нибудь источник, где говорится о чистоте функций или о детерминированности функций или о побочных эффектах в том виде, в котором вы предлагаете.


    Сейчас получается так, что вы сами себе придумали определение чистоты функции, и бросаетесь им направо и налево.
    Так не работает.

    Давайте хоть какую-нибудь ссылку -- можно будет предметно обсуждать.
    Я приводил Wikipedia (русские и английские статьи) -- вы говорите, что автор статей ничего не понимает.
    Я приводил ссылку на https://www.schoolofhaskell.com -- вы игнорируете.

    Вот вам ссылка на stackoverflow:
    Цитата Сообщение от stackoverflow
    http://stackoverflow.com/a/4382247/1261287
    In a pure functional language, you can't do anything that has a side effect.

    A side effect would mean that evaluating an expression changes some internal state that would later cause evaluating the same expression to have a different result. In a pure functional language you can evaluate the same expression as often as you want with the same arguments, and it would always return the same value, because there is no state to change.

    For example, a pure functional language cannot have an assignment operator
    Вот вам ссылка на haskell.org:
    Цитата Сообщение от haskell.org
    https://wiki.haskell.org/Functional_programming#Side_effects_through_monads
    3.2.4.2 Side effects through monads
    Another way of introducing side effects to a pure language is to simulate them using monads...
    То, что в обычных языках называется "побочным эффектом" можно сэмулировать монадой.
    Я утверждал, что SR триггер в смысле ОЛ обладает побочным эффектом, и как раз вы использовали монаду. Совпадение? Не думаю!

    Ещё из haskell.org:
    Цитата Сообщение от haskell.org
    https://wiki.haskell.org/Functional_programming#Purity3.2 Purity
    Some functional languages allow expressions to yield actions in addition to return values. These actions are called side effects to emphasize that the return value is the most important outcome of a function (as opposed to the case in imperative programming)
    Иными словами, в чистых функциях запрещено выполнять какие-то дополнительные действия (yield actions) кроме как возвращать значение. Как раз таким "дополнительным действием" и является увеличение переменной counter в функциях abcd/abcd2. Как раз таким действием и является изменение состояния триггера в ОЛ.


    Я к чему: море ссылок подтверждают мою позицию. Обратите внимание: они подтверждают не моё определение, а мою позицию. Вы же машете своим собственным определением (которое отличается от общепринятых) и смешиваете его с общепринятыми.



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

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

  3. #33
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    По умолчанию

    Да уж точно. Хотел за вчера-сегодня еще один макрос довести до ума и описание написать, а вместо этого обсуждаю чистые функции...

  4. #34

    По умолчанию

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

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

    Это называется "слышал звон, да не знаешь, где он".

    Это не я должен убеждать вас в том, что "вы сами себе придумали плохое определение".
    А это вы должны аргументировать почему ваше определение совпадает с общепринятым.

  5. #35

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    Да уж точно. Хотел за вчера-сегодня еще один макрос довести до ума и описание написать, а вместо этого обсуждаю чистые функции...
    Макросы это хорошее дело.
    Хоть кто-то сделал экспоненциальное сглаживание для ПР (я эти ОЛ квадратики терпеть не могу).

    Но вот говорить, что "все ОЛ макросы чистые" -- вовсе неправильно.

  6. #36
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    По умолчанию

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

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

  7. #37

    По умолчанию

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

    Аксиоматику посмотрите в ссылках выше.

    Практическое применение: чистую функцию (чистую в том плане, что она не зависит от истории прошлых запусков, при одинаковых аргументах всегда возвращает одно и то же значение, и при этом не совершает каких-либо побочных действий кроме возвращения значения) add :: Int -> Int -> Int тестировать гораздо проще, чем функцию add2 :: Int -> Int -> Int, которая зависит от истории предыдущих запусков.
    Если результат функции не зависит от истории прошлых запусков, то гораздо проще понять что она делает, как она работает.

    Если же результат функции зависит от истории запуска, то анализировать, понимать и тестировать её гораздо сложнее. Появляются разные варианты "а что, если сигнал на этот вход придёт раньше или позже? А что, если сигнал придёт два раза? А этот счётчик может переполниться?".

    Вот реальный пример:
    Цитата Сообщение от Threac-25
    https://ru.wikipedia.org/wiki/Therac-25

    Машина была сразу же выведена из эксплуатации и Хагер начал собственное расследование. Медсестра вспомнила, что в тот день она заменяла «x» на «e». Выяснилось, что если сделать это достаточно быстро, переоблучение случалось практически со 100-процентной вероятностью.
    Это как раз пример того, что функцию, которая зависит не только от входных параметров, но ещё и от истории запусков проверять гораздо сложнее.
    И эту ошибку нашли ценой гибели реальных пациентов.
    Последний раз редактировалось Владимир Ситников; 21.04.2017 в 21:33.

  8. #38

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    У вас понятие чистой функции аксиоматическое. Вот это назвали чистой функцией и баста, значит так оно и есть. Вас вероятно не интересует, для чего вообще выделять какой-то класс функций в отдельную категорию, какие существуют преимущества и недостатки таких функций, как можно расширить или сузить данное определение, чтобы преследовать какую либо практическую цель.
    Исследуйте что хотите, но не пишите ересь типа такой:
    Цитата Сообщение от anthrwpos Посмотреть сообщение
    PS ОЛ по сути есть функциональный язык программирования. Каждый макрос в нем есть детерминированная функция без побочных эффектов
    При поиске в Google/Яндекс находятся вполне конкретные определения для слов "детерминированная функция" и "побочный эффект".
    И эти определения никак не связаны с вашим определением. В ваш класс "чистых функций" входит гораздо больше функций, чем обычно принято.

    Поэтому исследуйте что хотите и как хотите. Можно отдельную тему создать про это.

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

    Это по меньшей мере странно, а в обычном понимании это полный бред.


    Вот вам пример: anthrwpos -- дурак.
    А, если вы скажете, что "ей -- смотрите, Владимир ругает и оскорбляет", то я скажу, что слово "дурак" тут означает "человек, разбирающийся в haskell state monad".
    Хорошо так? По-моему, нехорошо.

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

  9. #39
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,242

    По умолчанию

    Извиняюсь, тут наверно нужно приоритеты расставить, список составить очерёдности кого ругать, что-то овен ругать желающих кот наплакал, вот посмотрите, тоже по своему всё называют:
    http://www.owen.ru/forum/showthread....EF%F0%EE%F1%FB
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  10. #40

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Извиняюсь, тут наверно нужно приоритеты расставить, список составить очерёдности кого ругать, что-то овен ругать желающих кот наплакал, вот посмотрите, тоже по своему всё называют:
    http://www.owen.ru/forum/showthread....EF%F0%EE%F1%FB
    Это всё разные вопросы.
    Когда я предложил разработчикам ОВЕН называть "обратную связь" "линией задержки", то они пошли навстречу и в ОЛ 1.9 внесли такое изменение.

    Разумеется, часть решений принята уже настолько давно, что, если сейчас что-то переименовать (например, INT в UNIT), то все начнут путаться.
    Да, ОВЕН обновляется небыстро, но они хоть как-то реагируют.


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

Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя

Похожие темы

  1. Специальные ,функционально законченные макросы
    от rovki в разделе Программируемые реле
    Ответов: 135
    Последнее сообщение: 14.02.2024, 12:43
  2. Универсальные макросы для OWEN Logic
    от rovki в разделе Среда программирования OWEN Logic
    Ответов: 827
    Последнее сообщение: 22.12.2023, 13:20
  3. макросы для ПР200.
    от Павел Братковский в разделе Среда программирования OWEN Logic
    Ответов: 174
    Последнее сообщение: 17.05.2020, 19:34
  4. Макросы для КаСкады
    от rovki в разделе Программируемые реле
    Ответов: 19
    Последнее сообщение: 04.09.2016, 10:08
  5. Макросы -- объясните немного....
    от tigdin в разделе Программируемые реле
    Ответов: 20
    Последнее сообщение: 28.08.2014, 15:18

Ваши права

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