OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 27 Апрель, 2024 17:32

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




Начать новую тему Ответить на тему  [ Сообщений: 86 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: Вторник, 20 Апрель, 2010 13:44 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Илья Ермаков писал(а):
Они обязательны в силу требований наглядности структуры. Никакого семантического обоснования для этого не требуется. Сказано - надо, и всё.
По сравнению с плоским текстом двумерная структура и так наглядна. Поэтому они избыточны.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 13:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да будет Вам известно, что избыточность механизмов контроля как раз и является в инженерном деле основным способом увеличения надёжности.


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

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
AVC писал(а):
Alexey Veselovsky писал(а):
На самом деле тут ещё отступы в заблуждение вводят.

Мне бы такое зрение: увидеть отсутствие сишных скобок с первого раза.

Просто после того, как я на такое пару раз наступил. Как в своём коде, так и в чужом, глючащем, причем там было всё интересней -- скобочки были. но перед ними человек на автопилоте влепил точку с запятой. т.е. было нечто вроде:
Код:
if (condition);
{
    some_other_code();
}

Усугублялось тем, что там было кода намешано много. Отступы были расставлены художественно (вот тут у нас отступ в два пробела, тут в три, тут в семь, а тут в один), ну и функция там была больша-ая + там был PeekMessage/DispatchMessage в результате которых через хитрозакрученную жо.. эмм.. логику вызывалась та же функция (там был VCL). Ковырялись мы в этом (в двоём) где-то с полчаса наверное.

Вот. После этого я недостающие скобочки всегда вижу :-)

Цитата:
Тут ещё как дело было. Подходит ко мне мой товарищ Миша и говорит так печально: мол, Лёша, беда, у меня Visual C "сломался". На голубом глазу.
Я и повёлся. Не плачь, говорю, дитя, сейчас мы твою программу хорошим компилятором откомпилируем. Потом 5 минут возни и вот таких раздумий: :shock: .
Позднее Миша уверял, что эта программа у него получилась "случайно, просто скобки забыл", но "что-то не верю я их хитрым рожам" (c). Издевался, гад, -- факт. :)

Дас, сишечка хороша для подобных приколов/подколов коллег :-)


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

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Илья Ермаков писал(а):
Да будет Вам известно, что избыточность механизмов контроля как раз и является в инженерном деле основным способом увеличения надёжности.

На днях по National Geographics показывали сюжет о каком-то аэропорту (из серии про мегасооружения, видимо). Так там был пример -- нагрузили двутавровую балку грузом, а она раз и прогнулась. Можно было бы, конечно, несколько таких балок поставить, и ценой повышения избыточности, и, следовательно, массы конструкции, этот груз удержался бы, но поступили другим способом.
Взяли и сделали стропильную ферму -- решетчатый треугольник. В результате масса конструкции оказалась меньше, чем у первоначальной двутавровой балки, а выдержала эта ферма груз гораздо более тяжёлый.

Так что не всегда следование пути избыточности даёт хороший результат, часто лучше изменить исходную конструкцию.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 14:35 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Alexey Veselovsky писал(а):
Дас, сишечка хороша для подобных приколов/подколов коллег :-)
Особенно когда коллега уже успел забыть о предыдущем приколе и расслабился. :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 16:10 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Илья Ермаков писал(а):
Да будет Вам известно, что избыточность механизмов контроля как раз и является в инженерном деле основным способом увеличения надёжности.
Я бы заменил слово "избыточность" на слово "достаточность". То есть механизмов контроля может быть не достаточно, и это означает снижение надёжности. С другой стороны, добавление избыточных механизмов не приводит к увеличению надёжности, но при этом усложняет систему.

Geniepro писал(а):
Так что не всегда следование пути избыточности даёт хороший результат, часто лучше изменить исходную конструкцию.
Я бы заменил слово "не всегда" на слово "никогда". Впрочем, Вы правы, иногда действительно приходится закладывать избыточность, но как правило это свидетельствует о недостаточной проработке (то есть необходимо "изменить исходную конструкцию").


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Апрель, 2010 21:44 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
igor писал(а):
Я бы заменил слово "избыточность" на слово "достаточность". То есть механизмов контроля может быть не достаточно, и это означает снижение надёжности. С другой стороны, добавление избыточных механизмов не приводит к увеличению надёжности, но при этом усложняет систему.


Там асимптотика. Стремимся к нулевой вероятности ошибки - и никогда не достигаем, конечно. Но сколько-нибудь нулей после запятой имеем, если хорошо страхуемся :)

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

P.S. По поводу балки Geniepro. Занятно, народ теперь по National Geographic узнаёт про то, что раньше в книжках по занимательной физике для младших школьников писалось. И пример там плохой - там отбрасывается не "избыточная страховка", а как раз полностью ненужный баласт - в любой цельной конструкции большая часть её площади сечения находится в стороне от линий распределения напряжения и вообще не несёт нагрузки, поэтому может быть выкинута.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Апрель, 2010 07:23 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Илья Ермаков писал(а):
P.S. По поводу балки Geniepro. Занятно, народ теперь по National Geographic узнаёт про то, что раньше в книжках по занимательной физике для младших школьников писалось. И пример там плохой - там отбрасывается не "избыточная страховка", а как раз полностью ненужный баласт - в любой цельной конструкции большая часть её площади сечения находится в стороне от линий распределения напряжения и вообще не несёт нагрузки, поэтому может быть выкинута.

Ну лично я-то и раньше знал -- часто вижу мосты, сделанные по этому принципу. А эти из National Geographic просто умеют наглядно показать то, что на страницах книжек выглядят не особенно впечатляюще...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Апрель, 2010 10:26 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Переформулирую первоначальный вопрос: есть ли какая-нибудь связь между подобными сишными безобразиями и исключением из Оберона-07 всех конструкций с контекстной связью (LOOP/EXIT и RETURN в произвольном месте)?
Могут ли указанные конструкции привести к безобразиям, хоть отдалённо сопоставимым с приведённым примером? Или Вирт проявил чрезмерную осторожность (вариант -- стремление к совершенству)?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Апрель, 2010 10:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
AVC писал(а):
Или Вирт проявил чрезмерную осторожность (вариант -- стремление к совершенству)?
Если говорить о языке-ядре, то Вирт просто прав.
Хотя лично у меня некоторые сожаления насчет LOOP/EXIT как средства оптимизации.
Но во всех, насколько помню, подобных ситуациях нужен некий частный случай:
IF ... THEN EXIT END, причем на верхнем уровне тела цикла.
Который, может быть, можно было бы как-то оформить пожестче, синтаксически.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Апрель, 2010 21:53 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Geniepro писал(а):
Валерий Лаптев писал(а):
Это к вопросу о том, что полезнее для правильного написания: скобочки {}, которые запросто можно и пропустить, или завершающее конструкцию слово end.

Полезнее -- значимые отступы, двумерный синтаксис, и не нужны ни скобочки, ни завершающий end.


А еще полезнее графическое, а не текстовое выделение блоков в структурном/семантическом редакторе:
Вложение:
555.GIF
555.GIF [ 2.32 КБ | Просмотров: 6914 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 06:59 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Вот не знаю почему, но в примере Прохоренко меня "типает" от while - elseif. Так и хочется написать whileif - elseif. Чтобы в обоих словах был суффикс if.
Хотя сам цикл мне очень нравится!
Только нужно еще end в конце поставить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 07:47 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Валерий Лаптев писал(а):
Только нужно еще end в конце поставить.
Зачем?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 09:22 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Потому что конструкция незакрытая получается.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 09:27 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Илья Ермаков писал(а):
Потому что конструкция незакрытая получается.
Ваша точка зрения понятна. Интересно, что скажет Валерий Лаптев.

На картинке Сергея Прохоренко закрытость конструкции очевидна без всяких end -- там весь этот блок выделяется слева большой скобкой.
Вот мне и интересно -- нафига здесь ещё и end?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 10:05 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Кстати, исходники могут динамически порождаться, компилироваться и загружаться.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 10:30 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Info21 писал(а):
Кстати, исходники могут динамически порождаться, компилироваться и загружаться.

И? К чему Вы это?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 10:32 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Info21 писал(а):
Кстати, исходники могут динамически порождаться, компилироваться и загружаться.
В смысле, наглядность закрытия конструкции порождаемого исходника в тексте генератора может обеспечить только END?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 10:39 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Для примера. CocoCRX
Код:
         | CocoCRT.iter:
               CocoCRT.GetNode(gn.p1, gn2);
               Indent(indent); PutS("WHILE");
               ...
               PutS(" DO$");
               GenCode(gp2, indent + 1, s1);
               Indent(indent); PutS("END;$")
Как конструкции будут в коде просматироваться без END?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 10:46 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Geniepro писал(а):
Валерий Лаптев писал(а):
Только нужно еще end в конце поставить.
Зачем?

Без end возможна двоякая интерпретация:
1. elseif - внутри цикла и проверяется на каждой итерации цикла. Это просто цикл Дейкстры непосредственно с несколькими охраняемыми командами.
2. elseif выполняется ОДИН раз после выхода из цикла, когда условие while становился ложным. Это почти так сделано в Питоне. Там стоит else после цикла.

Наличие end явно обозначает конец цикла и не допускает разночтений.


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

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


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

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


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

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