OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 145 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8
Автор Сообщение
СообщениеДобавлено: Вторник, 23 Апрель, 2013 04:14 

Зарегистрирован: Среда, 04 Август, 2010 04:01
Сообщения: 37
Откуда: Сан Хосе, Калифорния, США
Александр Шостак писал(а):
Считаю необходимым применение исключений только там, где это действительно нужно - в математических операциях (TRY a+b EXCEPT MathError END).

Пожалуй не соглашусь по следующей причине:
Допустим вы делаете диалог в котором пользователь вводит данные для сложных математических расчетов. После ввода данных и нажатия пользователем кнопки "Пуск" ваш код берет эти данные и передает их некоторой, не Вами написанной процедуре которая анализирует данные и выполняет расчет. Если данные некорректны, то процедура просто выдает исключение и прекращает свою работу, а заодно работу всей программы. Разумеется, можно перед вызовом процедуры тщательно проанализировать данные на корректность, т.е. продублировать работу расчетной процедуры. Но стоит ли?
По мне, так тут логично заключить процедуру в TRY ... EXCEPT... END примерно так:
TRY
Передать данные процедуре расчета
EXCEPT
Сообщить пользователю, что его данные некорректны
END
Вернуться к диалогу с пользователем

Разумеется, использовать TRY EXCEPT для перехвата логических ошибок программы нежелательно - это прямой путь скрыть от программиста его ошибки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Ноябрь, 2013 21:01 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Есть один "железный" довод в пользу структурирования программ.
Вот в этой книжке: https://www.ozon.ru/context/detail/id/8382755/
Есть глава 2 Основы метрической теории программ.
И в этой главе вычисляется цикломатическое число - которое представляет собой метрику МакКейба
Z(G)=e-v+2p. Для одномодульной программы = Z(G)=e-v+2.
Здесь е - ребра графа потока управления программы, v - вершины этого графа (операторы).
То есть надо реально построить граф в каком-нить виде.

Так вот, для структурированной программы Z(G) = n + 1,
где n - количество вершин ветвления.
Чтобы это посчитать - даже не требуется граф потока управления строить - просто операторы ветвления и цикла посчитать - и все.

Далее в той же главе написано, что Липаев показал: при Z < 10 все можно корректно проверить и число ошибок будет минимальным.
При Z > 30 устранить ошибки практически невозможно.
Ну и для промежуточных значений - значительные сложности с доведением "до ума".

Значение Z < 10, как мне кажется, связано с числом Миллера 7+-2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Ноябрь, 2013 11:56 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Валерий Лаптев писал(а):
Значение Z < 10, как мне кажется, связано с числом Миллера 7+-2.
Число Миллера, по категорическому утверждению Паронджанова (подкреплённому пруфами), относится исключительно к восприятию рекламы.
Распространение оного числа на все виды интеллектуальной деятельности - один из примеров современной мифологии. :wink:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Ноябрь, 2013 15:24 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Не так все просто.
Цитата:
Джордж Миллер во время своей работы в Bell Laboratories провел ряд экспериментов, целью которых был анализ памяти операторов. В результате опытов он обнаружил, что кратковременная память человека способна запоминать в среднем девять двоичных чисел, восемь десятичных чисел, семь букв алфавита и пять односложных слов — то есть человек способен одновременно помнить 7 ± 2 элементов.

Таким образом, кратковременная память — «кошелёк», в который можно «положить» одновременно семь «монет». Причём память не пытается анализировать смысл информации, важны лишь внешние, физические характеристики, то есть не важно, какие «монеты» находятся в «кошельке» — доллар или цент, главное чтобы их было семь. Если количество элементов больше семи (в крайнем случае, девяти), то мозг разбивает элементы на группы таким образом, чтобы количество запоминаемых элементов было от 5 до 9.

Неожиданно, аналогичное правило было обнаружено для муравьёв: они способны запоминать и передавать сообщения длиной до 7 бит


К Z < 10 это может относиться так, что программер способен одновременно держать в памяти 7+-2 ближайших к анализируемому оператору ветвлений.
И это означает, что иметь ветвление больше, чем 7+-2 -себе дороже (с точки зрения отладки и поиска ошибок).
А если еще и условия ветвлений сложные - то вообще труба.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Октябрь, 2014 20:04 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Халиуллин Н. И. перевёл статью: Ермаков И. Е. Структурирование "промышленного" цикла. -> Ermakov I. E. “Industrial” loop structuring
http://oberoncore.org/library/ermakov_s ... nogo_cikla


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

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


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

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


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

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