В одной из предыдущих статей я подробно разбирал библейское пророчество о «метке зверя» и о ее назначении, изложенном в Откровении Иоанна Богослова. Статья вызвала на удивление бурный резонанс. Видимо, тема злободневная.
Теориям заговоров на эту тему нет числа, поэтому было бы бесполезно ставить цель разобрать их все: пока одну разберешь, выдумщики наплодят еще сотню.
И всё же сегодня я затрону один конкретный вопрос — штрих-коды на товарах широкого потребления в розничных магазинах.
Вроде такого:
Введение: зачем нужны штрихкоды
Если вы бывали в супермаркетах и знаете ответ, то можете пропустить этот раздел. А я на всякий случай расскажу.
Многим из нас знакома проблема очередей на кассе в магазине. Обычно кассиров можно пересчитать по пальцам одной руки, а покупателей в десятки раз больше. И все они ждут, терпят, пыхтят от духоты в своей уличной одежде. Хочется, чтобы это мучение в очередях закончилось побыстрее. А как можно быстрее обслужить покупателя, если необходимо учесть все его товары? Найти каждое наименование товара и соответствующую ему цену, посчитать итоговую стоимость…
И вот тут на помощь приходит система идентификации товаров. Когда ты легким движением подносишь товар к сканеру, а тот сразу определяет, что это за товар, и добавляет его стоимость в товарный чек покупателя.
Пик, пик, пик — готово, с вас 512 рублей. Следующий!
Обслуживание значительно ускоряется, и покупателям меньше ждать.
А руководство магазина может позволить себе меньше открытых касс 😃
Почему именно штрихкоды?
Высокая скорость обслуживания достигается благодаря электронным устройствам. Они не тратят много времени на размышления, а просто делают то, на что запрограммированы.
Однако написать программу для чтения числа — задачка не из легких: такая программа должна уметь безошибочно распознавать арабские цифры, которыми пользуются люди.
Гораздо проще и надежнее сделать сканер, который прочтет код из чередующихся черных и белых штрихов и расшифрует его по относительно несложному принципу. Компьютер быстрый, ему это легко.
Именно так и работает сканер штрихкодов: он читает узенькую горизонтальную полоску на упаковке товара, замеряет ширину штрихов и пробелов, выводит из них цифровой код и ищет соответствующий товар в базе данных магазина.
Однако не все рады такому нововведению. Существует прослойка религиозных людей, которые боятся штрихкодов, как огня. Об этом мы поговорим подробнее.
Где в штрихкоде может быть «число зверя»?
Если коротко — вот пара картинок с объяснением, как это представляют противники штрихкодов. Можете полистать.
Типичная шестерка выглядит как двойной тонкий штрих, и точно так же выглядят три длинных разделителя — в начале, в середине и в конце. Эти разделители есть в каждом штрихкоде и образуют «число зверя».
Выглядит страшно убедительно, не так ли?
Но я намерен провести собственное расследование и выяснить, точно ли это так на самом деле, или же мы упускаем какие-то важные нюансы.
Вы со мной? Тогда поехали!
Первым делом проверим…
Как кодируются шестерки в штрихкоде?
Чтобы ответить на этот вопрос, я пойду в Интернет и воспользуюсь помощью генератора штрихкодов. Через Гугл найти такой генератор нетрудно.
На большинстве розничных товаров ставят штрихкод EAN-13. Именно его я и буду создавать. А в качестве цифрового кода я наберу одни шестерки, чтобы лучше было видно.
Вот что у меня получилось:
Действительно, можно увидеть кучу двойных тонких штрихов — точно таких же, как три длинных разделителя. Выходит, это правда?
Но погодите. Обратите внимание на левую половину штрихкода. В ней почему-то видно жирные штрихи. Что они там делают? Ведь у нас в коде нет ничего, кроме шестерок. Откуда взялись жирные линии?
Чтобы ответить на этот вопрос, мы обратимся к государственному стандарту (ГОСТу), определяющему устройство штрихкодов.
Идем в ГОСТ
Нужный нам документ называется ГОСТ ISO/IEC 15420-2010. Если у вас много свободного времени, вы можете ознакомиться с этим документом самостоятельно по этой ссылке. А я покажу лишь то, что важно для нашего с вами исследования, по возможности ссылаясь на стандарт.
1. Штрихкод можно условно поделить на тоненькие полоски — модули. Ширина каждого штриха или пробела в штрихкоде равна 1, 2, 3 или 4 модулям (см. пункт 4.1c в стандарте).
2. Каждая цифра кодируется ровно семью модулями, которые вместе образуют два штриха и два пробела (см. пункты 4.1c и 4.2.2.1).
3. Кодирование каждой цифры возможно одним из трех способов, условно называемых A, B и C. Эти способы наглядно показаны в приложении D (на стр. 23 в стандарте, или стр. 28 в файле).
Здесь хорошо видно, что в коде каждой цифры модулей ровно семь и они образуют два штриха и два пробела той или иной ширины.
4. Цифры в правой половине штрихкода кодируются наборами типа C. Цифры в левой половине штрихкода кодируются наборами типа A и B (см. пункт 4.2.3.1).
5. Длинные пары штрихов, в которых усматривают «число зверя», называются шаблонами-ограничителями (см. пункт 3.8). У них есть свой способ кодирования — тремя или пятью модулями (см. стр. 24 в документе, или стр. 29 в файле):
И вот на этом месте я остановлюсь подробнее. Надеюсь, не утомил 😎
Рассуждение
Давайте возьмем способы кодирования шестерок и сравним их с нашим штрихкодом.
В наборе 6A вы можете видеть тот самый жирный штрих (из 4 модулей), который мы встречали ранее в нашем пробном штрихкоде.
А наборы 6B и 6C содержат те самые двойные тонкие штрихи, которых так боятся сторонники заговора.
А теперь посмотрим, где у нас шаблоны-ограничители:
Обратите внимание: в отличие от шаблонов-ограничителей, шестерки (в наборах 6B и 6C) содержат не только двойной штрих, но также пробел шириной аж в четыре белых модуля — слева или справа от двойного штриха. По стандарту ни один разделитель не предусматривает такого большого пробела.
Технически, шестерки и ограничители кодируются по-разному.
Путаница между ними возникает из-за того, что человек глазами видит черные штрихи, но не берет в расчет пробелы! И не замечает, что на самом деле это разные элементы.
Но разве это что-то меняет?
Сторонник теории заговора может возразить: ну и что с того? Разве на штрихкоде нет белого пространства?
Действительно, посмотрите на крайние ограничители.
Белое пространство слева и справа от штрихкода — это не случайность, оно предусмотрено стандартом и называется «свободные зоны» (см. пункт 4.2.3.1 в стандарте).
Середина
А теперь посмотрите на центральный ограничитель. Возле него нет пробелов шириной в четыре модуля — ни слева, ни справа:
Более того, если вы вернетесь к рисунку D.1, который был выше, то увидите, что абсолютно все цифры из наборов A и B при кодировании заканчиваются штрихом, а не пробелом. А все цифры из набора C начинаются со штриха.
Наборы A и B используются слева от среднего ограничителя.
Набор C — справа от среднего ограничителя.
Таким образом, какие бы цифры ни стояли возле среднего ограничителя, он всегда оказывается зажат между двумя штрихами, и возле него в принципе не может быть пробела шириной в четыре модуля.
Следовательно, средний ограничитель не может соответствовать шестерке: ни 6B, ни 6C. Это просто двойная полоска.
Заключение
Шестерка на штрихкоде — это не просто двойная полоска. Это двойная полоска с большим пробелом. И если крайние ограничители еще похожи на шестерки, то средний в принципе не может соответствовать ни одной из них.
Боящиеся этих ограничителей, по сути, боятся не шестерок, а двойных полосок. Потому что невооруженный глаз распознаёт в них три одинаковых предмета.
Но с тем же успехом человек мог бы бояться любых других трех предметов. Например, три рубашки в шкафу. Мысленно заменяем их на шестерки — и получаем 666. Или три личности: Отец, Сын и Святой Дух. Заменяем их на шестерки — и получаем 666… Это можно продолжать бесконечно.
Давайте же будем благоразумны.