Що таке COBOL і чому так багато установ покладаються на нього?

Нещодавно губернатор штату Нью-Джерсі публічно згадав про COBOL – мову програмування, якій вже 60 років. Але що це таке? І чому вона досі є наріжним каменем фінансового світу, попри те, що мало хто вміє нею користуватися?

Виникнення COBOL

Грейс Хоппер була неординарною особистістю. Вона отримала докторський ступінь з математики в Єльському університеті, викладала у Вассарському коледжі та досягла звання контр-адмірала у Військово-морських силах США. Її внесок у комп’ютерну галузь підтверджується численними фондами та програмами, створеними на її честь. Національний науково-обчислювальний центр енергетики назвав її ім’ям суперкомп’ютер Cray XE6. Крім того, ВМС США назвали на її честь есмінець USS Hopper. Девіз корабля “Aude et Effice” (“Наважся і роби”) чудово відображає характер самої Хоппер.

Прагнучи створити мову програмування, яка була б ближчою до природної англійської, ніж машинний код, Хоппер розробила перший компілятор. Це відкрило шлях для компільованих мов, таких як FLOW-MATIC. Це також забезпечило їй місце в Комітеті з мов систем даних (CODASYL) у 1959 році.

Вона відіграла ключову роль у створенні та розвитку Загальної мови, орієнтованої на бізнес (COBOL). Перше засідання відбулося 23 червня 1959 року, а у квітні 1960 року був опублікований звіт і специфікація мови COBOL.

COBOL – проривна технологія

COBOL мав кілька інноваційних концепцій. Однією з найважливіших була можливість працювати на обладнанні різних виробників, що було безпрецедентним на той час.

Мова була складною і використовувала майже англійську лексику для програмістів. Її розробили для обробки великих обсягів даних та забезпечення виняткової математичної точності.

Лексика мови складається з близько 400 зарезервованих слів. Програмісти поєднують ці слова у синтаксично правильні конструкції для створення програм.

Будь-який програміст, знайомий з іншими мовами, підтвердить, що 400 – це дуже велика кількість зарезервованих слів. Наприклад, мова C має 32, а Python – 33.

Ще однією особливістю COBOL є жорстка вимога, щоб певні рядки програми починалися з певних стовпців. Це відголосок епохи перфокарт. Сьогодні програмісти мають більшу свободу у форматуванні коду COBOL, і їм більше не потрібно вводити все великими літерами. Це робить роботу з мовою менш обтяжливою, але вона все ще відображає дух своєї епохи, як видно з прикладу нижче:

IDENTIFICATION DIVISION.
    PROGRAM-ID. Hello-World.
      DATA DIVISION.
      FILE SECTION.
      WORKING-STORAGE SECTION.
      PROCEDURE DIVISION.
      MAIN-PROCEDURE.
           DISPLAY "Hello world, from How-To Geek!"
           STOP RUN.
      END PROGRAM Hello-World.

Популярність COBOL

Більшість транзакцій у банкоматах досі використовують COBOL.

Хоча сьогодні COBOL може здаватися громіздким, на момент своєї появи це була революційна технологія. Він став популярним у фінансовому секторі, федеральному уряді та великих корпораціях. Це пояснювалося його масштабованістю, можливостями пакетної обробки та математичною точністю. COBOL був встановлений на мейнфреймах по всьому світу, прижився і продовжує функціонувати. Його виявилося важко витіснити.

Наша залежність від систем, що працюють на COBOL, вражає. Звіт Reuters за 2017 рік містить такі приголомшливі статистичні дані:

Сьогодні використовується 220 мільярдів рядків коду COBOL.
COBOL є основою 43 відсотків усіх банківських систем.
Системи на базі COBOL обробляють 3 трильйони доларів щоденної торгівлі.
COBOL обробляє 95 відсотків усіх операцій з картками банкоматів.
COBOL забезпечує 80 відсотків усіх транзакцій з кредитними картками у фізичних торгових точках.

Як бачите, важко прожити день, не використовуючи систему, яка залежить від COBOL. Банківські рахунки, послуги обробки чеків, а також державна інфраструктура, така як банкомати та світлофори, досі працюють на коді, написаному багато десятиліть тому.

COBOL – проблема сьогодення

Програмісти, які знають COBOL, або вже на пенсії, або збираються піти на пенсію, або, на жаль, їх вже немає з нами. Ми постійно втрачаємо спеціалістів, які могли б підтримувати ці критично важливі системи. Молоді програмісти не знають COBOL. Більшість з них також не зацікавлені працювати з системами, які вимагають підтримки застарілого коду або написання нового.

Ситуація настільки серйозна, що Білл Хіншоу, ветеран COBOL, був змушений залишити пенсію і заснувати компанію COBOL Cowboys. Ця приватна консалтингова фірма обслуговує корпоративних клієнтів, які відчайдушно шукають програмістів COBOL. “Молоді люди” в COBOL Cowboys (чиїм девізом є “Це не наше перше родео”) – це люди за 50. Вони вважають, що 90 відсотків бізнес-систем зі списку Fortune 500 працюють на COBOL.

Звичайно, приватні компанії, корпорації та банки не єдині, хто потребує обробки величезних обсягів фінансових даних. Федеральні, регіональні та місцеві органи влади мають такі ж вимоги. Як і всі інші, вони використовують мейнфрейми та COBOL.

Пандемія коронавірусу спричинила величезні труднощі, втрати та економічну невизначеність для бізнесу, працівників та самозайнятих. Через величезну кількість звільнень і вимушених відпусток у Нью-Джерсі губернатор звернувся до досвідчених програмістів COBOL, щоб допомогти із застарілими внутрішніми системами штату, які не справляються з 326 000 новими заявками на допомогу по безробіттю.

Відкритий проект мейнфрейму проводить волонтерську ініціативу допомоги. Якщо ви вважаєте, що можете допомогти, вони будуть раді почути від вас.

Нью-Джерсі не єдиний, хто зіткнувся з цією проблемою. Понад 10 мільйонів людей подали заявки на допомогу по безробіттю, і ця цифра постійно зростає. Коннектикут намагається обробити чверть мільйона нових заяв на державних системах, яким вже 40 років.

Це поширена і глибоко вкорінена проблема. Звіт Рахункової палати США за 2016 рік перераховує системи COBOL, що працюють на мейнфреймах, яким до 53 років. Сюди входять системи, які використовуються для обробки даних, пов’язаних з Департаментом у справах ветеранів, Міністерством юстиції та Управлінням соціального забезпечення.

Чому не оновити системи?

Оновлення цих застарілих систем – не така проста справа, як може здаватися. Ці системи є критично важливими, постійно діючими опорами, на яких тримається фінансовий, урядовий та бізнес-світ. Код старий, багатошаровий і, часто, погано або зовсім недокументований. Він має працювати постійно. Це порівнюють зі спробою замінити двигуни літака на реактивні під час польоту.

Крім ризику, економічний аспект переходу на сучасні системи також є складним. Кошти, витрачені на забезпечення роботи мейнфреймів та програм COBOL, вражають. Чи повинні установи викинути все це і почати з нуля, поки цей код COBOL все ще функціонує? Це складний крок для керівництва, яке може не мати достатньої технічної підготовки. Перехід з COBOL не буде дешевим або швидким.

“Я щойно брав участь у конверсії з COBOL на Java”, – сказав Хіншоу. “На це знадобилося чотири роки, і процес ще не завершений“.

Коли Commonwealth Bank of Australia у 2012 році замінив свою основну платформу COBOL, на це пішло п’ять років і 749,9 мільйонів доларів (1 мільярд австралійських доларів).

І це якщо все йде за планом. Британський банк TSB був змушений здійснити перехід зі системи на базі COBOL у 2018 році через поглинання. Все пішло не так, як планувалося. Оскільки банк не міг проводити транзакції протягом кількох днів, вартість міграції склала 330 мільйонів фунтів стерлінгів. Це не враховуючи витрат на розробку самої міграції. TSB також втратив 49,1 мільйона фунтів стерлінгів через шахрайство, поки його системи були нестабільними.

Виплати клієнтам перевищили 125 мільйонів фунтів стерлінгів, а банку довелося витратити 122 мільйони фунтів стерлінгів на наймання нових співробітників для обробки 204 000 скарг клієнтів. Генеральний директор пішов у відставку, і компанія досі не оговталася від збитків через два роки після інциденту.

Загадка COBOL

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

Щоб досягти цього без збоїв, втрати даних та простоїв, потрібні сучасні знання та фінансування – це 50 відсотків успіху. Інша половина – досвід роботи з COBOL і час. На жаль, ці два ресурси наближаються до вичерпання.

Можливо, незабаром з’явиться нове покоління “ковбоїв COBOL”.