PDA

Просмотр полной версии : Возможность программирования на более низком, чем ОЛ схемы уровне



Страницы : 1 2 [3]

IVM
28.07.2017, 18:51
вот цитата (http://si-sv.com/board/kalashnikov/7-1-0-149), она относится ко всему

А мне это понравилось - Каждый раз, когда размер системы вырастает на порядок, приходится что-то делать с её архитектурой. С ОЛ, кажется, этот самый случай.

capzap
28.07.2017, 19:00
ну всё верно, пока ОЛ на порядок не вырос. Да и разработка ведется, например появились с приходом ПР114 вещественные числа, появились блоки, нелюбимые некоторыми, с приставкой f

pop70
28.07.2017, 19:32
Судя по некоторым "багам и фичам", ОЛ не то что не вырос на порядок, а из подгузников "бэты" никак не выберется.

Владимир Ситников
28.07.2017, 19:33
блоки, нелюбимые некоторыми, с приставкой f

В 61131, к сожалению, та же проблема. По стандарту там на каждый тип сложений должен быть свой блок: ADD_INT, ADD_REAL и т.п.
Печаль, конечно.

pop70
28.07.2017, 20:03
В 61131, к сожалению, та же проблема. По стандарту там на каждый тип сложений должен быть свой блок: ADD_INT, ADD_REAL и т.п.
Печаль, конечно.
А int-ы там тоже в одной куче? И uint, и dint, и udint?
Строгая типизация - это не проблема, а залог оптимизации и надёжности.

Владимир Ситников
28.07.2017, 21:15
А int-ы там тоже в одной куче? И uint, и dint, и udint?
Нее, там куча разных INT'ов. Т.е. ADD_DINT, ADD_UDINT и т.п.


Строгая типизация - это не проблема, а залог оптимизации и надёжности.
А на пользователя реально нужно выплёвывать все эти ADD_DINT / ADD_UDINT?
По-моему это называется "нам вообще лень придумывать систему типов, давайте пользователь будет указывать тип у каждой конкретной операции".

А потом начинается, когда операции сложения для BIT данных (т.е. для BYTE/WORD/DWORD) в стандарте не определены, а программисты всё равно настырно пытаются использовать DWORD как число.
И фарш провернуть обратно уже невозможно, т.к. уже написана куча кода на этих UDINT'ах и DWORD'ах.

Да и сам компилятор неудобно писать, когда есть такое разнообразие типов данных. По каждому чиху нужно размножать реализации, которые отличаются только разными SINT/UDINT/INT/...

pop70
29.07.2017, 06:05
Нее, там куча разных INT'ов. Т.е. ADD_DINT, ADD_UDINT и т.п.


А на пользователя реально нужно выплёвывать все эти ADD_DINT / ADD_UDINT?
По-моему это называется "нам вообще лень придумывать систему типов, давайте пользователь будет указывать тип у каждой конкретной операции".

А потом начинается, когда операции сложения для BIT данных (т.е. для BYTE/WORD/DWORD) в стандарте не определены, а программисты всё равно настырно пытаются использовать DWORD как число.
И фарш провернуть обратно уже невозможно, т.к. уже написана куча кода на этих UDINT'ах и DWORD'ах.

Да и сам компилятор неудобно писать, когда есть такое разнообразие типов данных. По каждому чиху нужно размножать реализации, которые отличаются только разными SINT/UDINT/INT/...
Когда требуется жёсткая оптимизация (вспомните про ресурсы) и однозначность кода, то да - "пользователь" должен сам однозначно понимать какую именно операцию он вписывает в свою программу, и какой получит результат. При множестве типов переменных, один чёрт реализация разная. Явно это указывается "пользователем" или нет - не важно.

melky
29.07.2017, 18:07
Lam-Ka - читайте выше, результат на совести пользоваетля, а не программы. Как поставите скобки, такой результат язык и выдаст.
Владимир Ситников большой анализ потребуется для проверки наличия парных скобок ?, что касается вычисления см. выше.

melky
29.07.2017, 18:11
чем вам udint и подобное не угодили ? это всего лишь указание программы, чтобы она знаковый бит не обрабатывала при отображениях и вычислениях и только.
а то договоримся, что имея в кармане 1000 рублей на самом деле вы имеете минус рупь...

Владимир Ситников
29.07.2017, 18:18
Владимир Ситников большой анализ потребуется для проверки наличия парных скобок ?
Одного только анализа скобок будет мало. Кто-то же должен будет "объяснить ПРке" как вычислять 2+2*2? Это тоже затраты времени программиста, документатора, тестировщика.

А вариант с p-code блоком и анализировать проще, и реализовывать проще, и результирующая "моща ОЛ" такая же или даже больше будет.
Получается, у варианта с формулой одни минусы, так зачем на неё вообще смотреть?

Владимир Ситников
29.07.2017, 18:26
чем вам udint и подобное не угодили ?
Ну, не каждый сможет объяснить чем отличается UDINT от DWORD. Можете?

melky
29.07.2017, 20:47
О боже, а как сейчас ПР объясняют, что делать с ADD + ADD + SUB на схеме ? танцами с бубнами ?

UDINT четко обозначенная цифровая переменная, а в DWORD вы хоть попугая можете засунуть, если вам размерности хватит.

Владимир Ситников
29.07.2017, 21:13
О боже, а как сейчас ПР объясняют, что делать с ADD + ADD + SUB на схеме ? танцами с бубнами ?
Как найдёте в текущем ОЛ запись 2 ADD 2 MUL 2, то дайте знать.



UDINT четко обозначенная цифровая переменная, а в DWORD вы хоть попугая можете засунуть, если вам размерности хватит.
Т.е. DWORD появилось в стандарте только из-за того, что попугая невозможно засунуть в UDINT?

melky
29.07.2017, 21:49
зачем искать, оно там есть, блоки плюс линии связи плюс расположение.

dword не четко обозначенный тип переменных, как хотите так и представляйте - знаковым, беззнаковым, с плавающей точкой и т.д. udint четко опредлелена.

непонятны такие вопросы от программиста ????

Владимир Ситников
29.07.2017, 22:38
зачем искать, оно там есть, блоки плюс линии связи плюс расположение.
Запись 2+2*2 какому расположению соответствует?
Вы тут постоянно говорите, что "нужно только скобки проверить", "сделать вообще труда не представляет", "просто запретить ввод лишних символов".

А когда вам показывают пример, то вы, похоже, просто игнорируете. Неужели непонятно, что для формулы 2+2*2 придётся проводить парсинг (https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D 1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BD%D0 %B0%D0%BB%D0%B8%D0%B7), анализ правильности и т.п.? Неужели непонятно, что для этого потребуется работа программиста, тестировщика, и документатора?


dword не четко обозначенный тип переменных, как хотите так и представляйте - знаковым, беззнаковым, с плавающей точкой и т.д. udint четко опредлелена.
Откуда вы это берёте?
Есть стандарт 61131, там всё описано. Зачем придумывать на ровном месте?

В стандарте русским по белому сказано, что DWORD имеет тип "bit string" и имеет размер 32 бита (4 байта): https://en.wikipedia.org/wiki/IEC_61131-3
То, что вы называете "как хотите так и представляйте" не имеет никакого отношения к стандарту.

melky
29.07.2017, 23:27
Владимир Ситников вот правда, вы прикидываетесь идиотом ?
в математике 2+2*2 = 6, вы знаете другой способ вычисления этого выражения ? если вам нужен результат как в калькуляторе, так бл запишите его как (2+2)*2 как и положено в математике.

Если не верите, можете выполнить эти действия в языке программирования.
Или вы читать не умеете что я написал выше ? - ПРАВИЛЬНОСТЬ РАБОТЫ ВЫЧИСЛЕНИЯ НА СОВЕСТИ ПОЛЬЗОВАТЕЛЯ, не надо как-то иначе интепретировать то, что язык программирования выполнит САМ. проверить надо только что поставив одну (, человек не забыл поставить и вторую пару )
ВСЕ.

вот же ... а udint не состояит из битов и 4-х байт ? наверное там все 12, ога , а может это файл ?

и забавно, ссылаться на стандарты 61131-3, как будто dword только в нем существует. Как лодку обозвали, так она и поплыла....

Владимир Ситников
29.07.2017, 23:54
вот же ... а udint не состояит из битов и 4-х байт ? наверное там все 12, ога , а может это файл ?
Вопросы по 61131 легко сравнить по первоисточнику, и там написано, что и DWORD и UDINT занимают 4 байта.
Отличие в том, что UDINT это число, а DWORD это не число. Иными словами, складывать DWORD'ы нельзя, а UDINT'ы можно.
Это один из примеров, когда в 61131 "хотели как лучше" (сделали разные типы для битовых и для целочисленных значений), а получилось как получилось: никто из программистов не понимает чем DWORD отличается от соответствующего по размеру беззнакового целого UDINT. При этом производители софта пошли на поводу, и в КДС можно складывать DWORD'ы.

Но при этом, в стандарте нет ни строчки про то, что DWORD можно представлять "знаковым, беззнаковым, с плавающей точкой, попугаем". Ну нет там этого.
Если вы по открытым данным не можете делать логические выводы, то по вопросам "сложности доработок ОЛ" и подавно.


Раз вы в таких вопросах не можете себя серьёзно вести, то я признаю своё поражение.
Я не смогу объяснить вам в чём сложность реализации формул.

Сергей0308
29.07.2017, 23:55
Владимир Ситников вот правда, вы прикидываетесь идиотом ?
в математике 2+2*2 = 6, вы знаете другой способ вычисления этого выражения ? если вам нужен результат как в калькуляторе, так бл запишите его как (2+2)*2 как и положено в математике.

Если не верите, можете выполнить эти действия в языке программирования.
Или вы читать не умеете что я написал выше ? - ПРАВИЛЬНОСТЬ РАБОТЫ ВЫЧИСЛЕНИЯ НА СОВЕСТИ ПОЛЬЗОВАТЕЛЯ, не надо как-то иначе интепретировать то, что язык программирования выполнит САМ. проверить надо только что поставив одну (, человек не забыл поставить и вторую пару )
ВСЕ.

вот же ... а udint не состояит из битов и 4-х байт ? наверное там все 12, ога , а может это файл ?

и забавно, ссылаться на стандарты 61131-3, как будто dword только в нем существует. Как лодку обозвали, так она и поплыла....

Просто он очень грамотный и культурный, лично моё мнение! Выводы делать не хочу, каждый сам сделает!

pop70
30.07.2017, 15:43
зачем искать, оно там есть, блоки плюс линии связи плюс расположение.

dword не четко обозначенный тип переменных, как хотите так и представляйте - знаковым, беззнаковым, с плавающей точкой и т.д. udint четко опредлелена.

непонятны такие вопросы от программиста ????
melky, потому и вопросы "такие", что программист, а не "говнокодер".
Dword вполне чётко обозначенный тип - Вам это уже рассказали. Не числовой - да, но вполне себе строгий тип. И операции числовой арифметики потому для него и не определены, что объект типа DWORD не является числом - это просто упорядоченный набор битов.
Так же, как строковая переменная - набор символов. Только, символов всего 2.
Ни один язык программирования сам не знает как посчитать 2+2*2 пока программист, создающий этот язык, не напишет чётких и однозначных правил арифметики.
Можно вообще насчитать 2222. :)

Scream
30.07.2017, 15:50
Столько постов и ругани о dword, а в ОЛ он есть? Не вам кажется что все споры не о том?

pop70
30.07.2017, 17:09
Столько постов и ругани о dword, а в ОЛ он есть? Не вам кажется что все споры не о том?
Не кажется, а так оно и есть. Совершенно точно - не о том. :) Даже определиться с "уровнем" не можем.
Одни просят с, другие p-cod, третьи (я прошу) наоборот, "поднять" уровень математики. :)

melky
30.07.2017, 17:26
Scream кто вам сказал, что в ОЛ нет dword ? Владимир Ситников ? то он ошибся.

Scream
30.07.2017, 18:22
Scream кто вам сказал, что в ОЛ нет dword ? Владимир Ситников ? то он ошибся.

Да нет, я сам не вижу. Там bool, int и float.
Я ошибаюсь?

melky
30.07.2017, 22:09
AND, OR, при входах int. Putbit, Extractbit - это по вашему что ? прочтите определение dword, которое так любезно предоставил Владимир.
Это все оно и есть. Все переменные в ОЛ 4-х байтные, если вы работаете с битами чисел.