de scud pro код ракеты
Делаем копию карты-пропуска по фото
Однажды мне срочно понадобилось попасть в один бизнес-центр с пропускной системой в виде турникетов, открывающихся при помощи карт-пропусков. Человек, у которого находился в этот момент пропуск, был далеко, передать мне его он не мог, а оформление новой карты в силу бюрократических особенностей заняло бы много времени.
С чем мы имеем дело
Итак, человек с пропуском находится далеко, считывателя для бесконтактных карт у него с собой конечно же нет, но есть телефон, на который можно сделать фотографию карты.
По фото карта была опознана как EM-Marin, она же EM4100. Эти бесконтактные карты работают на частоте 125 КГц и содержат номер (далее — ID) размером 40 бит или 5 байт, который записывается на карту еще на заводе и не может быть изменен. Какой-либо защиты от чтения или копирования в них нет. Для создания дубликатов этих карт используются заготовки T5577 и EM4305, которые свободно продаются.
Перезаписываемые карты-болванки выглядят как обычная пустая пластиковая карта в форм-факторе кредитки, а не перезаписываемые (с прошитым на заводе серийным номером) чуть толще и на лицевой стороне у них нанесен текст, состоящий из нескольких групп десятичных цифр. Встречаются и карты в виде брелков.
Для записи таких карт потребуется соответствующий копировщик. Я использую Proxmark3, но можно взять любой другой, который может работать с T5577 и позволяет ввести ID карты вручную. Или же вовсе использовать эмулятор, тогда можно обойтись без болванок.
Карта не имеет своего источника питания, оно поступает со считывателя «по воздуху», как в беспроводных зарядках. Считыватель генерирует электромагнитное поле, карта улавливает его через антенну и включается. Далее карта модулирует поле и начинает циклически передавать свой ID, который улавливается считывателем, связь при этом односторонняя.
Как именно передаются данные с карты: сперва идет преамбула из 9 бит «1», затем передается 1 байт Version Number, 2 байта Facility Code и 2 байта уникального номера карты, периодически следуют биты контроля четности. Взято по ссылке, там кстати еще неплохое описание протокола (на английском).
В самом простом варианте построения СКУД считыватель сам является контроллером доступа – сравнивает ID карты с номерами в памяти и принимает решение об открытии замка или турникета. В системах посложнее он отправляет эту информацию на контроллер по какому-либо интерфейсу.
Эксперимент
Итак, на карте нанесены некие цифры. Было логично предположить, что это и есть ее ID. Для того, чтобы это выяснить, я взял данные аналогичной карты, получилось следующее:
После преобразования ID из HEX в DEC, получилось 317840976040, что не похоже на цифры с карты. Спойлер: если бы я сделал наоборот, и конвертировал цифры с карты в шестнадцатеричный формат, то я добился бы успеха сразу, но тогда эта статья была бы не такой содержательной 🙂
Размышляя над тем, что еще оно может значить, я вспомнил, что Proxmark помимо ID карты показывает еще кое-какие данные:
Из кода выше становится ясно, что эти числа – части ID карты:
0013396136 (DEZ 10) – первые 4 байта, если считать от младшего к старшему.
204.26792 (DEZ 3.5C) – третий байт отдельно (он же Facility Code) и непосредственно 2 байта серийного номера карты.
Таким образом, по цифрам на карте можно восстановить часть ее ID. Но как быть, если известны 4 байта, а требуется 5? И если четвертый байт имел значение 0 на всех считанных мной картах, то пятый байт всегда ненулевой. Перебирать этот байт в конкретном случае не вариант — не хочется вызывать подозрения у охраны.
Тут я вспомнил, что СКУД в этом бизнес-центре установлен достаточно давно, поэтому я предположил, что там может использоваться для передачи данных популярный, но устаревший Wiegand-26. Этот протокол предназначен для связи считывателя с контроллером, и позволяет передавать за одну посылку 24 бита данных и 2 бита четности, итого 3 байта полезной нагрузки. Это означает, что ID карты не передается полностью и неизвестный пятый байт никак в идентификации не участвует и может быть рандомным.
Стоит отметить, что некоторые современные считыватели все же читают и сравнивают старший байт карты, в таком случае придется перебирать 255 комбинаций, но это можно сделать за приемлемое время, особенно если использовать эмулятор.
Ну что же, теперь осталось проверить на практике все изыскания выше. Для создания копии карты я взял заготовку T5577 и записал на нее полученный ID (пятый байт — случайный):
Получилась почти полная копия карты с фото, отличается только старший байт. Для уверенности можно еще раз ввести команду lf search и проверить, совпадают ли DEZ 10 и DEZ 3.5C с цифрами на оригинальной карте.
После этого я записал уже преобразованный аналогичным образом ID нужного мне пропуска.
Как и ожидалось, карта считалась корректно, турникет щелкнул, мигнул зеленым индикатором.
Пост-скриптум
Если вы отвечаете за безопасность, то скорее всего, все описанное в этой статье не будет для вас новостью. В противном случае все же не стоит преждевременно рвать волосы на теле. Проблема кроется в том, что данный формат карт изначально не обеспечивает высокого уровня безопасности. Эти карты не поддерживают каких-либо механизмов аутентификации и шифрования, следовательно могут быть скопированы в любой момент подходящим считывателем. На серьезных объектах, таких как банки, дата-центры и хранилища ядерных боеголовок, вместо EM-Marin применяются более защищенные форматы карт (по крайней мере, хочется в это верить). Например, это семейство MIfare, где карты разделены на сектора с индивидуальными ключами чтения и записи, а некоторые карты этого стандарта поддерживают даже алгоритм шифрования AES. Ну и не стоит забывать про дополнительные методы контроля доступа.
В любом случае, не копируйте чужие карты без согласия их владельцев.
De scud pro код ракеты
Мод для управления всеми самолетами в игре. Детализированные 3D модели и HD текстуры всех самолетов и кабин. Новые кабины для транспортников и старых самолетов. Новые страны. Реалистичная перезарядка для всех ЛА. Проходит проверку целостности в сетевой игре (в том числе на В-З).
ИНСТРУКЦИЯ ПО УСТАНОВКЕ:
Ставим на чистую версию игры через MODMAN. Нажимайте ДА на все сообщения программы. В Модмене будет показано желтым частично установлен, это нормально.
Можно ставить на версию с патчем. Последовательность установки:
1) установка игры
2) установка патча
3) установка мода
ЧТО НОВОГО В ВЕРСИИ 4.1:
— Добавлен без замены БРДМ-2 9П148.
— Добавлен без замены САУ А-222 Берег.
— Возврат Крымских аэродромов, теперь дороги на Кавказе работают.
— Изменен цвет шасси Су-25, Су-25Т.
— Возвращены оригинальные окраски Су-25Т
— Теперь можно поставить двухместный Ф-16 без потерь окрасок.
— Возвращена окраска Небесные Гуссары для Су-25.
— Теперь в кабинах Су-25, Су-25Т виден ПВД.
— Добавлен реалистичный дым для прикосновения шасси к земле и технике.
— Исправлена локализация файлов.
— Убраны ПТБ на 1150л для МиГ-29 (его не видно другим, баг из 1-mod 4.0)
— Теперь большинство новых стран имеют английскую озвучку, а не русскую. (Т.е Австрия говорит теперь на английском и т.п).
— Новые модели для МиГ-29 и Ми-8МТ.
— Вернулись старые текстуры для МиГ-29 без замены (липецк,кубинка и пр..).
— Добавлен новый корабль CVN-77 George Bush, CVN-71 Roosevelt.
— Добавлены текстуры для кораблей США.
— Добавлены новые звуки.
— Возможность вернуть все замененные самолеты (инструкции внутри мода).
— Добавлены несколько сетевых миссий.
— Исправлены некоторые баги из мода 4.0.
ЧТО НОВОГО В ВЕРСИИ 4.0:
СПИСОК УПРАВЛЯЕМЫХ САМОЛЕТОВ В 1 МОД 4
Су-15 | 17 | 24М | 24МР | 25 | 25Т | 27 | 30 | 33 | 34 | 35С | 37 | 39 | 47
Миг-21 | 23 | 25ПД | 25РБТ | 27 | 29К | 29С | 29СМТ | 31 | 35
L-39 | Ил-76 | Ил-78 | А-50 | Як-40 | Ан-26 | Ан-30
Ту-22М3 | Ту-95МС | Ту-142 | Ту-160
F-4E | F-5E | F-14 | F-15C | F-15E | F-16C | F-18A | F-18C | A-10A
Alpha Jet | Mirage-2000 | Eurofighter | Tornado | Harrier | RQ-1A
Boeing 707 | KC-10A | KC-135R | C-17 | E-3A | E-2C | B-52 | B-1B | C-130 | S-3B
J-7 | J-8F | J-10
В моде заменены 10 самолетов из числа непопулярных. Вы сможете быстро и просто вернуть любой замененный самолет, удалив или переименовав всего 3 файла. Нигде ничего прописывать не надо. Все подробности внутри мода.
НАСТРОЙКА УПРАВЛЕНИЯ ДЛЯ НОВЫХ САМОЛЕТОВ В 1 МОД ВЕРСИЯ 4
Су-35 _________ Su-27
Су-37 _________ Su-33
Су-39 ________ Su-25T
Миг-21 _______ F-16A
Boeing 707 ____ EA-6B
F-15E _________ F-111
L-39 __________ F-117
Alpha Jet _____ F-117
Су-47 _________ MiG-25RBT
MiG-25RBT ____ MiG-25
Миг-35 ________ MiG-29A
Миг-29СМТ ___ MiG-29G
Су-15 __________ Su-24MR
Su-24MR _______ Su-24M
A-7E __________ Su-25TM (или Su-39)
KC-135R _______ Ил-78
Eurofighter ____ Tornado GR3
J-7 ____________ F-5E
J-8 ____________ Su-24MR
J-10 __________ Tornado GR3
КАК НАСТРОИТЬ ДЖОЙСТИК НА ВСЕ САМОЛЕТЫ РАЗОМ
ПОЧЕМУ ВЫЛЕТАЕТ ИГРА ПРИ РЕАРМЕ Ту-160, МиГ-25, L-39 и др?
Меню перезарядки таких самолетов будет красного цвета, чтобы сразу привлечь ваше внимание (см скрины). Эти самолеты нельзя заряжать без Миссл мода. Мод устанавливается отдельно, так как не проходит проверку целостности в сетевой игре на некоторых серверах. Список проблемных самолетов: Ту-160, МиГ-25ПД/РБТ, Су-47, L-39C, F-111, F-15E, F-117, B-52, B-1B, S-3B, С-130, EA-6B, RQ-1A Predator
masterok
Мастерок.жж.рф
Хочу все знать
LC-31 Minuteman missile on launch pad
По современным голливудским боевикам мы знаем, что для запуска ракет необходимо выполнить много сложных действий, в том числе и ввести код запуска, который зачастую состоит из сложного набора букв и цифр. Но в жизни все оказывается гораздо проще.
Во времена Карибского кризиса на вооружении США стали использоваться ядерные ракеты Minuteman. Каждая из таких ракет несла заряд от 300- 500 килотонн в тротиловом эквиваленте и должна была быть защищена от несанкционированного пуска восьмизначным кодом — за этим лично следил министр обороны США Роберт Макнамара.
Макнамара не знал одного …
… Стратегическое командование ВВС в Омахе еще до него установило на всех ракетах Minuteman один и тот же секретный код — восемь нулей. На протяжении последующих 17 лет этот код не менялся. Его даже не скрывали и печатали прямо на пусковых инструкциях для каждой ракеты. Лишь в 1977 году американских ракетчиков заставили перейти на реальные защитные коды, на чем так настаивал МакНамара. До этого момента любая мало-мальски вооруженная группа людей могла запустить неограниченное количество ядерных ракет, используя код, который может подобрать даже обезъяна.
Часть ядерной мощи США было расположено на территории других государств с нестабильной политической ситуацией, за действия которых были большие опасения. Кеннеди предусматривал возможность свержения правительства в таких странах, и в таких ситуациях любой человек не должен был осуществить запуск ракеты. Кроме того, без защитной системы PAL любой командир по своему собственному желанию мог начать третью мировую войну.
«В нашей инструкции перед запуском фактически говорилось о том, что мы должны проинформировать бригаду, дважды проверить закрытие люка подземного бункера и убедиться, что никакие другие цифры кроме нулей не были случайно набраны на операционной панели» — признаётся бывший офицер ВВС Брюс Г. Блэр.
Видео запуска последней версии ракеты — Minuteman III:
Хочу все знать о северокорейской ракетной программе
Джеффри Льюис написал об этом подробную статью в прошлом году, объясняя происхождение этих маркировок для Китая, СССР и КНДР. Однако, насколько мне известно, не существует полного списка достижений северокорейского ракетостроения применительно к маркировке KN, так что я восполню этот пробел.
Приношу благодарность Большому Зубриле (автор имеет в виду главного специалиста по ДНЯО Скотта Лафоя — Прим. пер.) за то, что он помог мне превратить мою безумную писанину в полноценную статью в блоге. Делая это, я надеюсь восполнить пробел в открытых источниках и удовлетворить мою навязчивую страсть к спискам и номенклатурам. Это как сбить две ракеты одним перехватчиком, или некоторые другие максимы зубрил. Моя благодарность тем, кто помогли подтвердить некоторые из этих находок (особенно Анкиту Панде, который, бесспорно, является лучшим источником по наименованиям северокорейских ракет).
В этой статье перечислены ракеты KN с индексами 1-20 с отсылками для другие наименования для большей ясности. Некоторые примечания: я скомпилировал этот список по данным из открытых источников, которые порой бывают противоречивы (например, нет четкой идентификации для KN-10, помимо прочего). Я постараюсь обозначить все неоднозначности по мере их появления, и я буду стараться обновлять этот список по мере появления новых обозначений. Кроме того, этот список в основном задуман как справочник, а не как энциклопедия. Для большинства этих систем уже существует превосходный анализ, а вооружившись корректной маркировкой, вы теперь будете знать, с чего начинать поиски.
Как сообщает Анкит, правительство США обозначает как KN-01 корабельный вариант русской противокорабельной крылатой ракеты Х-35, впервые опробованной в феврале 2015 года. Новая наземная буксируемая пусковая установка для этой системы известна как KN-19. Чтобы ещё больше всех запутать, в открытых источниках KN-01 часто называют вариант советской противокорабельной ракеты П-15 «Термит» с увеличенной дальностью или китайскую Хайин-2. Однако, учитывая то, что маркировка KN началась в середине 1990-х годов, Термит и Хайин-2 будут слишком старыми, чтобы оправдать такую маркировку. Ракета Х-35, с другой стороны, подходит по срокам намного лучше. Впервые она была опробована в 2003 году, а KN-02 была впервые опробована два года спустя. Джеффри выдвигает гипотезу, что несколько расплывчатые ранние упоминания о тестах Х-35 в качестве противокорабельной ракеты до 2003 года привели к предположениям, будто это был намного более старый Термит или Хайин-2, что может объяснить такое расхождение.
Альтернативные названия: Хвасон-11, Токса, Viper
Это, пожалуй, самая непонятная марка. Под KN-04 понимают ракеты Р-17ВТО (9К72-1), которые начали всплывать в корейских и американских репортажах в середине 2000-х годов. Имея дальность в диапазоне примерно 700-1000 км, они являются естественным развитием предшествующих Р-17 и Р-17М и имеют немного меньший размер, чем Нодон. К вящей путанице, KN-04 также известна как Скад-ER, и она порой представлена как отдельная ракета (на самом деле это одно и то же). Кроме того, сообщает Анкит, по неизвестной причине правительство США имеет для нее другое обозначение: Скад-2. Потому что все любят сиквелы, да?
Альтернативные названия: ER-Scud, Scud-ER, Scud-D, Scud 2
Маркировка KN-05 крайне редко встречается в открытых источниках — да и бог с ней, нам все равно нужна передышка после разборок с KN-04. См. также примечание в конце списка по поводу недостающих индексов.
KN-06 — зенитная управляемая ракета (ЗУР) большой дальности, которая была впервые показана на военном параде 2010 года. Она имеет сходство с российской ракетой системы ПВО С-300 и стартует с пусковой установки, оснащенной радаром — в данном случае это грузовой автомобиль КАМАЗ с колесной формулой 6×6 с подключенной фазированной РЛС. Было объявлено, что массовое производство начнется после испытаний в конце мая 2017 года.
Альтернативные названия: Pongae-5
KN-07 — еще одна неведома зверушка. См. примечание в конце списка.
KN-08 — МБР на ПГРК, в настоящее время в стадии разработки. Макеты трехступенчатой версии KN-08 мы впервые увидели на военном параде 2012 года и затем в 2013 году. Когда они были показаны снова в 2015 году, новые макеты показали, что KN-08 была сокращена до двух ступеней. Этот вариант был обозначен как KN-14.
Альтернативные названия: Хвасонг-13, Нодон-C
Несмотря на первоначальные сообщения о том, что KN-09 может быть обозначением для северокорейского варианта русской пусковой установки крылатых ракет Х-35, похоже, что KN-09 на самом деле относится к системе реактивной артиллерии калибра 300 мм. Сообщается, что KN-09 имеет дальность до 200 км и пусковую установку, которая несет восемь ракет в два ряда по четыре ракеты.
Это оказался крепкий орешек. Единственное упоминание о KN-10 я видел в проекте Висконсин, где написано, что это улучшенная версия KN-02 с дальностью 220 км, впервые обнаруженная на испытательном запуске в августе 2014 года. Однако, я немного сомневаюсь, что полностью новое наименование может быть дано той же ракете со слегка увеличенной дальностью. Я думаю, более вероятно, что под KN-10 подразумевается нечто совершенно отдельное — см. примечание в конце списка.
KN-11 — это покамест наиболее красиво окрашенная ракета, однозначно (кому-то всерьез пора запилить статью в стиле Buzzfeed с ракетами КНДР, упорядоченными по крутизне). Первые успешные летные испытания по навесной траектории состоялись в августе 2016 года. KN-11 — это двухступенчатая твердотопливная БРПЛ с оценочной дальностью стрельбы в пределах 500—2500 км. Сухопутный БРСД-вариант KN-11 называется KN-15 (см. ниже). Трехмерная модель доступна здесь.
Альтернативные названия: Pukkuksong-1 (Поларис-1)
KN-12 — это северокорейская РСЗО. Она несет сорок 122-мм ракет на двух кассетах по 20 ракет.
KN-13 — этот номер пропускаем из суеверия. А также потому, что в открытых источниках по этому номеру ничего нет. См. также примечание в конце списка.
KN-14, впервые замеченная в 2015, — это двухступенчатая версия ракеты KN-08. Сокращенный и упрощенный дизайн навел Дэйва Шмерлера, Джеффри Льюиса и Джона Шиллинга на оценку дальности в 9000 км с облегченной боеголовкой примерно 400 кг.
Альтернативные названия: KN-08 mod 2, ранее ошибочно называлась Хвасон-14 (KN-20)
Сухопутный вариант БРПЛ KN-11, двухступенчатая твердотопливная мобильная БРСД впервые успешно облетана в феврале 2017 с буксируемой ПУ. KN-15 может иметь холодный старт, это означает, что ракета выстреливается из контейнера сжатым воздухом, после чего срабатывает зажигание. После второго успешного испытания в мае 2017 года Ким Чен Ын заявил, что KN-15 готова к массовому производству.
Альтернативные названия: Pukkuksong-2 (Поларис-2)
KN-16 — это еще одна РСЗО, на этот раз из 22 240-мм ракет на двух кассетах по 11 ракет. Мы видели ее на фестивале чучхе в 2017 г. с закрытыми контейнерами.
KN-17 — это жидкостная МБР, впервые показанная на фестивале чучхе в 2017 году и успешно прошедшая летные испытания 14 мая по навесной траектории. Вероятнее всего она одноступенчатая (хотя это не подтверждено). Дальность оценивается как 3700-4500км, и это ПГРК с пусковой установкой на базе МАЗа, аналогично ракете Мусудан.
Альтернативные названия: Хвасон-12
KN-18 — это одноступенчатая жидкостная ракета, потомок Р-17М (Scud-C) с маневрирующей головной частью, которая может быть предназначена для преодоления систем ПРО и нанесения точечных ударов по поверхности или потенциального поражения морских целей (хотя это чрезвычайно сложно ввиду наличия защитных систем типа ISR). Потенциальное применение по морским целям породило сперва некоторый ажиотаж по поводу KN-18 в качестве ПКР. Кроме того, ее раньше ошибочно именовали KN-17, которой оказалась ракета Хвасон-12. Для этой ракеты существует трехмерная модель.
KN-19 — это наземная версия KN-01, встроенная в комплекс береговой охраны, впервые опробованная в июне 2017 года. Наземная пусковая установка также была показана в апреле 2017 на фестивале чучхе, где мы видели буксируемую установку в морском камуфляже с четырьмя пусковыми контейнерами.
Альтернативные названия: Кумсон-3
Большая рыба. KN-20 — это двухступенчатая МБР, которая была протестирована в День Независимости США, хотя технический анализ Джона Шиллинга из группы Север-38 показывает, что в этой ракете фактически очень мало нового. Двигатель заимствован у KN-17, а вторая ступень ракеты имеет ряд сходств с KN-08. По последним расчетам Дэвида Райта ее дальность превышает 10 000 км, угрожая таким городам, как Чикаго, Бостон, Нью-Йорк, и потенциально Вашингтон.
Альтернативные названия: Хвасон-14
Что не охвачено?
Как вы могли заметить, есть номера без ракет, а именно: KN-05, KN-07, KN-10, KN-13.
Количество вариантов ракетного вооружения КНДР значительно превышает число присвоенных номеров KN, поэтому недостающие цифры могут соответствовать практически чему угодно: космической ракете-носителю Ынха-3? ЗУР Pongae-6? И не забывайте, что у нас еще есть контейнеры, сделанные под DF-31 и «Тополь-М», которые мы видели на #JucheFest2017, но так до сих пор и не опознали.
Как я уже говорил, этот список собирает данные из открытых источников. Если Вы знаете что-то, о чем не знаю я, пожалуйста, свяжитесь с нами. Ну а пока что приятной вам зубрежки.
Примечателен также комментарий, который оставил к этой записи некто Владимир Хрусталев:
Luna — Hwasong-1 《화성-1》
Luna-M (FROG-7) — Hwasong-3 《화성-3》
SCUD-B — Hwasong-5 《화성-5》
SCUD-C — Hwasong-6 《화성-6》
Rodong/Nodong — Hwasong-7 《화성-7》
SCUD-ER — Hwasong-9 《화성-9》
KN-02 — Hwasong-11 《화성-11》
http://www.neams.ru/real-name/
Для удобства данный справочник сведен в результирующую таблицу:
COBOL жив! Что? Да!
Раскрываем секреты бессмертия. Разбираемся, что происходит со старичком Коболом в 2021 году, кому и почему он ещё нужен.
Говорят, если некстати упомянуть Кобол в приличном обществе, то можно прослыть некрофилом. Однако же год назад про этот язык программирования вспомнили многие.
Что случилось?
Во всём виновата пандемия коронавируса. Из-за неё выросла нагрузка на американские службы занятости: слишком уж много людей сразу подавало онлайн-заявки, чтобы получить дополнительные государственные выплаты.
Вот только позднее выяснилось, что виноват был вовсе не Кобол: проблема была в промежуточной прослойке, написанной на Java. В итоге запросы просто не добирались до бэкенда на COBOL.
Фулстек-разработчик. Любимый стек: Java + Angular, но в хорошей компании готова писать хоть на языке Ада.
Что это за Кобол такой
Первая версия языка увидела свет в 1959 году, ещё до появления массовых персональных компьютеров.
И в то время, и сейчас программное обеспечение на Коболе работает в основном на мэйнфреймах. Если не вдаваться в подробности, то это огромные, мощные и отказоустойчивые железки. Правда, так обстоят дела сегодня, а в шестидесятые, чтобы программе хватало ресурсов, приходилось вручную управлять памятью и считать каждый байт — даже на мэйнфреймах. COBOL давал достаточно средств для гибкого управления памятью. Теперь о подобной экономии уже мало кто задумывается.
Кобол крут в финансах
В результате повторяющихся вычислений с плавающей точкой накапливаются значительные ошибки округления. Настолько значительные, что это может стоить жизни: так, в 1991 году система управления зенитно-ракетным комплексом Patriot неправильно рассчитала время, поэтому не смогла перехватить иракскую ракету Scud. В результате погибли 28 человек, а около ста получили ранения.
Подобные ошибки — боль для большинства языков.
Особо критичны они при работе с финансами. Так, чтобы реализовать денежные операции в банковских программах на Java, программисты пишут отдельные классы для сумм и здорово заморачиваются с правилами округления.
COBOL от этого избавлен:
Эти особенности делают Кобол оптимальным для работы с денежными суммами: число цифр после запятой одинаковое и заранее известное, операции с целыми числами в памяти дают быстрый предсказуемый результат, округлением управляет программист, а не реализация арифметико-логического устройства в конкретной модели процессора.
«Hello, Cobol world!»
Но известен (в узких кругах) язык не точностью вычислений, а своей многословностью и многобуквенностью.
В Коболе сотни зарезервированных слов. Для сравнения: в двенадцатой версии Java их всего 53.
Матерью, а иногда и бабушкой Кобола называют Грейс Хоппер — американскую учёную и контр-адмирала флота США. Она считала, что программы должны быть понятны не только кодерам, но и людям со стороны бизнеса — управленцам, то есть тем, кто за приложения платит.
Кроме того, на полноценном, «незашифрованном» языке легче научиться писать любому, кто этого хочет (ладно, всё же нужно знать английский).
Вот, например, программа на FORTRAN — ещё одном старом языке:
В ней используются функции, названия которых непосвящённым скажут мало.
А это предложение на Коболе:
И уже можно догадаться, что оно рассказывает о вычислении социальных выплат и округлении суммы до центов.
Естественный порядок слов без сокращений — это одна сторона медали. Всё, конечно, становится понятнее, но поглядите, как многабукаф!
Усугубим. Раз уж мы заговорили на Коболе — поздороваемся с миром на нём:
Чтобы вы оценили масштаб бедствия — то же самое на Python:
Почему же именно на COBOL спустили всех собак?
Первый очевидный ответ — да потому что он древний! Его считали устаревшим ещё в восьмидесятые годы, что уж говорить про наше время. Над ним смеются, его приверженцев называют динозаврами. Его критикуют все кому не лень. Небезызвестный Дейкстра и вовсе заявил: «COBOL калечит ум, поэтому обучение этому языку должно наказываться по закону».
В вину несчастному Коболу ставят даже его избыточную понятность. Среди программистов ходит шутка: «Если код трудно написать, то и читать его должно быть не легче». А если код написан так, что его способен понять и ваш начальник-ламер, то, может, ваши навыки не так уж уникальны и ценны? Неприятное ощущение 😏
Если серьёзно, в Коболе и правда нет многих привычных нам (по более новым языкам) вещей: в нём нельзя динамически распределять память, нет доступа к низкоуровневым функциям операционной системы. Большинство версий языка даже не поддерживают рекурсию. В общем, вряд ли вам захочется писать на нём компилятор.
КАЗНИТЬ, нельзя помиловать
На первый взгляд (ладно, на второй и третий тоже) кажется очевидным, что Кобол — это такой всемирный технический долг, а весь код на нём нужно переписать на другие языки, используя лишь современные подходы и технологии.
Некоторые так и поступают — например, Австралийский банк Содружества. Но даже у него — крупнейшего банка страны — переход занял пять лет. А обошлась такая перестройка примерно в 750 млн долларов. Это больше годового бюджета государства Сан-Марино.
Казнить нельзя, ПОМИЛОВАТЬ
Есть и другая точка зрения: «работает — не трогай».
Конечно, сама мысль, что ПО на древнем языке может быть не хуже, а то и лучше чего-то современного, расходится с принципами Кремниевой долины. Стартапу не похвастать тем, как стар их продукт, иначе не видать ему венчурных инвестиций. Напротив, легче продать свежее и смелое, инновационное. Но, как скажет вам любой программист, чем код новее, тем больше в нём ошибок.
В этом плане у COBOL большая фора — код на нём отлаживался десятилетиями. Для банков и правительственных учреждений стабильная работа крайне важна: из-за любой ошибки реальные люди могут потерять свои реальные деньги. Добавим к этому риску стоимость замены программного обеспечения (о чём говорилось выше) — и поймём, почему COBOL до сих пор востребован и почему это вряд ли изменится в ближайшее время.