yms: (Default)
Michael Yutsis ([personal profile] yms) wrote2005-08-30 02:23 pm

(no subject)

Абстракция потенциальной бесконечности применительно к программированию: в любой сколь угодно отлаженной программе есть хотя бы один баг.

[identity profile] reznik.livejournal.com 2005-08-30 11:35 am (UTC)(link)
Да-да. Каждая последняя ошибка на самом деле является предпоследней.

[identity profile] grzegorzrus.livejournal.com 2005-08-30 11:46 am (UTC)(link)
Есть более продвинутый вариант -
1) в любой программе есть как минимум одна ошибка,
2) любую программу можно сократить на один байт.

Вывод -
любая программа эквивалентна одной неработающей инструкции...

(2) не верно

[identity profile] d0tcom.livejournal.com 2005-08-30 11:58 am (UTC)(link)
опровергающий пример (текст несокращаемой программы):
int 20h;

Re: (2) не верно

[identity profile] yms.livejournal.com 2005-08-30 12:05 pm (UTC)(link)
Не опровергающий, а подтверждающий. Int - запрещенная инструкция и немедленно вызовет ексепшн. Вот она, как минимум одна ошибка.

Уточняю

[identity profile] d0tcom.livejournal.com 2005-08-30 12:10 pm (UTC)(link)
Это был пример на ассемблере (заголовки я забыл, чтобы сразу получился ком-файл, что-то вроде org 100h) для ДОС
К сожалению, под винду я на ассемблере не писал и поэтому не знаю, как выйти минималистким образом из программы, очевидно, что код Си main(){} создаст не самый маленький загружаемый модуль, а в досе нельзя написать просто 90h или программу нулевой длины, обязательно должен быть выход. Выход по 20 прерыванию самый короткий (можно ведь и фар джампы использовать).

Re: Уточняю

[identity profile] yms.livejournal.com 2005-08-30 12:24 pm (UTC)(link)
Я в курсе, но времена ДОС давно прошли. Впрочем, самый короткий выход - по инструкции RET (1 байт), и вполне может быть, что это справедливо и для Win32.

я ж говорю

[identity profile] d0tcom.livejournal.com 2005-08-30 12:41 pm (UTC)(link)
есть последний байт, который сократить нельзя
мне почему-то казалось что int 20h влезет в один байт, но подумав, что прерываний как раз на байт...
так что Ваш пример как раз тот, что я имел в виду

На до же

[identity profile] d0tcom.livejournal.com 2005-08-30 12:51 pm (UTC)(link)
я сделал a.com длиной в 1 байт и содержимым 90h -- работает! А нулевой длины ругается, что не является приложением WIn32.

Re: На до же

[identity profile] yms.livejournal.com 2005-08-30 01:20 pm (UTC)(link)
А что он должен, подвешивать машину? :))
Тут любая ерунда так "заработает", это ж не дос...

любая ерунда

[identity profile] d0tcom.livejournal.com 2005-08-30 01:25 pm (UTC)(link)
таки вызывает эксепшн, например, 20хекс (пробел)

Re: любая ерунда

[identity profile] yms.livejournal.com 2005-08-30 02:11 pm (UTC)(link)
У меня ничего не вызывает...

[identity profile] maksa.livejournal.com 2005-08-30 12:13 pm (UTC)(link)
Помнится, был у меня двухбайтовый com-файл с содержимым EA FF. Работал просто замечательно.

сделайте файл с

[identity profile] d0tcom.livejournal.com 2005-08-30 12:59 pm (UTC)(link)
содержимым 32h (попросту цифра 2 в текстовом редакторе) -- один байт и работает!
Только что?

[identity profile] runtime.livejournal.com 2005-08-30 08:50 pm (UTC)(link)
Это так называемое реальное программирование. Берется некоторое представление произвольного вещественного числа и записывается в качестве кода программы. В некоторых случаях, например для pi, может потребоваться кодогенератор. Для конкретной архитектуры можно говорить о разнообразных свойствах вещественных чисел. Класс чисел, которые являются недопустимыми на первом прогоне. Числа, которые вызывают исключение через некоторое время. Числа, которые никогда не вызывают исключения (завершение программы считается исключительной ситуацией времени выполнения). Числа, которые печатают на экране число 2 и т.п.

и т.п.

[identity profile] d0tcom.livejournal.com 2005-08-31 07:04 am (UTC)(link)
а есть ли числа, которые печатают Войну и Мир?

и т.д.

[identity profile] runtime.livejournal.com 2005-08-31 09:27 am (UTC)(link)
Содержание текста не имеет значения большего, чем последовательность букв.

Ну почему

[identity profile] d0tcom.livejournal.com 2005-08-31 09:31 am (UTC)(link)
ведь любую программу можно удлинить безотносительно к её работоспособности
просто добавлять в конце пробелы или точки

[identity profile] d0tcom.livejournal.com 2005-08-31 09:47 am (UTC)(link)
.

[identity profile] ziegel.livejournal.com 2005-08-30 12:45 pm (UTC)(link)
я видел программы, не содержащие ни одного исполняемого байта (заголовки для загрузчика не в счет). Драйвер коврика мыши, например. Или ruki.sys для OS/2. И что же? Работали они с ошибками!