Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

Почему программы допускают ошибки?   Найти похожие ветки 

 
lipskiy ©   (2004-09-10 13:12) [0]

С чего вообще исторически это началось - кто или что допустило саму возможность ошибок ПО? Если допустить, что аппаратная часть безупречна, а это как правило так, то чисто теоретически с аппаратной точки зрения никаких ошибок быть не может. Значит ошибки ПО - это всего лишь некий класс операций, квалифицированный как ошибки? Так? А зачем? Влом было сразу все ситуации обрабатывать?


 
TUser ©   (2004-09-10 13:15) [1]

Ошибки появились еще до появления первых программ

На шестой день создал он программера
На седьмой сказал - да будут баги!
...
И убил Каин Авеля

:)


 
cyborg ©   (2004-09-10 13:19) [2]

Люди пишут программы, причина в этом.


 
DiamondShark ©   (2004-09-10 13:21) [3]


> Если допустить, что аппаратная часть безупречна, а это как
> правило так,

Это далеко не правило.


> Значит ошибки ПО - это всего лишь некий класс операций,
> квалифицированный как ошибки?

Махизмом попахивает...


 
Drakosha   (2004-09-10 13:21) [4]

имхо ошибки это не  соответствие программы своему назначению. и вся вина за них иссключительно на плечах плохого программера.(а хорошего по определению быть не может)


 
lipskiy ©   (2004-09-10 13:25) [5]

Да я не совсем о том.
Что есть ошибка ПО? В принципе?


 
Vovchik_A ©   (2004-09-10 13:27) [6]

Кривые руки программиста. Программ без ошибок не бывает.


 
lipskiy ©   (2004-09-10 13:28) [7]

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


 
lipskiy ©   (2004-09-10 13:35) [8]

Программы выполняет микропроцессор, в общем случае.
Микропроцессор - это логическая схема.
Но рабочая логическая схема будет работать при любых комбинациях данных. Схему нельзя ввергнуть в ошибку, подав какие-то неверные данные.
Значит, я пока вижу только одно объяснение - ошибки ПО были предусмотрены заранее и четко описаны. Так?


 
ocean   (2004-09-10 13:39) [9]

согласен, ошибки ПРОГРАММЫ быть не может, может быть ошибка кодировщика или проектировщика и прочих хакеров как несоответствие реализации первоначальным планам. Но люди дипломатично сваливают свои ошибки на свои же программы. Неужели моя вторая женитьба - это ошибка программы Создателя?


 
Ihor Osov'yak ©   (2004-09-10 13:45) [10]

Ошибок ПО не бывает. Бывают ошибки постановщиков задач, алгоритмистов, кодеров, то есть людей, разрабатывающих ПО.

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

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


 
lipskiy ©   (2004-09-10 13:52) [11]


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

Вот! Имхо, неправильно решили. Любая операция должна была быть допустимой, а обнаружение ошибок - проблема разработчиков, а не пользователей. А то выходит, что программы пишут не для юзеров, а для разработчиков, чтобы им ошибки удобнее вылавливать было.


 
Думкин ©   (2004-09-10 14:03) [12]

> [11] lipskiy ©   (10.09.04 13:52)

Не могли бы вы изложить свою точку зрения полнее и главное яснее. Я пока ваших проблем не прочувствовал, ибо не понял: че вам надо?


 
Ega23 ©   (2004-09-10 14:04) [13]

Ответ на вопрос Почему глючат программы? с разных точек зрения.

Иудаизм.
К чему спрашивать, почему глючат программы? Hадо ждать патча!

Католицизм.
Первая программа была безглючной. Hо захотела идти на компьютере Apple и заглючила. Все программы являются версиями первой и охраняют глюки в целях совместимости.

Православие.
Hельзя спрашивать, почему глючат программы. И пользоваться атчами тоже нельзя, Особенно западными. Hадо заботиться не о том, чтобы программа работала, а о том, что с ней будет после деинсталляции.

Протестантизм.
Программист так любит программы, что позволяет им глючить, падать и вешаться. И вообще, надо больше работать с глючными рограммами. Глюков это не исправит, зато заработаете больше денег.

Свидетели Иеговы.
Только у нас есть настоящий патч, исправляющий любые глюки! И мы готовы предложить его всем практически бесплатно. Hо он не будет работать, если вы не уверуете, что он действительно исправляет глюки. Если вы поставили патч, а глюки не исчезли, значит вы не уверовали.

Мормоны.
Программы глючат потому, что их запускают на неправильных компьютерах. Правильные компьютеры есть только у нас. Еще немного, и мы узнаем, как их включить.

Ислам (сунниты).
Если программа глючит, значит, она неверная. Hеверные программы надо стереть.
Безглючны только верные программы. Если верная программа выдает, что 2х2=5, значит, глючат все программы, дающие другие результаты.

Ислам (шииты).
Только один программист писал верные программы. Верными являются также последующие версии этих программ. Все остальные программы глючат по определению.

Индуизм.
Программы глючат потому, что в них были глюки до инсталляции, когда они были другими программами и на других компьютерах. После деинсталляции они снова станут другими программами и будут глючить из-за глюков, которые в них есть сейчас. Патчи тут не помогут, потому что все предопределено.

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

Дзен-буддизм.
Глючит ли программа, распечатывающая сама себя? Как выглядит программа, не записанная ни на одном носителе? Однажды ученик спросил учителя, как избавиться от глюков в программах, и учитель дал ему вирус CIH. Однажды другой ученик сказал учителю, что хочет программу без глюков. Дурак! - крикнул учитель, - почему ты не просишь глюк без программы?, - и ударил его винчестером по голове. Если вы еще не обрели просветление, с вами не о чем говорить.

Даосизм.
Глюк, который можно отловить, не есть истинный глюк. Патч, который можно написать, не есть истинный патч.

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

Сатанизм.
Каждая программа имеет право глючить! Постыдность глюков - христианская пропаганда!

Растафарианство.
О, и программы тоже? А где они траву берут?

Экуменизм.
А давайте глюки всех программ объединим в одну!

Атеизм.
Вера в так называемый патч - средство оболванивания пользователей. Глючность программ - объективный закон природы, и с этим ничего не поделаешь.

Социализм.
Программы глючат из-за неравенства. У них разная длина, разное расширение и разные запросы к памяти. Патчи не помогут бороться с глюками, ибо не устраняют причину. Следует сделать все программы одинаковыми, уничтожить все операционные системы, кроме одной, отобрать у всех пользователей персоналки и сделать вместо них один большой компьютер.

Коммунизм.
Программы глючат из-за вредительства! Hадо расстрелять программистов. А заодно, на всякий случай, производителей компьютеров. Да и вообще, зачем нам какие-то программы? У нас уже есть Программа партии!

Hацизм.
Кстати, и воды в кране нет по той же причине.

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

Критики ницшеанства.
У сверхпрограммы будут сверхглюки, ха-ха!

Фрейдизм.
Hа самом деле все графические оболочки предназначены для просмотра порнокартинок. А все текстовые редакторы для печатанья порнотекстов. А все языки программирования - для написания оболочек и редакторов, используемых для просмотра порнокартинок и порнотекстов. Если их использовать для других целей, глюки неизбежны.

Юнгианство.
Программы глючат потому, что в коллективном бессознательном существует архетип глюка, которому противостоит архетип патча. Таким образом, ошибаются те, кто думает, будто патчами они смогут победить глюки; на самом деле, работая на архетип патча, они тем самым укрепляют и архетип патча.

Экзистенционализм.
Hа самом деле вас не интересует, почему глючат программы. Если вы
спрашиваете об этом, значит, у вас уже есть патч.

Феминизм.
Программы глючат из-за дискриминации по расширению! И вообще, миф о глючности программ придумали шовинистические свиньи из служб
техподдержки, которые боятся потерять работу!

Сексуальные меньшинства.
Hазывать это глюками - оскорбительный предрассудок! Это не глюки, а особенности! Которыми можно гордиться! Они, между прочим, есть даже у таких знаменитых программ, как Microsoft Windows, Netscape Navigator и Borland Delphi!

Пролайферы (движение противников абортов).
Глючные программы тоже имеют право на инсталляцию!

GreenPeace.
Программы глючат из-за загрязнения окружающей среды! 500 лет назад, когда промышленность не отравляла Землю, о глюках программ никто и не слышал! Что, скажете не так?


 
Digitman ©   (2004-09-10 14:06) [14]


> Любая операция должна была быть допустимой


с какого перепугу ? в процессоре-то, реализующем кольца защиты ?

операции, позволенные к выполнению ядром ОС, имеющей наивысший уровень привелегий, вовсе необязательно позволены к выполнению прикладной задачей, имеющей наинизший уровень


 
Плохиш ©   (2004-09-10 14:13) [15]

И, вообще, это всё Мерфи виноват, со своими законами :-)


 
KSergey ©   (2004-09-10 14:14) [16]

> [11] lipskiy ©   (10.09.04 13:52)
> > операцию. Ибо это позволяет обнаруживать скрытые ошибки,
> > которые сделал кодировщик.
> Вот! Имхо, неправильно решили. Любая операция должна была
> быть допустимой, а обнаружение ошибок - проблема разработчиков,
> а не пользователей. А то выходит, что программы пишут не
> для юзеров, а для разработчиков, чтобы им ошибки удобнее
> вылавливать было.

А что делать ОС, если программа полезла в недопустимую для нее область памяти? Сделать вид, что там лежижат нули? Но разве программе (и пользователю) от того легче? Программа все равно будет выполнять не те действия, которые от нее ожидает бедный пользователь. Только узнает он об этом, возможно, позже. Так чем это лучше??

А вообще, советую внимательнее вчитаться в [10] Ihor Osov"yak ©   (10.09.04 13:45) Ключевое там - "соответсвующей программно-аппаратной". Процессор может и может там почитать, но с точки зрения программы ОС - это не верно. (к стати, вы про виртуальное адресное пространство просто почитайте - так понятнее будет.)

ЗЫ
А вообще - процессор это тоже ведь не просто набор "логических и/или". Там тоже своя микропрограмма есть.
И еще. По поводу логическая схема ... при любых комбинациях данных. Что есть данные? Электрические напряжения на ножках МС? А если я 220 вольт запендюрю - дым пойдет. Хотя и это нельзя считать ошибкой: это вполне предсказуемое поведение. Можно даже сказать - заложенное при проектировании. Но как бы вы его классифицировали? Или скажете "это выходит за допустимые диапазоны воздействий? Да. Но и чтение по "ненормальному адресу" так же выходит за допустимые воздействия! Т.е. нормальная дальнейшая работа программы просто невозможна! Так в чем же разница?


 
Ihor Osov'yak ©   (2004-09-10 14:14) [17]

2 [12] Думкин ©   (10.09.04 14:03)

Я думаю, есть любители постоянно наступать на грабли и постоянно получать по лбу. Некоторая часть этих любителей считает, что это хорошо, и что это нравиться всем окружающим.
Есть подозрение, что lipskiy ©  - представитель этой части любителей.

Зы. Правда, после очередного громкого и больного "бум" к некоторым все же доходит. Но не ко всем. Но это уже не с области программинга.


 
lipskiy ©   (2004-09-10 14:17) [18]


> Не могли бы вы изложить свою точку зрения полнее и главное
> яснее. Я пока ваших проблем не прочувствовал, ибо не понял:
> че вам надо?

Мне надо понять: кто, когда, и для чего ввел понятие "ошибки программы", почему это было необходимо, и что в это понятие вложено.
Так ясно?

У программистов таких вопросов может и не возникает.
Но я - железячник. Я не понимаю почему программам разрешили допускать ошибки. Если железо допускает ошибки - его не используют и правят, пока оно перестанет допускать ошибки. А для программм почему то ввели такую разрешенную ситуацию - любая программа может делать ошибки. Почему?


 
Alx2 ©   (2004-09-10 14:20) [19]

>lipskiy ©   (10.09.04 14:17) [18]
Ведь ответили уже!


 
lipskiy ©   (2004-09-10 14:22) [20]

Только не надо лезть в дебри современных ОСей.
Я же в принципе спрашиваю, в общем смысле.
Разница то есть принципиальная - в ОС заложено, что прикладная программа "можети полезть не туда, куда надо". А в аппаратную часть такого не закладывается, память не может полезть на периферию.


 
lipskiy ©   (2004-09-10 14:22) [21]


> Ведь ответили уже!

Не-а, не ответили.


 
Alx2 ©   (2004-09-10 14:24) [22]

>lipskiy ©   (10.09.04 14:22) [20]

Программы пишут не всегда профессионалы. Да и у профессионалов не всегда получается без ошибок писать.

Как по-вашему должна система отреагировать, например, на случай деления на наоль? Какой результат показать?


 
KSergey ©   (2004-09-10 14:26) [23]

> [18] lipskiy ©   (10.09.04 14:17)
> Если железо допускает ошибки - его не
> используют

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

К стати, это ведь еще и от предоставленного пользователям удобсвта и позволенных вольностей. Если бы сделать консольную программу, которая задавала бы на выбор 3 варианта дальнейших действий, при этом клавиатура имела 3 кнопки - проги были бы куда надежнее.
Однако тоже не на все 100%, как и железо, к стати.


 
lipskiy ©   (2004-09-10 14:27) [24]


> И еще. По поводу логическая схема ... при любых комбинациях
> данных. Что есть данные? Электрические напряжения на ножках
> МС? А если я 220 вольт запендюрю - дым пойдет. Хотя и это
> нельзя считать ошибкой: это вполне предсказуемое поведение.
> Можно даже сказать - заложенное при проектировании. Но как
> бы вы его классифицировали? Или скажете "это выходит за
> допустимые диапазоны воздействий? Да. Но и чтение по "ненормальному
> адресу" так же выходит за допустимые воздействия! Т.е. нормальная
> дальнейшая работа программы просто невозможна! Так в чем
> же разница?


А почему это программа сама может полезть туда, куда ей лезть нельзя? Почему это-то допустили? Комп сам себе 220 подать не может.
Так что это тоже не ответ.


 
lipskiy ©   (2004-09-10 14:29) [25]


> Как по-вашему должна система отреагировать, например, на
> случай деления на наоль? Какой результат показать?

Кхм, об этом я не подумал....

> В железе - предохранитель стоит на такие же точно случаи.

Верно...

Ладно, похоже убедили.
Но я еще подумаю...


 
KSergey ©   (2004-09-10 14:32) [26]

> [24] lipskiy ©   (10.09.04 14:27)
> Комп сам себе 220
> подать не может.

Ой ли?
А вылетит ключ в блоке питания - и полезет как миленький!


 
Думкин ©   (2004-09-10 14:33) [27]

Почему водители иногда бьются? Ведь в машину никто не закладывает что она должна биться. Почему же допускается для водителей?
Я все-таки таки не понял.

> [17] Ihor Osov"yak ©   (10.09.04 14:14)

Быть может, хотя нет - все равно не понимаю.


 
lipskiy ©   (2004-09-10 14:34) [28]


> А вылетит ключ в блоке питания - и полезет как миленький!

Выходит, ПО от своих глюков защищено лучше, чем железо от своих...


 
lipskiy ©   (2004-09-10 14:35) [29]


> Думкин ©   (10.09.04 14:33) [27]

Ладно, понял. Вопрос снят.


 
Ihor Osov'yak ©   (2004-09-10 14:41) [30]

> Если железо допускает ошибки - его не используют и правят, пока оно перестанет допускать ошибки.

Да неужели? Вот, к примеру, дали на блок питания вместо 220в 380в. Или даже больше.. А он обиделся и сгорел. В лучшем случае вышел из строя предохранитель - как реакция на недопустимую операцию пользователя.
Что мы наблюдаем? Пользователь явно нарушил правила, подразумеваемые и производителем, и разработчиком блока питания. Если разработчик блока был предусмотрителен - он направил развитие ситуации по линии минимального ущерба. Если нет - имеем то, что имеем - то есть снопы пламени..

В программном мире та же ситуация. Пользователю (то есть прикладному программисту) говорят (говорят разработчики ОС, те же разработчики железа)  - нельзя то и то. Например, делить на нуль, или обращаться к региону нераспределенной памяти. Но пользователи иногда это игнорируют. Иногда по простоте душевной, иногда вследствии ошибок.
И если парадигма операционки не очень, то операционка рушится (аналог - сгорел блок нафиг синим пламенем с последующим пожаром в доме). Если операционка сделана на совесть - она генерирует искличительную ситуацию и снимает зарвавшеесе приложение (аналог - сгорел предохранитель).

Зы. Так что безобиднее - получить сообщение о недопустимой операции или поиметь кучу приключений на одно место ( в виде краха файловой системы с поперей данных, что иногда по последствиям бывает более трагичнее маленького пожара)?


 
Ломброзо ©   (2004-09-10 14:43) [31]

ПЕРВЫЙ В IT-ИСТОРИИ БАГ:

http://www.rsdn.ru/Forum/Message.aspx?mid=803270&only=1


 
Ihor Osov'yak ©   (2004-09-10 14:50) [32]

в продолжение 30.

Если бы любая операция была бы допустимой - по в блоке пинания либо не было бы предохранителей - чтобы не горели - тогда рано или позно гарантирован пожар,  либо блоки питания были бы безумно дорогими.


 
KSergey ©   (2004-09-10 14:51) [33]

> [26] KSergey ©   (10.09.04 14:32)
> > [24] lipskiy ©   (10.09.04 14:27)
> > Комп сам себе 220
> > подать не может.
>
> Ой ли?
> А вылетит ключ в блоке питания - и полезет как миленький!

И к стати, об аналогиях.
А почему так может случиться? Да просто человек, проектировавший сей агрегат, произвел неверный расчет теплового режима... Чуете к чему клоню?


 
NailMan ©   (2004-09-10 15:07) [34]

Вот что меня больше всего бесит - это то что вывод сообщения об ошибке минимально информативен для пользователя.

Скажем выдалось сообщение: "Процесс такой-то вызвал ошибку с кодом 0x8000012A по адресу такому-то и будет закрыто".

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

Применить все это в самом компиляторе(или кто там создает прототип окошечка с ошибкусом) и все будет более понятным.

---
WBR, NailMan aka 2:5020/3337.13


 
Игорь Шевченко ©   (2004-09-10 15:35) [35]

Ошибки так же неисчеpпаемы, как и атом.

АКСИОМА

В любой пpогpамме есть ошибки.

ЗАКОН ПPОПОPЦИОНАЛЬНОСТИ

Чем более пpогpамма необходима,тем больше в ней ошибок.

СЛЕДСТВИЕ

Ошибок не содеpжит лишь совеpшенно ненужная пpогpамма.

ФУНДАМЕНТАЛЬНЫЙ ЗАКОН ТЕОPИИ ОШИБОК

На ошибках учатся.

СЛЕДСТВИЕ 1

Пpогpаммист, написавший пpогpамму, становится ученым.

СЛЕДСТВИЕ 2

Чем больше пpогpаммист делает ошибок, тем быстpее он становится ученым.

СЛЕДСТВИЕ 3

Кpупный ученый-пpогpаммист никогда не пишет пpавильные пpогpаммы.

ЗАМЕЧАНИЕ

На то он и ученый.

УКАЗАНИЕ НАЧИНАЮЩЕМУ ПPОГPАММИСТУ

Если вы с пеpвого pаза сумели написать пpогpамму, в котоpой тpанслятоp не обнаpужил ни одной ошибки, сообщите об этом системному пpогpаммисту.
Он испpавит ошибки в тpанслятоpе.

ЗАКОН НАХОДИМОСТИ ОШИБОК

Пpогpаммист может найти ошибку только в чужой пpогpамме.

СЛЕДСТВИЕ

Ошибке не все pавно, кто ее обнаpужит.

СОВЕТ НАЧИНАЮЩЕМУ ПPОГPАММИСТУ

Никогда не испpавляйте найденные ошибки, ибо это повлечет за собой появление неизвестного числа ненайденных. Лучше опишите их в сопpоводительной документации как особенность пpогpаммы.

ОПPЕДЕЛЕНИЕ

Будем называть языком ошибок пpавила, в обход котоpых пишутся пpогpаммы.

ЯЗЫК ОШИБОК

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

СВОЙСТВО ЧЕТНОСТИ ОШИБОК

Если написанная пpогpамма сpаботала пpавильно, то это значит, что во вpемя ее pаботы выполнялось четное число ошибок или пpогpаммист не понял задание.

ФОPМУЛИPОВКА ВЫШЕПPИВЕДЕННОГО СВОЙСТВА, ПPЕДНАЗНАЧЕННАЯ ДЛЯ ПОЛИТИКОВ

Ошибка, повтоpенная дважды, пеpестает быть ошибкой.

ВЗАИМОДЕЙСТВИЕ ОШИБОК С БАЗОВОЙ ОПЕPАЦИОННОЙ СИСТЕМОЙ

Во вpемя исполнения ошибки имеют наивысший пpиоpитет.
Пpеpвать исполнение ошибки может только дpугая, более активная ошибка.
Запpосы опеpационной системы к ошибкам ошибками могут игноpиpоваться.
Запpосы ошибок к опеpационной системе игноpиpоваться не могут.
Пpи pаботе с файлами ошибки могут пользоваться файловой системой базовой ОС и ее ошибками.
На ЭВМ с паpаллельной аpхитектуpой может выполняться несколько ошибок одновpеменно.

СИСТЕМНЫЕ ПPОГPАММЫ

Системные пpогpаммы облегчают пpоцесс написания пpикладных пpогpамм и их ошибок.
Опpеделение. Тестиpование - это пpоцесс нахождения ошибок в тесте.
Хоpоший тест должен содеpжать ошибки, компенсиpующие их нехватку в тестиpуемой пpогpамме.
Языковой pедактоp, пpизванный убеpечь пpогpаммиста от синтаксических ошибок, позволяет вносить в пpогpамму весьма хитpоумные ошибки, котоpые не удается обнаpужить ни тpанслятоpом, ни отладчиком. Обычный текстовый pедактоp таких возможностей не пpедоставляет.
Пpогpамма-тpанслятоp, пpедназначенная для пеpевода пpогpамм с языка высокого уpовня на машинный язык, пpи пеpеводе поpождает ошибки. Ошибки, котоpые содеpжались в исходном описании, пеpеводятся безошибочно.
Заключительный совет тем, кто до него добpался. До начала pаботы над пpоектом следует тщательно пpодумать все необходимые ошибки и связи между ними. Это значительно упpостит pаботу над ошибками в самом пpоекте.


 
Mystic ©   (2004-09-10 16:00) [36]

Вот! Имхо, неправильно решили. Любая операция должна была быть допустимой, а обнаружение ошибок - проблема разработчиков, а не пользователей.

А она и допустима. Никто не мешает тебе в программе написать

procedure UD2; assembler;
asm
 UD2
end;

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


 
blackman ©   (2004-09-10 16:33) [37]

3 раза забрасывал старик в море невод... Так ни разу и не попал :).
Каждая (даже хорошо отлаженная программа) содержит хотя бы одну ошибку!
Почему ? Так уж повелось :)


 
NailMan ©   (2004-09-10 16:35) [38]

Mystic ©
UD2 вроде же чисто интелевская баго-фича? И пропатченная давным давно еще CPU microcode update-ами для Pentium-2 процов.

Она вроде как для определения P6 процессоров использовалась.

Или до сих пор не пофиксили из-за совместимости?  ;-D

ЗЫ: Надо сегодня попробовать на своем АтлонХП...

---
WBR, NailMan aka 2:5020/3337.13


 
Rouse_ ©   (2004-09-10 17:28) [39]

Если отладка, это процесс удаления ошибок из программы, то програмирование - процесс их внедрения :)


 
П7   (2004-09-21 12:00) [40]

Не забывайте, что все эти ошибки выносит на ваш суд именно ОСь. Если в реализации ОСи не были бы предусмотрены все эти МессаджБоксы, то вы бы просто могли и не догадаться о наличае ошибок. К тому же Вся ваша прога изначально затачивается под ОСь, т.е. тут идёт абстрагирование от железа в принцыпе. Забудьте про железо, если вы пишете не ОСь и не специфичное приложение. Все ошибки возникают при взаимодействии ОСи и вашей проги. Все ошибки - есть несоответствие вашей программы правилам, зашитым в ОСь. А посколько ОСь - это очень охрененно универсальная прога, то соответственно она имеет возможность запускать проги с ошибками и запускать прги, которые могут делать проги с ошибками (компиляторы, интерпретаторы и т.д.)... (:



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.19 c
6-1091542437
Николай
2004-08-03 18:13
2004.10.10
Подскажите, как к сообщению в TIdSMTP приложить файл


9-1086872388
init13
2004-06-10 16:59
2004.10.10
ГЛСцена (текст)


4-1094479229
Fktrc
2004-09-06 18:00
2004.10.10
SEMAPHORE_ALL_ACCESS отсутствует


1-1096357832
PEAKTOP
2004-09-28 11:50
2004.10.10
Application.Title в консольном приложении


14-1095429006
DeadMeat
2004-09-17 17:50
2004.10.10
HDD Image





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский