DRAKON.SU

Текущее время: Понедельник, 06 Май, 2024 16:58

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




Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Суббота, 06 Февраль, 2010 22:43 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
А-а... гм... да... ну да... :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Суббота, 06 Февраль, 2010 22:55 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
Finally должен размещаться на шампуре, поскольку входит в нормальный порядок выполнения.

Может так:
Вложение:
try04-finally.png
try04-finally.png [ 3.61 КБ | Просмотров: 17193 ]
Вложение:
try04.png
try04.png [ 15.67 КБ | Просмотров: 17193 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Воскресенье, 07 Февраль, 2010 10:38 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Вообще-то я здесь вполне согласен с Ильёй - незачем изобретать сущности.
Механизм исключения - это от лукавого (сиречь от лени).
Должен быть полный контроль над ситуацией.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 13:55 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Не, народ, так не пойдёт. Можно ещё начать писать {$I+},{$I-}, проверять IOResult.. Потом для них придумать иконки :evil: .

Можно вообще не обращать внимания на исключения. Но прерывания-то останутся. А в основе этих сущностей лежит всё тот же структурный переход. Различия только в семантике окончания. И возможных вариантов всего 3. Легко узнать где-что:
1. отменить
2. продолжить
3. перезапустить

Именно эти варианты имеют право на жизнь в Драконе. Разве это не полный контроль?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 14:34 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Что значит - так не пойдёт?!

Сколько можно говорить об одном и том же - механизмы исключений и прерываний - принципиально разные механизмы!

То, что первые делаются при помощи вторых, ситуации никоим образом не меняет.

Место возникновения "исключений" однозначно определено алгоритмически, и конструкция эта в основном введена из-за лени программистов.

Прерывания - это внешние воздействия на программу, заранее непредсказуемые!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 14:46 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Alexey_Donskoy писал(а):
механизмы исключений и прерываний - принципиально разные механизмы!
Вот только шестерёнки у них внутри одинаковые. И такой взгляд поможет избежать очередного витка религиозных сражений.

Alexey_Donskoy писал(а):
Прерывания - это внешние воздействия на программу
Да, да. Вот только "деление на ноль" специально завернули на внутренние прерывания, дабы ни у кого не возникло даже и помыслов о лени :wink: .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 15:16 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 42
Откуда: Бердск
Alexey_Donskoy писал(а):
Место возникновения "исключений" однозначно определено алгоритмически, и конструкция эта в основном введена из-за лени программистов
Исключения могут возникнуть и при сложении двух действительных.
НЕ ПРОВЕРЯТЬ каждое такое сложение (с возвратом некого результата через хрен его знает сколько процедурных вызовов) - это вовсе не лень. Это желание заниматься делом, опираясь на аппаратную поддержку этих проверок.
Чего-то мне именно так кажется :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 15:47 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Galkov писал(а):
НЕ ПРОВЕРЯТЬ каждое такое сложение (с возвратом некого результата через хрен его знает сколько процедурных вызовов) - это вовсе не лень. Это желание заниматься делом, опираясь на аппаратную поддержку этих проверок.
Вопрос дискуссионный. Вы б ещё погрешность вычисления так оценивали - "методом исключения" :lol:

Вот подозреваю я, что разницы между исключением плавающей арифметики и исключением при работе с файлами нет никакой:
- в обоих случаях имеет место единый цельный участок программы, который можно рассматривать как программную единицу (формула и какая-нибудь инициализация структуры данными из файла);
- в обоих случаях имеется внешнее устройство (FPU или файловое устройство), которое может выполнить запрос с ошибкой;
- в обоих случаях реакция на исключение одинакова (инициализация внешнего устройства, приведение структур данных в корректное состояние с учётом обработанной ошибки).

Почему же во втором случае считаем (по крайней мере, мы с Ильёй) целесообразным явную проверку результатов всех запросов; а в первом случае мы хотим "аппаратную поддержку" и "заниматься делом"?
Вот кто объяснит такое противоречие?

Я вижу единственное разумное объяснение - второй случай гораздо сложнее :) . Достаточное ли это объяснение?!
Другая сторона этого объяснения - первый случай слишком прост (почти вырожден). Сопроцессор элементарно привести в исходное состояние. Результат вычисления формулы либо получен, либо нет.

Ваши соображения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 15:50 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
касательно семантики окончания при обработке исключений есть неплохой разбор pro-et-contra у Страуструпа в "Дизайн и эволюция языка C++"(Москва, ДМК Пресс, 2006) - c.395

Ещё более интересен вывод, что потратив 2 года на споры, у него возникло впечатление, что можно привести убедительные логические доводы в пользу любого из вариантов :). Страуструп признал, что в этом вопросе народ "оказался в положении всё тех же античных философов, которые так яростно и умно спорили о природе вселенной, что как-то забыли о её изучении".
Разница только в том, что там шла речь о том, какую конкретную реализацию семантики включить в язык, а у нас, применительно к Дракону, идёт речь о предоставлении доступа к более общему механизму - структурному переходу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 16:54 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 42
Откуда: Бердск
Alexey_Donskoy писал(а):
Почему же во втором случае считаем (по крайней мере, мы с Ильёй) целесообразным явную проверку результатов всех запросов; а в первом случае мы хотим "аппаратную поддержку" и "заниматься делом"?
Потому-что Вы с Ильей не правы :D
Но к Дракону это особого отношения не имеет.
Логика обратная: сначала понимаем нужно это или нет, на чего это влияет и как, а вот уже потом - как это представляется в некой среде.

Если "плохо" представляется - это не повод объявлять сие ересью. Вот "у меня" - хорошо представляется. В смысле - визуализируется (если помните).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 18:13 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Galkov писал(а):
Alexey_Donskoy писал(а):
Вот "у меня" - хорошо представляется. В смысле - визуализируется (если помните).
Если есть возможность, дайте, пожалуйста, ссылку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 19:59 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Ильченко Эдуард писал(а):
Если есть возможность, дайте, пожалуйста, ссылку.
Отсюда
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 23:06 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Да используется оно, используется... Только очень крупноблочно (на уровне обработки отказов в целых блоках и восстановлении на этом уровне). А это уровень системщика - ну, например, того, кто формирует серверное приложение. А не прикладника, который пишет логику внутри каждого модуля. Ему этот try лучше не давать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 31 Август, 2015 23:54 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
Код:
error:=true;
try
  OpenFile(f);
  try
    try
      ЧитаемФайлИРаботаем;
    finally
      CloseFile(f);
    end;
    error:=false; //успешное завершение
  except
    ShowMessage('Ошибка работы с файлом');
  end;
except
  ShowMessage('Ошибка открытия файла');
end;
if error then ВсёЧтоНужноСделатьЕслиФайлаНет;
Как такая фигня будет выглядеть ...

Вложение:
try.png
try.png [ 38.43 КБ | Просмотров: 14897 ]

Вложение:
try.fbpro.zip [5.37 КБ]
Скачиваний: 289


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Воскресенье, 08 Ноябрь, 2015 11:05 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
Код:
error:=true;
try
  OpenFile(f);
  try
    try
      ЧитаемФайлИРаботаем;
    finally
      CloseFile(f);
    end;
    error:=false; //успешное завершение
  except
    ShowMessage('Ошибка работы с файлом');
  end;
except
  ShowMessage('Ошибка открытия файла');
end;
if error then ВсёЧтоНужноСделатьЕслиФайлаНет;
Как такая фигня будет выглядеть ...

Вот ещё такой вариант:
Вложение:
try_02.png
try_02.png [ 19.21 КБ | Просмотров: 14793 ]

Вложение:
try_02.fbpro.zip [5.95 КБ]
Скачиваний: 292


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 09 Ноябрь, 2015 08:08 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 239
Откуда: Россия, Стерлитамак
Мои варианты:


Вложения:
try_except2.png
try_except2.png [ 10.23 КБ | Просмотров: 14774 ]
try_except1.png
try_except1.png [ 10.26 КБ | Просмотров: 14774 ]
try_except0.png
try_except0.png [ 8.49 КБ | Просмотров: 14774 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 09 Ноябрь, 2015 10:14 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Последние варианты Ильченко Эдуарда и adva, по моему, вносят двойную избыточность:

по шапуру на секции try и except для единственного шампура, представляющего задачу.

Поэтому логичнее выглядит примитив по способу от Olegar. Этот способ тоже "замыливает" саму задачу, но правильно показывает исполнение преамбулы try в основном потоке управления(чего нет у Ильченко Эдуарда и adva). И в программном коде задача обычно "тонет" в обработке ошибок. В моём представлении, ситуации - не для изображения в примитиве(очень уж избыточно). Требуется визуально отделить задачу от обработки ошибок. Сделать это можно на силуэте. Дополнительным бонусом будет возможность указать любой исход ситуации: отмену, продолжение и перезапуск.

Позже постараюсь перерисовать схему от Olegar в силуэт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 09 Ноябрь, 2015 10:53 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5855
Откуда: Москва
Рэйлвэй Каген писал(а):
Позже постараюсь перерисовать схему от Olegar в силуэт.
Спасибо. Будем с интересом ждать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Ситуации" в Драконе
СообщениеДобавлено: Понедельник, 09 Ноябрь, 2015 11:41 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 511
Силуэт размещён в теме от Olegar


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

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


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

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


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

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