|
|
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedПосуди сам - у тебя блок catch ушел в бесконечный цикл, и.... И тот же самый watchdog его вырубил. Причём ты сам об этом упоминал пару сообщений назад (.. или подвисло..) socimedПотому в случае рентгеновского аппарата вариант "если что-то пошло не так - то сразу упасть" - это единственное верное решение. "Что-то пошло не так" - понятие растяжимое. Чтобы не спорить о том, что такое ошибка, давай говорить о "проблемных ситуациях". Есть обрабатываемые проблемные ситуации, есть необрабатываемые. Собственно говоря, с точки зрения аппарата в целом необрабатываемых ситуаций быть не должно вообще. Падение в кору, срабатывание watchdog-а итп - это тоже один из вариантов обработки, и разработчик ровно так же проверяет и тестирует, что на "совсем внештатные" ситуации реакция будет именно такой, какая ожидается и требуется. Можно говорить о ситуациях, обрабатываемых или не обрабатываемых конкретным модулем. Если сказано, что на ситуацию X модуль должен реагировать действием Y, то задача разработчика - это обеспечить. И если есть код, реализующий Y, то как управление придёт в него - с помощью if или с помощью catch - это вопрос технический. Если ситуация модулем не обрабатывается, он должен сообщить об этом наружу. Это опять же может быть сделано исключением, может быть сделано специальным сигналом, может быть сделано падением - опять же, вопрос технический (что не мешает ему быть важным и ответственным). socimedВ текущих реалиях этого безумного мира - увы, нет, если есть требование "выживать в любых ситуациях", то придется ходить по этим фундаментально ложным try/finally/catch Рентгеновскому аппарату хорошо в том смысле, что "стоять выключенным" для него вполне реализует "выживать в любых ситуациях". Если речь идёт о летящем самолёте или работающей АЭС, то для "выживания нас" страусиной политики уже недостаточно, требуется как минимум умение перезагружаться. Если речь о боевой ракете вблизи цели, то "возможно неправильная реакция на неожиданную ситуацию" допустима, а вот падение в кору и ребут - стопроцентный промах. Если это радар ПВО, то там вообще есть шанс найти аварийный голосовой режим передачи данных. В общем... не стоит всё грести в одну кучу. socimedпусть горемыки-кодеры сидят и пишут обработчики-фильтры внешних данных с ошибками,а не пытаются маскировать проблемы. Ты борешься с симптомами. Я вполне согласен с твоим неприятием использования исключений для ветвления в штатных ситуациях, но ты доводишь эту идеологию до абсурда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 01:08 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
softwarerЕсть обрабатываемые проблемные ситуации, есть необрабатываемые. Есть только одна обрабатываемая проблемная ситуация - это ввод человека. Ему можно сказать, что он ввел что-то не то (к примеру имя несуществующего файла). Для этого бросать exception вовсе не обязательно. Остальные проблемные ситуации, как правило, не обрабатываемые - если ты пишешь не библиотеку, а некий конечный софт, то о проблемах тебе говорить некому - робот, болван-вызывающий, как правило не готов решать твои проблемы, все что он может - это лишь сообщить о проблеме дальше по цепочке, вплоть до человека. Так вот. Для того, чтоб донести месадж о катастрофе до человека, не надо пытаться судорожно что-то передавать и пытаться восстановиться. Достаточно помереть всей цепочке, а программа монитор (или watchdog) уже как-нибудь донесет эту мысль до человека, что СЭР, ВСЕ ПРОПАЛО. Потому что попытка восстановиться из проблемы, непосредственно с человеком не связанной и его вводом не вызванной, т.е. не ожидаемой проблемы - может по цепочке породить каскад новых проблем. Иначе - это не про проблемы, а просто про штатные ситуации. Т.е. если пользователь сдергивает по http файл, а файла нет - это не проблемная ситуация ни разу, а как раз очень даже штатная (с т.з. сервера) - т.е. он, сервер, вполне себе в состоянии эту мысль пользователю донести, не перейдя в неопределенное состояние с требованием аварийного восстановления по finally и прочим catch. Вот это я и пытаюсь донести - что есть реальные проблемные ситуации с в принципе непредсказуемым поведением - это одно, их не надо пытаться обработать, а есть просто штатные ситуации, когда чего-то там не так с т.з. пользователя, но система вполне может с ними совладать - это совсем про другое, но и там Exception не нужны в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 01:18 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimed http://en.wikipedia.org/wiki/Watchdog_timer A watchdog timer (WDT; sometimes called a computer operating properly or COP timer, or simply a watchdog) is an electronic timer that is used to detect and recover from computer malfunctions Вот то что ты там про механореле с таймером рассказывал. И? Таймер? Таймер. Проблемы обнаруживает? Обнаруживает. Последствия проблем устраняет? Устраняет! Чо тебе еще надо, дедуля, чего пристал на этот раз?Я не "к тебе пристал", я просто обматываю ваши творения оранжевой сигнальной лентой, чтоб кто-нибудь не вступил по недоразумению. Давайте доцитируем википедию хотя бы до конца параграфа. С того места, которое вам разонравилось. During normal operation, the computer regularly restarts the watchdog timer to prevent it from elapsing, or "timing out". If, due to a hardware fault or program error, the computer fails to restart the watchdog, the timer will elapse and generate a timeout signal. The timeout signal is used to initiate corrective action or actions. The corrective actions typically include placing the computer system in a safe state and restoring normal system operation.Спрашивается, что из перечисленного делает упомянутый рентгеновский аппарат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 01:24 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruСпрашивается, что из перечисленного делает упомянутый рентгеновский аппарат? Все это и делает. Меняются только названия компонент и немного порядок действий, но суть остается та же - активный мониторинг по таймеру и выполнение корректирующих действий при обнаружении нештатной ситуации - это и есть суть watchdog. А как именно это всё релизовано - это глубоко вторичный вопрос. Главное, чтоб реализация watchdog была верифицирована, и не подвержена влиянию "прикладного кода" - всего того, что меняется слишком часто и практически никогда не верифицируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 01:31 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedВсе это и делает. Меняются только названия компонент и немного порядок действийВ таком случае вы всё правильно пишете: в вашей чуши надо только поменять слова и немного их порядок --- и спорить будет не о чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 01:38 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Тролетема, автора в баню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 01:40 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
iv_an_rusocimedВсе это и делает. Меняются только названия компонент и немного порядок действийВ таком случае вы всё правильно пишете: в вашей чуши надо только поменять слова и немного их порядок --- и спорить будет не о чем. Человек, понаписавший свой valgrind дружественный аллокатор говорит мне о чуши? Да что за чушь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 01:40 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedЕсть только одна обрабатываемая проблемная ситуация - это ввод человека. В философском смысле любая ситуация - это ввод человека (прямой или косвенный). А в нормальном - это не так. Когда ты суёшь ногу в лифт и его дверцы, не закрывшись, открываются - это обработка проблемной ситуации. И если лифт упадёт в кору (и застынет как есть) это тебе не понравится. socimedДля этого бросать exception вовсе не обязательно. Не обязательно. Но иногда удобнее и разумнее, чем использовать какой-либо другой механизм. socimedесли ты пишешь не библиотеку, а некий конечный софт, то о проблемах тебе говорить некому Некий конечный софт состоит из набора модулей. Значительная их часть - "не конечные", то есть в твоей терминологии библиотечные. Более того, здесь можно ввернуть изящный пример. Возьми любой модуль, любой софт, который не обрабатывает некую проблему и должен по-твоему упасть в кору. Теперь я даю тебе задание: напиши автоматизированный тест для этого софта. Всё, получившийся продукт уже не должен падать в кору, он должен ставить галочку "тест пройден". Это иллюстрирует простой факт: модуль не знает о своём окружении и не может собственными силами решить, как правильно обрабатывать некую ситуацию. Именно поэтому "наверху разберутся" - чертовски разумный алгоритм реакции, и только "фишка-дальше-не-идёт-модуль" должен принимать решение. socimedИначе - это не про проблемы, а просто про штатные ситуации. В мире нет штатных и нештатных ситуаций. Есть только те, которые мы, с нашим мышлением, называем теми или другими. socimedВот это я и пытаюсь донести - что есть реальные проблемные ситуации с в принципе непредсказуемым поведением - это одно, их не надо пытаться обработать, Часто - не надо, но и здесь есть моменты. Пример с ракетой я уже привёл. Приведу другой пример: софтина обслуживает десять девайсов в десяти процессах/потоках. В случае нештатной ситуации с девайсом 6 софтина должна грохнуть/перезапустить соответствующий процесс/поток, но вот падать целиком и обламывать все десять - не должна. socimedа есть просто штатные ситуации, когда чего-то там не так с т.з. пользователя, но система вполне может с ними совладать - это совсем про другое, но и там Exception не нужны в принципе. Там без них можно обойтись. Ровно так же, как можно обойтись без циклов или без подпрограмм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 01:44 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
softwarersocimedЕсть только одна обрабатываемая проблемная ситуация - это ввод человека. В философском смысле любая ситуация - это ввод человека (прямой или косвенный). А в нормальном - это не так. Когда ты суёшь ногу в лифт и его дверцы, не закрывшись, открываются - это обработка проблемной ситуации. С чего бы вдруг? Это как раз обработка пользовательского ввода. В данном случае - ввода ноги, буквально. Ситуация, изначально заложенная в конструкцию лифта, и обрабатываемая как штатная, ни разу не исключительная. А вот проблемная исключительная ситуация - это обрыв троссов, и "выпадение в кору" в лифте реализовано в этом случае весьма оригинально - сразу распорки, которые обычно к троссу привязаны, автоматически расходятся в стороны и блокируют лифт в шахте. И она исключает дальнейшую работу лифта, на то она и исключение. Это ни разу не пользовательский ввод, а как раз реакция на необрабатываемую нештатную внешнюю ситуацию. И выход из этой ситуации обычным образом невозможен - только рестарт, только полная перезагрузка системы - внешние, неповрежденные компоненты (специально обученные люди) должны принять решение, что делать дальше с этим поломанным лифтом. softwarersocimedДля этого бросать exception вовсе не обязательно. Не обязательно. Но иногда удобнее и разумнее, чем использовать какой-либо другой механизм. Демагогия. Когда это когда? Если не брать готовых систем (к примеру VCL, где все построено на Exception и ты это изменить не можешь, потому просто обязан сам их продолжать использовать), то придумать нормальный вариант, когда они имеют право жить - почти невозможно. softwarer Возьми любой модуль, любой софт, который не обрабатывает некую проблему и должен по-твоему упасть в кору. Теперь я даю тебе задание: напиши автоматизированный тест для этого софта. Всё, получившийся продукт уже не должен падать в кору, он должен ставить галочку "тест пройден". Это иллюстрирует простой факт: Это лишь иллюстрирует неумение тобой писать тесты. Галочки ставит не падающий компонент, а монитор (watchdog) следящий за этим компонентом. Упал порожденный процесс - галочка. Не упал - другая галочка. softwarersocimedИначе - это не про проблемы, а просто про штатные ситуации. В мире нет штатных и нештатных ситуаций. Есть только те, которые мы, с нашим мышлением, называем теми или другими. Штатная ситуация - это прописанная человеком в документации к объекту. Условия работы лифта и т.д. А нештатная - это падение метеорита в лифт - ни в одной инструкции подобное не прописано, что метеорит может попасть. Там лишь, в инструкции, нечто вида - "в случае внештаной ситуации делайте то-то", в нашем случае - выпадайте в кору, или ставьте распорки в лифте, чтоб не брякнуться об пол с высоты 20 этажа. Авось поможет, от метеорита-то. Но причины нештатной ситуации заранее не известны (метеорит это будет или инопланетный корабль с Проксима-центавра), потому она и нештатная, ибо заранее неведомая. А раз неведомое, то должно быть одно действие, предельно безопасное - или помереть в кору и не нагадить всем, или застопориться в лифте, лишь бы не разбиться, ничего лучшего не придумать, нет, ну не выпускать же кабину из шахты лифта как с катапульты, с парашютом? (как это сделал бы типовой ООП программист, более чем уверен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 02:01 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedsoftwarer.. Когда ты суёшь ногу в лифт и его дверцы, не закрывшись, открываются .. Ситуация, изначально заложенная в конструкцию лифта, и обрабатываемая как штатная, ни разу не исключительная. А вот проблемная исключительная ситуация - это обрыв троссов, Ты совсем заигрался словами и даже не подумал, что я специально подбросил тебе эту возможность. И "ввод ноги", и "обрыв тросов" - это предусмотренные разработчиком ситуации. Штатные, в твоей терминологии. На каждую из них предусмотрена своя реакция, очень похожая: на одну - "раскрыть двери", на другую - "раскрыть распорки". Разница только в том, что после одной из них лифту разрешено восстановиться в стандартное состояние, а в другой ему сказано держаться до последнего. Нештатная ситуация - это, например, выпадание у лифта дна (пола). И, насколько мне известно, ни в какую кору он при этом не выпадет, даже ездить на вызовы не перестанет (что, впрочем, уже совершенно неважно). socimedДемагогия. Выключи трепло. socimedКогда это когда? ... то придумать нормальный вариант, когда они имеют право жить - почти невозможно. Значит, у тебя бедная фантазия. Впрочем, "почти" показывает, что ты уверен в существовании таких вариантов и готовишь почву для отступления. socimedЭто лишь иллюстрирует неумение тобой писать тесты. Галочки ставит не падающий компонент, а монитор (watchdog) следящий за этим компонентом. Скучно играешь словами. socimedsoftwarerВ мире нет штатных и нештатных ситуаций. Есть только те, которые мы, с нашим мышлением, называем теми или другими. Штатная ситуация - это прописанная человеком в документации к объекту. Условия работы лифта и т.д. Противоречишь тому, что сам сказал тремя абзацами выше. Аварийное торможение при обрыве троса прописано в любых требованиях к лифту, то есть по твоей терминологии здесь штатно, а ты выше назвал его нештатным. Что, собственно, подчёркивает и так очевидное отсутствие у тебя понимания и продуманной позиции в вопросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 04:18 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimed ...тем больше я убеждаюсь, что с годами мозг наверное костенеет, особенно под прессом "архитектурных", т.н. "решений"Сказал дедуля, 20 лет писавший ООП. Я не понимаю, вам так интересно что-то доказывать этому клоуну? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 11:45 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
ZukoraТролетема, автора в баню. вообще-то, тролингом тут занимается только один человек :) И это не я... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 12:34 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimediv_an_ruпропущено... Вобще-то я про скорость кода, исполняемого в случае, когда ни одно исключение так и не вылетело. Нету if-ов --- нечему рвать конвейер ядра. Если ошибка таки приключилась --- тут уже один чорт не до скорости, тут лишь бы не посыпалось всё :) Я говорил про то, что в мозгах ООП "программистов" замечен типовой сдвиг по фазе. Они путают exception с нелокальным goto, там даже не про вопрос ошибок, а просто вот так они делают setjmp/longjmp (которые редкий C программист в здравом уме вот просто так начнет использовать, в равной степени и ucontext/coroutine, просто по причине их сложности). Но exception-goto для ООП-истов относительно дешев, вот там и процветает эта разновидность говнокодирования. А вот обработка ошибок - это настолько отдельная тема, что тут можно смело начинать холивар на 100500 страниц. В моем (и не только) понимании - единственно верная обработка ошибок - это упасть в core и выдать посмертный мессдж в syslog. Все остальное - это не ошибка, а как раз разновидность данных, и эти все разновидности должна обрабатываться явно. К примеру не ввел пользователь свое ФИО - это нифига не exception, это просто обычный поток кода, который завернет его "пользователя" обратно на поле ввода. Ошибки - это нечто заранее не предусмотренное. А раз не предусмотренное, то причины явления не известны, и дальнейшее поведение ПО непредсказуемо, и может привести к еще большей порче данных. Потому самое безопасное тут - просто упасть и выдать программеру информацию где и на чем упали - пусть разбирается и пишет свои if-ы с обработкой. Но в мире ООП это, конечно, не так. Не согласен с мнением. Эксепшены конечно нехорошо юзать для обычного разруливания инфы (как было сказано, например не введены данные в поле). Однако что делать, если я пишу компонент, работоспособностю которого можно пренебречь? Ну вот представим, я например пишу оптимизатор кода. И другой прогер подрубает его к какой-нить IDE (самописной). Что будет, если вдруг, в языке добавится некая конструкция с оптимизацией которой могут возникнуть проблемы? Мне в момент сборки надо завалить среду и сказать пользователю "Сорри, произошла ошибка"? Или же лучше в момент возникновения ошибки, обработать её (заранее предусмотрев возможность оной), и пробросить исключение в основной код среды, которая удачно всё скомпилит, продолжит работу как полагается, но при этом выбросит сообщение "Код не оптимизирован, во время процесса оптимизации произошла ошибка... при повторении ситуации просим связаться с разработчиком" ну или "во время оптимизации произошла ошибка, код не был оптимизирован. Отправить данные об ошибке разработчикам?" Кстати, а какое отношение исключения имеют к ООП? Что-то тема уже ушла далеко) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 12:57 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
softwarerПротиворечишь тому, что сам сказал тремя абзацами выше. Аварийное торможение при обрыве троса прописано в любых требованиях к лифту, то есть по твоей терминологии здесь штатно, а ты выше назвал его нештатным. Что, собственно, подчёркивает и так очевидное отсутствие у тебя понимания и продуманной позиции в вопросе. Ничему я не противоречу. Обрыв троссов - это внештатная ситуация, исключительная. Прописан лишь способ обработки ее - аналогичный выпаданию в кору. В руководстве нигде не прописано, что после обрыва тросса можно штатными средствами восстановить работоспособность лифта, просто нажав где-то кнопку ОК. В этом и отличие - исключительной ситуации от обычной штатной. Что после возникновения исключительной ситуации работа объекта в нормальном режиме уже невозможна - только анализ посмертных дампов и специальные средства по перезапуску объекта, фактически - ввод в эксплуатацию нового экземпляра (после ремонта). Это и есть - отсутствие описания в руководстве обработки внештатной, исключительной ситуации, в части, а что делать после обрыва чтоб продолжать ездить вверх-вниз. А ничего не делать. Все. Оборвался тросс - core dump, жизненный цикл закончен. softwarerВыключи трепло Включи мозг softwarerЗначит, у тебя бедная фантазия. Это значит что у меня здравый рассудок, а нафантазировать можно чего угодно - даже гиппопотамов, летающий за счет реактивной струи из заднего прохода, проблема только в том, что подобная болезненная фантазия не дает им, гиппопотамам с реактивной струей, право на существование (хотя в мире ООП, конечно, законы физики не действуют, и позволено воплощать в граните любую сказочно глупую укатайку, что и происходит повсеместно - контроля то нет никакого). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 15:06 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрКстати, а какое отношение исключения имеют к ООП? Что-то тема уже ушла далеко) Непосредственное. К примеру в НЕ ООП языке C исключений нет как таковых. Сейчас обсуждается вопрос - а нужны ли они, как сущность, или просто в мозгах ООП апологетов произошел тектонический сдвиг и они вкорячили в язык нечто неестественное, и, что характерно, принципиально неверное, приводящее лишь к созданию нового класса проблем, а не решению старых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 15:10 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
Для мне исключения просто удобный способ описывать обработку ситуаций, не относящихся к основному потоку программы, отдельно. Типа: Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Это позволяет понять основную мысль программы, не отвлекаясь на детали во-первых, а во-вторых, вводит важное умолчание (сообщить об ненормальности, если она есть, возвратить использованные ресурсы в любом случае). Как-то раз мне пришлось писать программу расчета зарплаты на языке не поддерживающем исключения, и приходилось вводить подобные умолчания макросами, (типа #define HANDLEERROR(x) error = X; if (error) return error; ) и тупо копипастить эти макросы на каждой строчке. Кстати, socimem, а у вас принят какой-нибудь метод статического анализа, который гарантирует незамалчивание ошибочных ситуаций (не обработку возвращаемых кодов ошибок)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 15:34 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
F2F4Я не понимаю, вам так интересно что-то доказывать этому клоуну? Я считаю, что мы имеем дело с блаб-эффектом в неоперабельной форме. Соответственно, разговаривать можно только про уровень блаба и ниже. Все что выше - в области бессознательного и вызывает, скорее, эмоциональную реакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 16:10 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedНепосредственное. К примеру в НЕ ООП языке C исключений нет как таковых. Сейчас обсуждается вопрос - а нужны ли они, как сущность, или просто в мозгах ООП апологетов произошел тектонический сдвиг и они вкорячили в язык нечто неестественное, и, что характерно, принципиально неверное, приводящее лишь к созданию нового класса проблем, а не решению старых. Если писать работу с файлом по всем правилам open/read/write/close то на каждом шаге нужно проверять retcode и предусматривать goto на стандартный обработчик но не одной ошибки, а ГРУППЫ ошибок класса IO. Исключения - это просто пакетная обработка группы однородных ошибок. И если искать рациональное зерно в использовании исключений - то это визуальное сокращение объёма рутинного кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 16:22 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
WebSharper- открой холодильник ... - если холодильник спёрли, вызови ноль два ... если холодильник не спёрли то { поставь кефир на место и закрой холодильник, если он открыт. } И даже с зелёными исправлениями в холодильнике регулярно обнаруживается пустая бутылка кефира, или ещё хуже --- бутылка, распознанная как пустая, выброшенная в мусорку, но при обработке исключения извлечённая из мусорки и таки поставленная в холодильник. Почему речь про исключения, если топик про ООП? Потому что они были бы куда менее полезны, если б не раскрутка стека, позволяющая автоматом соблюсти инварианты времени существования объектов для auto объектов. В той части кода, которая пишется человеком в catch(), а не компилятором "в уме", обработка исключений не намного безопаснее, чем setjmp / longjmp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 16:25 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedПрограмёрКстати, а какое отношение исключения имеют к ООП? Непосредственное. К примеру в НЕ ООП языке C исключений нет как таковых. Совсем демагогию погнал, одним совпадением обосновываешь связь. А к примеру в НЕ ООП языке PL/SQL они есть, и что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 16:35 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedв НЕ ООП языке C исключений нет как таковых.declare exit/continue handler и/или whenever sqlstate ... в разных .../PL --- это не исключения. unwind-protect в лиспах --- это то же не исключения. Ибо так говорил Заратустра socimed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 16:39 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruв холодильнике регулярно обнаруживается пустая бутылка кефира, или ещё хуже --- бутылка, распознанная как пустая, выброшенная в мусорку, но при обработке исключения извлечённая из мусорки и таки поставленная в холодильник. Разумеется пример упрощен, но основная мысль та же - держать основной поток программы как можно более ясным, а всякие исключения обрабатывать отдельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 16:53 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
softwarersocimedпропущено... Непосредственное. К примеру в НЕ ООП языке C исключений нет как таковых. Совсем демагогию погнал, одним совпадением обосновываешь связь. А к примеру в НЕ ООП языке PL/SQL они есть, и что? И что? в PL/SQL и ООП есть по самое небалуйся, давно документацию читал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 17:06 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
maytonИ если искать рациональное зерно в использовании исключений - то это визуальное сокращение объёма рутинного кода. Не только и даже не столько. Главное в другом: любая написанная программистом строка - потенциальное место ошибок, любая ненаписанная - уменьшает количество ошибок в программе. Исключения решают задачи, которые а) нужно решать б) без исключений нужно решать большим количеством "рутинного" кода в) куда надёжнее, чем среднее качество "рутинного кода" у программиста. Кроме этого, само по себе улучшение структуры программы, выделение чистых ветвей основной логики, обработчиков ошибок, в общем, все преимущества более ясного и чистого кода - дают определённое улучшение, то есть при тех же усилиях на разработку программа выйдет лучше (и, в частности, надёжнее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 17:08 |
|
||
|
А давайте-ка обсудим :) Кто считает что ООП даёт прирост скорости программе?
|
|||
|---|---|---|---|
|
#18+
socimedИ что? в PL/SQL и ООП есть по самое небалуйся, давно документацию читал? Даже скучно, ты прыгаешь в каждую ловушку подряд. Ни один вменяемый человек не назовёт PL/SQL ООП-языком, а то "ООП", что там есть, настолько подчёркнуто независимо от исключений, что даже твоей наглости не хватит постулировать связь между ними. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2014, 17:10 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38554244&tid=1341468]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
137ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 417ms |

| 0 / 0 |
