OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 02:33

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 00:38 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Trurl писал(а):
При таком строгом отношении к формализации следует говорить не "в си", а "в одном из компиляторов при определенном наборе опций".
Почему? Мы прямо сейчас составляем спецификацию? Или если строго подходить к понятию полной семантики, то и строем ходить нужно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 00:42 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Trurl писал(а):
При таком строгом отношении к формализации следует говорить не "в си", а "в одном из компиляторов при определенном наборе опций".
Какое строгое отношение к строгости ))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 09:26 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Comdiv писал(а):
Или если строго подходить к понятию полной семантики, то и строем ходить нужно?

По крайней мере, нужно определиться, семантику чего мы рассматриваем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 11:50 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Семантика Си, говорящая, что переполнение целых со знаком является ошибочной ситуацией, и за счёт неопределённости предоставляющая свободу реакции, позволяет отреагировать на ошибку правильно - аварийной остановкой. Семантика более определённой Java не позволяет, пропуская ошибку дальше.
Если бы у создателей компиляторов Си было больше добросовестности, то указанное поведение было бы встроено по умолчанию, и, наоборот, его отключение требовало бы дополнительной опции. Но сам язык располагает к тому, чтобы второстепенное возносить, а первостепенное задвигать в дальний угол.


Последний раз редактировалось Comdiv Понедельник, 27 Ноябрь, 2017 13:48, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 13:24 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Какого си? Того, что в стандарте? Да,там поведение при переполнении оставлено неопределенным. При этом авторы компилятора вольны выбирать любую реализацию, что они и делают. Иногда довольно даже странные результаты получаются и все правильные. Но теперь у нас уже не одна семантика, а несколько. Меняя опции компилятора мы переходим от одного "уточненного си" к другому.
Если очень нужно, можно сделать "модифицированную яву" и это будет ничем не хуже, чем разные варианты си.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 13:59 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Нет, потому что модифицированная ява никому не интересна. Собрав с помощью своего модифицированного компилятора правильный код на Яве, можно получить неправильно работающую программу. В то время, как собрав правильный код на Си своим компилятором, генерирующим надёжный код, Вы всё равно получаете правильную программу. Разница существенна, и вызвана она тем, что программисты зачастую опираются на плохо заданное поведение и отменить это сложно, но все понимают, что опираться на незаданное поведение - это ошибка, и предоставляют неплохие средства для борьбы с ней.
Поэтому следующее утверждение неверно:
Код:
Иногда довольно даже странные результаты получаются и все правильные.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 18:16 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Почему на незаданное? Оно не задано стандартом, но может определятся конкретной реализацией.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 19:43 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Trurl писал(а):
Да,там поведение при переполнении оставлено неопределенным.

Позволю себе вернуться к стандарту 60880 - здесь выставлены требования, исключающие переполнения.
По переменным обязательны ограничения на диапазоны:
Цитата:
D.2d Ошибки, способные вызвать исключительные ситуации при выполнении, включают в себя:
- превышение границ массива;
- превышение диапазона величин;
- обращение к неинициализированным переменным;
- невозможность удовлетворить утверждение;
- отбрасывание значащих разрядов числовых величин;
- пропуск параметров неправильного типа.
D.3a Диапазон каждой переменной должен определяться при трансляции.

А еще по переменной цикла ограничение максимальным значением.
Цитата:
B.4ag Следует использовать циклы только с постоянными максимальными областями значений переменной цикла


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 20:12 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Trurl писал(а):
Почему на незаданное? Оно не задано стандартом, но может определятся конкретной реализацией.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 20:18 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Дмитрий Дагаев писал(а):
Позволю себе вернуться к стандарту 60880 - здесь выставлены требования, исключающие переполнения.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 20:34 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Там всем переменным диапазоны дадены с исключением по выходу из диапазона.
Там нет целочисленных счётчиков, только переменные цикла в диапазоне.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 21:30 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Вот еще интересная цитата из AREAVE OASIS касательно Esterel и Lustre:
Цитата:
Synchronous languages like Esterel [4] or Lustre [5] relies on strong formal definitions, and allows for formal checksand validations of the modeled system. This permitted their use in critical environments and especially for aviation and transportation. Nonetheless, for the concrete implementation of a synchronous model, the usual approach is either to generate C code for a Posix compliant RT kernel (e.g.VxWorks) or generate statically scheduled sequential C code for a barebone execution (or on top of interrupt services,e.g. [ссылка 6]). The former is nearly impossible to validate with regards to the standards. The later could probably be away to generate an application in the traditional design of ISO-60880 (periodic execution of a single program divided as statically scheduled RT activities). Nonetheless, to our knowledge, no efforts were made toward such a goal. Webelieve that aiming to such a goal would be achievable but would not reduce the cost of validation, even thought the cost of programming would be roughly on par with OASIS.


Злыми конкурентами утверждается, что синхронные языки не подходят под 60880 из-за реализации. Ничего такого не сделано. При этом второй вариант, кажущийся приемлемым, на самом деле оставляет много вопросов, например в части кучи GOTO, необходимости специальных компиляторов для Lustre с измененной семантикой.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 21:54 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Comdiv писал(а):
Потому что Си - кроссплатформенный язык, и в стандарте вполне чётко сказано, что попадание в состояние, поведение в котором им не определено - это ошибка, а лучшее определение поведения в ошибочном состоянии - это диагностика ошибки.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Ноябрь, 2017 23:52 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Trurl писал(а):
Не кроссплатформенный, а многоплатформенный :)
Спасибо за уточнение

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

Укажите, пожалуйста, место, где сказано, что переполнения не бывает. В секции, которая называется informative? Это серьёзно. Это как-то отменяет неопределённость переполнения знаковых? Нет?
В который раз повторюсь. Неопределённость Си хороша именно тем, что предоставляет выбор, который позволяет реагировать на ошибки правильно. Стандарт Java такой возможности не предоставляет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 28 Ноябрь, 2017 14:29 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Comdiv писал(а):
Тогда теоретический вопрос - возможно ли установить полную семантику языка?
Знаю, что по сравнению с С можно сократить количество неопределённости. Но как это сделать полностью, если описание на неформальном языке требует уточнений, а уточнения своих уточнений?
Вторая часть вопроса заключается в том, не вредит ли излишняя определённость главному - недопущению ошибок? Я обдумывал, разные стратегии отлова ошибок и нахожу возможность предоставления выбора более оправданным, чем его отсутствие.

Я конечно многого не понимаю, но хорошо, что в ПДД не содержится неопределенности. Или может содержатся? Пока не доводилось сталкиваться с такими, как например в налоговом законодательстве. Хорошо также, что они вполне себе обозримы, и если их не нарушать, то вероятность аварий сократится до минимума (есть конечно и факторы непреодолимой силы, куда уж без них). Ну а если оставить неопределенности с возможностью выбора, то последствия очевидны. Также как, если привнести в них много лишних элементов. Помню как на заводе сдавали технику безопасности, чисто тесты гоняли, чтобы запомнить всю эту скукотищу, вряд ли есть польза от такого "знания".

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 28 Ноябрь, 2017 15:22 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
adva писал(а):
Я конечно многого не понимаю, но хорошо, что в ПДД не содержится неопределенности. Или может содержатся?
Содержится, но это, как правило, неочевидно до тех пор, пока не начинаешь прорабатывать детали.

Цитата:
Ну а если оставить неопределенности с возможностью выбора, то последствия очевидны.
Что, если у Вас будет возможность избежать аварии не предусмотренным правилами способом, предпочтёте совершить аварию по правилам?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 03 Декабрь, 2017 20:14 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Критерий единичного отказа для 60880 означает, чтобы комплекс систем безопасности был способен соответствовать назначению, несмотря на единичный случайный отказ, произошедший в любой части комплекса.
Цитата:
Средством улучшения надежности некоторых систем и снижения вероятности определенных отказов по общей причине (ООП) является разнообразие.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 19:02 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 372
Дмитрий Дагаев писал(а):
Следующая интересная история с 60880 - РПО или
Цитата:
15 Аттестация ранее разработанного программного обеспечения
...
Самый лучший способ отучить энтузиастов бездумного использования библиотек сторонних производителей - вовлечь оных в разработку документации для аттестации ранее разработанного программного обеспечения. Действует очень эффективно.

Мораль очень простая: в критически важных системах не допускается "делегирование ответственности" на стороннего производителя третьей стороны, особенно, если тот ни о чем подобном не подозревает

Весьма интересная информация!

И вообще все эти ветки! Спасибо!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 04 Декабрь, 2017 20:36 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Варианты диверсификации систем для АЭС здесь, требования к разнообразию устанавливаются только для критически важных систем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Декабрь, 2017 21:56 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
И еще ответы по Esterel SCADE.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB