Средство для программирования контроллера: Си или МЭК 61131? |
Ответить | Страница <1 1314151617 53> |
Автор | |
Новичок Присоединился: 26 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 22 |
Опубликовано: 30 Сентябрь 2003 12:04 |
Если Вы говорите о ОО-"задатках" мэковских языков, то есть о том, что их МОЖНО сделать таковыми, то я с вами соглашусь (но я действительно не понял, что Вы имели ввиду именно возможную перспективу, а не текущее состояние дел, и не один я не понял ;). То есть я вообще не считаю, что идеи, заложенные в этих языках, уж такие тупиковые, и считаю, что развивать их можно и нужно. Болое того, и в нынешнем виде они значительную представляют ценность, как тот "общий знаменатель", по которому удалось достигнуть согласия (это редко бывает, и это надо ценить). Но нужно признать, что кому-то хватает этого "общего знаменателя", а кому то нет, и этот последний не может ждать, сложа руки, пока мэк продвинет свои языки дальше.
Ну а насчет "функциональности" языков - мне кажется, все же не стоит переопределять устоявшиеся термины (а функциональным языкам как таковым, если я не ошибаюсь, уже лет тридцать будет, если не больше, так что термин уже устоявшийся и даже "отстоявшийся" :). В сущности, Вы имели вввиду скорее не функциональность, а ДЕКЛАРАТИВНОСТЬ мэковских языков (в противовес ПРОЦЕДУРНОСТИ Си), поскольку, если в случае с ФБД, слово "функциональность" еще может хотя бы интуитивно с этим языком проассоциироваться, то в случае с SFC - уж вообще никак. Действительно, бОльшая декларативность (по ср. с Си, например) "графических" мэковских языков является определенным преимуществом, в том числе и в плане надежности ПО. |
|
С уважением,
Дмитрий Теркель |
|
Новичок Присоединился: 26 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 22 |
|
Владимир, а не могли бы Вы пояснить, хотя бы в общих чертах (или на простом "модельном" примере) неприемлемость SFC+ST в Вашем случае? (Вопрос без всякой задней мысли, мне действительно интересно, и я не ставлю под сомнение, что это действительно так) |
|
С уважением,
Дмитрий Теркель |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
|
Дмитрий Теркель То есть я вообще не считаю, что идеи, заложенные в этих языках, уж такие тупиковые, и считаю, что развивать их можно и нужно. Болое того, и в нынешнем виде они значительную представляют ценность, как тот "общий знаменатель", по которому удалось достигнуть согласия (это редко бывает, и это надо ценить). Но нужно признать, что кому-то хватает этого "общего знаменателя", а кому то нет, и этот последний не может ждать, сложа руки, пока мэк продвинет свои языки дальше. Направление развития МЭКовских языков меня тоже интересует, потому и ввязался в разговор. Но пока что разговор не очень конструктивный. Критика МЭКовских языков пока что выглядит огульной (в частности - неконкретной), а предлагаемые рецепты (типа "даешь Си!") ненамного лучше, чем призывы вернуться в пещеры ;-) Дмитрий Теркель Ну а насчет "функциональности" языков - мне кажется, все же не стоит переопределять устоявшиеся термины (а функциональным языкам как таковым, если я не ошибаюсь, уже лет тридцать будет, если не больше, так что термин уже устоявшийся и даже "отстоявшийся" :). Как это часто бывает, опять спор перешел на вопросы терминологии. В подтверждение своего понимания "функциональности" я не буду "тыкать пальцем в небо", как это любят делать флеймеры, а приведу цитату из статьи Хьюза http://www.softcraft.ru/paradigm/fp/whyfp.shtml Функциональное программирование называется так, потому что программа полностью состоит из функций. Сама программа тоже является функцией, которая получает исходные данные в качестве аргумента, а выходные данные выдаёт как результат. Как правило, основная функция определена в терминах других функций, которые в свою очередь определены в терминах еще большего количества функций, вплоть до функций - примитивов языка на самом нижнем уровне. Эти функции очень похожи на обычные математические функции, и в этой статье будут определены обычными уравнениями. [...] Особенности и преимущества функционального программирования обычно излагаются следующим образом. Функциональные программы не содержат операторов присваивания, а переменные, получив однажды значение, никогда не изменяются. Более того, функциональные программы вообще не имеют побочных эффектов. Обращение к функции не вызывает иного эффекта кроме вычисления результата. Это устраняет главный источник ошибок, и делает порядок выполнения функций несущественным: так как побочные эффекты не могут изменять значение выражения, оно может быть вычислено в любое время. Программист освобождается от бремени описания потока управления. Поскольку выражения могут быть вычислены в любое время, можно свободно заменять переменные их значениями и наоборот, то есть программы "прозрачны по ссылкам". Эта прозрачность ссылок делает функциональные программы более удобными для математической обработки, по сравнению с общепринятыми аналогами. Ссылки на сложившуюся практику и (частично) сложившуюся терминологию, как я уже указывал ранее, я принимаю с оговорками, поскольку излишняя конкретика (как то: лямбда-счисление, текстовая форма языка, и пр), на мой взгляд, неоправданно сужает общность подхода, изложенного в приведенной цитате. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 09 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 247 |
|
Дмитрий Теркель:
Владимир, а не могли бы Вы пояснить, хотя бы в общих чертах (или на простом "модельном" примере) неприемлемость SFC+ST в Вашем случае? (Вопрос без всякой задней мысли, мне действительно интересно, и я не ставлю под сомнение, что это действительно так) В первую очередь не удовлетворяют в нем слабые структурирующие возможности. Если кратко. Можно конечно попытаться пояснить: - отсутствие автоматических средств _реализации_ конвергенции; - скорее "Петри-нетовская", а не конечно-автоматная "подложка" (алгоритм описывается как сеть Петри, а не как совокупность конечных автоматов); - отсутствие понятия "предопределенный процесс" в ЕСПД-эшном смысле. и т.п. но проще сказать, что нужно сделать, а не критиковать частности. В общем, модель алгоритма, предполагаемая SFC+ST весьма и весьма слабая... по-моему, из-за проблем сетей Петри... Ну и "по мелочам"... Паскале-подобный синтаксис, графическая форма записи, отсутствие возможности построения полноценной идентификационной системы, отсутствие расширения, зависимость от производителя и т.д., и т.п. (хотя что-то из указанного несомненно реализационные проблемы, но корни этих проблем в стандарте). А для нас недопустимо (как в ISaGRAFе предлагается) ни конвергенцию "ручками" организовывать, ни код без надобности дублировать, ни организовывать "ломку" заложенной жесткой иерархической связи типа "father-child"... |
|
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК http://reflex-language.narod.ru/ |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 09 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 247 |
|
к Доктор Q:
Не надо цитат, просто на данном этапе примите, что FBD не имеет к функциональному программированию никакого отношения... также как и Си, где тоже такая штука, как "функции", есть... :-) |
|
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК http://reflex-language.narod.ru/ |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
|
Владимир Е. Зюбин Не надо цитат, просто на данном этапе примите, что FBD не имеет к функциональному программированию никакого отношения... Вам не надо повторять Ваше личное мнение по многу раз, я его уже принял к сведению. В противоположность Вам, я предпочел бы услышать цитаты или какие-либо технические доводы. Ссылки "невесть куда" просьба не давать. И еще к Вам пара просьб. В начале треда была ссылка на Вашу статью http://www.msclub.ce.cctpu.edu.ru/plc/iec1131.htm Я уже не раз пытаюсь ее прочитать, но то ли линк битый, то ли сайт безумно тормозной. Не могли бы Вы выложить ее в более доступное место? И еще, не могли бы Вы подробнее рассказать, что представляет собой Ваш язык СПАРМ? В Интернете информации по нему практически нет. Спрашиваю потому, что хотелось бы понять - какие _позитивные_ решения Вы предлагаете. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 09 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 247 |
|
1. Уверяю Вас, функциональное программирование основано на лямбда-исчислениях. Это не мое частное мнение, а факт. 2. Черновой вариант статьи тут http://www.iae.nsk.su/~zyubin/iec1131.htm 3. По языку СПАРМ в Инете действительно немного, но вполне достаточно публикаций в журналах ПСУ, Автометрия, на международных конференциях по специальности... СПАРМ - это русскоязычный текстовый язык с Си-подобным синтаксисом, ориентированный на описание сложных управляющих алгоритмов. Базовая модель представления алгоритма - гипер-автомат (совокупность z-автоматов, или, если кому нравится, - процессов)... процесс можно запустить и остановить из любого другого, включая себя процесса. Все процессы полностью равноправны, что позволяет организовывать алгоритм в виде произвольных (в том числе иерархических) структур. Его изучение, по-видимому, не требует никаких усилий... По крайней мере, для знающих Си, которые, как я наблюдал, спокойно и сразу текст на СПАРМ читают... Ну, и т.п. (надежность, переносимость, выч. эффективность, гибкость, расширяемость...) Основной плюс, с моей точки зрения, представление единого механизма организации управляющих алгоритмов без затрат на изучение дополнительного (кроме Си) языка... Типа "Си с процессами"... ;-) (в альтернативу "Си с классами" :-))) если Вы на sofcraft.ru захаживаете, то почитайте про "switch-технологию", а потом представьте, что существует язык, который от всей рутины программирования на Си избавляет... это и будет очень близкая штука к СПАРМ. |
|
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК http://reflex-language.narod.ru/ |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
|
Владимир Е. Зюбин Вы, кстати, и со словом "парадигма" поосторожнее... я понимаю, красивое слово... но, увы, в 99,9% случаев не в тему говорится. Правду сказать, сам факт употребления этого слова - не более чем признак "пальцегнутия"... "понты дороже денег", как говорят в среде рекламного бизнеса... :-) "Пальцы гнуть" конечно можно, но надо делать это аккуратно и в правильном месте, в рекламной "заказухе", например... или в среде закомплексованых недоучек... или среди людей, заинтересованных в псевдонаучном тумане... когда никто тебе ответить не может, а то еще и поддакивать начнут. ...а тут, в форуме, Вы этим ставите и себя, и окружающих в неловкое положение. Перед тем как перейти к разговору о Вашей публикации, вынужден прокомментировать это высказывание. Видите ли, я понимаю выражение "гнуть пальцы" несколько иначе, чем Вы. "Гнуть пальцы" - это попытки оскорбить и унизить собеседника, "взять на горло", подменять техническую сторону эмоциями, и т.п. Часто сопровождается приписыванием оппоненту мыслей, которых он не высказывал. Примеры "гнутья пальцев": -- сам факт употребления этого слова - не более чем признак "пальцегнутия"... -- А утверждения о том, что язык FBD объектно-ориентированный, пардон, смехотворны -- имеет смысл им чаще пользоваться... чтобы реже впросак попадать. -- не хочу обвинять Вас в непрофессионализме, но... Скорее всего Вы хотели употребить термин не "гнутье пальцев", а "растопыривание пальцев", по своему смыслу он гораздо больше подходит для Вашего высказывания. "Растопыривание пальцев", насколько я понимаю, означает попытки создать о себе ложное представление, ссылки на свой авторитет, и т.п. То, что раньше называлось "надувать щеки". В порядке "растопыривания пальцев" хочу Вас уверить, что считаю себя порядочным человеком, и потому стараюсь не допускать со своей стороны ни "гнутья чужих пальцев", ни "растопыривания своих", поелику это возможно. Собственно, в этой декларации и заключается весь смысл данного сообщения. В следующих постингах я буду комментировать Вашу статью, и счел необходимым сделать такое вступление. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
|
Владимир Е. Зюбин Черновой вариант статьи тут http://www.iae.nsk.su/~zyubin/iec1131.htm Спасибо. Я, наконец, смог ознакомиться с этим документом. Комментировать его можно очень долго, поскольку в нем много спорных мест. Поэтому я попытаюсь ограничиться только указанием на вполне очевидные ошибки. Для начала я не буду разделять ошибки на крупные и мелкие, итоги будем подводить в конце. Про ISaGRAF Вы пишите: Набор средств разработки исполняется на компьютере проектировщика, например, компьютере типа IBM PC, и состоит из редактора, отладчика и препроцессора, который подготавливает описанный проектировщиком алгоритм к формату, "понятному" ядру-интерпретатору. Назвать транслятор препроцессором - это ошибка. Наоборот - не ошибка, поскольку препроцессор представляет собой весьма ограниченный по возможностям транслятор. Часто препроцессор является составной частью транслятор. Определение что такое препроцессор и что такое транслятор Вы можете найти в общеизвестной (надеюсь) "книге дракона". Конкретно с транслятором ISaGRAF я, признаться, знаком мало. Однако, исходя из общих соображений, весьма уверенно могу утверждать, что этот транслятор не попадает в категорию препроцессоров. Если у Вас есть другие сведения - пожалуйста, приведите их. Пока же таких сведений нет, я вынужден считать данное положение статьи ошибкой.
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
|
Владимир Е. Зюбин http://www.iae.nsk.su/~zyubin/iec1131.htm Ядро-интерпретатор, как следует уже из его названия, транслирует пользовательский алгоритм во время исполнения. Из названия следует, что он его интерперетирует. Если это рассматривать как утверждение о том, что "интерпретатор вообще" должен транслировать (или компилировать, поскольку в выч. технике эти два слова - синонимы) программу "на ходу" - то это ошибка. Есть множество интерпретаторов, которые этого не делают, т.к. это очень неэффективно. Собственно, мало какие это делают, навскидку даже назвать-то трудно. Хотя _в_принципе_ это сделать можно. Если у Вас есть сведения, что конкретно интерпретатор ISaGRAF сделан именно так (т.е. что он транслирут программу во время ее исполнения) - пожалуйста, приведите их. Пока же я вынужден рассматривать это как ошибку. Интересно отметить, что эта ошибка хорошо "согласована" с предыдущей. То есть, создается впечатление что Вы думаете, что кроссовая система ISaGRAF делает только препроцессирование, а сама трансляция, со всеми ее накладными расходами, осуществляеется на целевом процессоре. |
|
Ответить | Страница <1 1314151617 53> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |