magic number



Предыдущая | Следующая
magic number (магическое число) [[[UNIX]] /Си], сущ 1. Безымянная константа в исходном тексте программы, которая используется не по имени, задаваемому с помощью директивы препроцессора #def ine, а напрямую по значению (см. hardcoded). В таком значении магические числа являют собой пример дурного стиля программирования 2. Число, используемое в некоторых алгоритмах для кодировании данных. К классическим примерам можно отнести магические числа в алгоритмах хэшировании, подсчета CRC (cyclic redundancy check, контроль циклическим избыточным кодом), а также коэффициенты в линейных конгруэнтных генераторах случайных чисел. И хотя сегодня магическими числами принято называть константы в значени 1, своим появлением термин обязан именно этим алгоритмам 3. Записанное в самом начале двоичного файла число, которое интерпретируется утилитой как идентификатор типа файла. В операционной системе UNIX многие системные и прикладные программы (особенно загрузчик) именно по магическому числу определяют тип исполняемого файла. Давным-давно такое магическое число представляло собой код инструкции PDP-11, по которой происходил переход на начало исполняемого кода, в обход заголовка файла. Например, восьмеричное число 0407 означало «прыгай вперед чере 16 байтов». В наши дни только волшебники (см. wizard) знают заклинания, с помощью которых создаются магические числа. Не верите? Тогда попробуйте самостоятельно выбрать магическое число для своей программы.