OberonCore
https://forum.oberoncore.ru/

"О пользе всего сущего", или снова об исключениях
https://forum.oberoncore.ru/viewtopic.php?f=6&t=1454
Страница 3 из 5

Автор:  Info21 [ Четверг, 09 Апрель, 2009 15:50 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Madzi писал(а):
... Оберон потому и появился, чтобы дать возможность программисту разбить большой, содержащий миллиарды строк код на небольшие, обозримые модули
Миллиарды?

Автор:  Валерий Лаптев [ Четверг, 09 Апрель, 2009 16:20 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Madzi писал(а):
Данные всегда могут быть какие угодно, не обязательно в компьютере. Есть такой статистический раздел "Разведочный анализ данных", как раз направлен на поиск и выявление "выбросов". Кстати говоря, есть даже теория восстановления пропусков (около 15 методов). Если задача того требует, то нужно грамотно строить теоретическую базу.

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

Madzi писал(а):
:) Вы как будто бы не на тематическом форуме. Оберон потому и появился, чтобы дать возможность программисту разбить большой, содержащий миллиарды строк код на небольшие, обозримые модули, независимо компилируемые и функционирующие сами по себе, и стройно объединяющиеся в общий проект. Это сделано СПЕЦИАЛЬНО чтобы ОБЛЕГЧИТЬ ЖИЗНЬ программисту. Только программисты пока кричат что "Си/++/# - круто, а Оберон - отстой" (Vlad, это я НЕ ПРО ВАС).

Ну, крики раздаются с обоих сторон... :)
Лично я предпочитаю разобраться сам в аргументах тех и других.
А модульность - это не исключительная особенность Оберона. В других-то языках - то же самое! Практически во всех языках в том или ином виде понятие модуля есть. Для тех же самых целей. Согласен, что в Обероне концепция модуля много лучше, чем в С и С++. Ну, по крайней мере, мне эта концепция гораздо больше по душе... :)

Валерий Лаптев писал(а):
Нужен формализованный аппарат.
Или явно зафиксированный документ: дисциплина обработки нештатных ситуаций. На самотек такое пускать нельзя.

Madzi писал(а):
Дык. Уже работаю над этим.

Ага!

Автор:  Info21 [ Четверг, 09 Апрель, 2009 17:08 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

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

Автор:  Валерий Лаптев [ Четверг, 09 Апрель, 2009 18:04 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

А кому?
В конечном итоге эту фичу ж в систему надо включать - вместо исключений... :)

Автор:  Info21 [ Четверг, 09 Апрель, 2009 18:18 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Валерий Лаптев писал(а):
А кому?
В конечном итоге эту фичу ж в систему надо включать - вместо исключений... :)
Тут речь немножко о другом. Всякий "разведочный анализ..." -- это епархия специалистов по эконометрике, финансовым рискам и т.п. Они, конечно, тоже программируют, но как "непрофессионалы".
И мы благополучно вернулись к базовым тезисам Информатики-21 8)

Как ни повернешься -- обязательно туда вернешься, уж надоело даже 8)

Автор:  Валерий Лаптев [ Четверг, 09 Апрель, 2009 18:36 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Info21 писал(а):
Валерий Лаптев писал(а):
А кому?
В конечном итоге эту фичу ж в систему надо включать - вместо исключений... :)
Тут речь немножко о другом. Всякий "разведочный анализ..." -- это епархия специалистов по эконометрике, финансовым рискам и т.п. Они, конечно, тоже программируют, но как "непрофессионалы".
И мы благополучно вернулись к базовым тезисам Информатики-21 8)

Как ни повернешься -- обязательно туда вернешься, уж надоело даже 8)

Таким образом, следует четко разделить задачу:
обучение профессионалов-программистов, которым нужно знать все и о майнстриме, и о боковых ветках. И при этом писать "правильные" программы.
И обучение всех остальных, которым нужно дать в руки инструмент, и научить с помощью него правильно решать свои задачи.
Ничего против не имею.
У самого давно стоял вопрос: на чем учить смежные кафедры...

Автор:  ain [ Понедельник, 20 Апрель, 2009 07:31 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

А что без примеров?
У меня всякое обращение к базе с исключениями.
Как пример:

Код:
procedure TfBuy.SaveNakl(Sender: TBaseVirtualTree; aConsultant: TConsultant; IsDay: Boolean=true);
var Q: TQuery;
    D: TDatabase;
    P: PVirtualNode;
    Data: PPrice;
    S: string;
    Date: TDate;
begin
  D := TDatabase.Create(self);
  D.DatabaseName := DataBaseName;
  D.TransIsolation := tiDirtyRead;
  D.Open;
  Date := pNNPCTO.fnnpcto.dtCurrent.DateTime;
  try
    Q := TQuery.Create(Self);
    Q.DatabaseName := D.DatabaseName;
    D.StartTransaction;
      // Удалить предыдущую накладную из базы - Номер консультанта и дата накладной
      Q.SQL.Add('DELETE');
      Q.SQL.Add(Format('FROM %s B', [CDataBaseBuy[CurrentDataBase]]));
...
    D.Commit;
...
    FreeAndNil(Q);
    FreeAndNil(D);
  except on Exception do begin
      D.Rollback;
      FreeAndNil(Q);
      FreeAndNil(D);
    end;
  end;
end;

Автор:  Иван Кузьмицкий [ Понедельник, 20 Апрель, 2009 10:01 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

В BlackBox используются коды ошибок, возвращаемые SqlDB.Database. Транзакции начинаются автоматически.
Код:
   
TYPE
   Database* = POINTER TO ABSTRACT RECORD
      db*: SqlDB.Database;
      res* : INTEGER;
   END;

PROCEDURE (d: Database) Query*(IN query : ARRAY OF CHAR);
BEGIN
   ASSERT(d.db # NIL, 20);
   d.db.Exec(query);
   d.res := d.db.res;
   IF d.res = 0 THEN d.db.Commit ELSE d.db.RollBack END
END Query;

Автор:  Madzi [ Понедельник, 20 Апрель, 2009 10:55 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Валерий Лаптев писал(а):
Info21 писал(а):
Валерий Лаптев писал(а):
А кому?
В конечном итоге эту фичу ж в систему надо включать - вместо исключений... :)
Тут речь немножко о другом. Всякий "разведочный анализ..." -- это епархия специалистов по эконометрике, финансовым рискам и т.п. Они, конечно, тоже программируют, но как "непрофессионалы".
И мы благополучно вернулись к базовым тезисам Информатики-21 8)

Как ни повернешься -- обязательно туда вернешься, уж надоело даже 8)

Таким образом, следует четко разделить задачу:
обучение профессионалов-программистов, которым нужно знать все и о майнстриме, и о боковых ветках. И при этом писать "правильные" программы.
И обучение всех остальных, которым нужно дать в руки инструмент, и научить с помощью него правильно решать свои задачи.
Ничего против не имею.
У самого давно стоял вопрос: на чем учить смежные кафедры...

Я вот только одного не пойму. Зачем программистам-профессионалам знать всё о майнстриме? Не лучше ли их обучить профессиональной базе, чтобы они потом писали "правильные" программы и влияли на майнтсрим?
У нас просто студенты начиная со 2-3 курса устраиваются во всякие софто-марательные конторы, где их "обучают майнстриму", так что плохому они сами научатся.

Автор:  Info21 [ Понедельник, 20 Апрель, 2009 12:06 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Madzi писал(а):
У нас просто студенты начиная со 2-3 курса устраиваются во всякие софто-марательные конторы, где их "обучают майнстриму", так что плохому они сами научатся.
Вот именно.

Еще так говорят опытные люди: "Надо стараться всё делать хорошо, хреново само получится."

Автор:  Клоп Говорун [ Понедельник, 29 Июнь, 2009 00:52 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Ошибки нужно исправлять по ходу дела, а читателям выдавать список замеченных опечаток. :oops:

Автор:  prospero78 [ Понедельник, 31 Июль, 2017 16:31 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Мадзи писал(а):
Если входные данные проверяются перед обработкой на допустимость, а также существует проверка выходных данных, то исключительным ситуациям взяться просто неоткуда.

Ос, сенсей!

Автор:  Kemet [ Понедельник, 31 Июль, 2017 17:21 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

prospero78 писал(а):
Мадзи писал(а):
Если входные данные проверяются перед обработкой на допустимость, а также существует проверка выходных данных, то исключительным ситуациям взяться просто неоткуда.

Ос, сенсей!

Исключительная ситуация это как раз когда не соблюдается инвариант, то есть входные или выходные данные не прошли проверку

Автор:  Valery Solovey [ Понедельник, 31 Июль, 2017 22:09 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Исключительная ситуация - это когда проверки не имеют смысла. Именно поэтому ситуация и исключительная.

Автор:  prospero78 [ Понедельник, 31 Июль, 2017 23:34 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Кемет, исключение, это когда control memory block во время очередного прохода обнаружил нарушение целостности памяти и исправить не может.
А если ОС не может файл открыть -- это предусмотренная штатная ситуация и никаких трей-качев тут плодить не надо!
Это от лукавого.

Автор:  Kemet [ Вторник, 01 Август, 2017 06:24 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Valery Solovey писал(а):
Исключительная ситуация - это когда проверки не имеют смысла. Именно поэтому ситуация и исключительная.

Исключительная ситуация, это когда дальнейшие выполнение программы в соответствии с алгоритмом невозможно или бессмысленно, один из примеров, когда не соблюдается инвариант, то есть входные или выходные данные не прошли проверку.
Как реагировать на исключительную ситуацию, как её обрабатывать зависит от многих факторов, то есть от контекста - от назначения программы, от этапа разработки, от места использования и тп. Генерировать исключения можно не всегда ( а ASSERT это, по-сути, тоже генератор исключений ). На летящем пассажирском самолете генерации исключений не должно быть ни в каком виде. Должны быть средства оповещения о возникновении нежданчика и средства восстановления от сбоев. И куча всего остального ))

Автор:  Comdiv [ Вторник, 01 Август, 2017 12:45 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

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

Автор:  Kemet [ Вторник, 01 Август, 2017 13:45 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Comdiv писал(а):
Kemet писал(а):
На летящем пассажирском самолете генерации исключений не должно быть ни в каком виде.
Должна быть. Если из-за переполнения переменной самолёт без всяких исключений отправится на Землю, это будет не лучше, чем обработка исключительных ситуаций.
Это не генерация исключений.

Автор:  Comdiv [ Вторник, 01 Август, 2017 14:28 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Она самая. Для того, чтобы полностью исключить генерацию исключений, нужно либо пропускать ошибки, либо писать на очень специфическом языке, запускаемое не специфическом железе. Задача почти нереализуемая.

Автор:  Kemet [ Вторник, 01 Август, 2017 14:29 ]
Заголовок сообщения:  Re: "О пользе всего сущего", или снова об исключениях

Это не генерация исключения, это исключение.
Но и в этом случае должны быть средства восстановления.
Кстати, в А2 есть такие зачаточные средства - если активность помечена как SAFE, то, в случае возникновения исключения будет вызван обработчик и затем активность будет перезапущена.
Можно установить свой обработчик, в котором анализировать возникшую ситуацию и информировать, исправлять проблему. После чего пытаться выполнить алгоритм вновь.

Страница 3 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/