Backend

COBOL – fakty i mity. Prześwietlamy legendarny język programowania

COBOL to proceduralny język programowania, który powstał w 1959 roku na zlecenie Departamentu Obrony Stanów Zjednoczonych. COBOL jest akronimem, rozwijającym się do COmmon Business Oriented Language. Nazwa ta przekłada się na założenia, jakie były brane pod uwagę przy tworzeniu tego języka. Miał on być w pełni zrozumiały dla ludzi zajmujących się biznesem.

historia cobol

Kamil Kościesza. Mainframe Competence Manager w BEC Poland. Zainteresowanie programowaniem i finansami skierowało go na obecną ścieżkę kariery, 29-latka zafascynowanego technologią i językiem, który jest ponad dwukrotnie starszy od niego. Pięć lat doświadczenia na kilku różnych systemach bankowych, których wspólną cechą jest COBOL i Mainframe. Jako Competence Manager zajmuje się szeroko pojętym rozwojem kompetencji Mainframe’owych w BEC Poland, wiąże się to między innymi z rekrutacjami, szkoleniem pracowników, jak i śledzeniem trendów.


Do dziś COBOL jest używany tam, gdzie mamy do czynienia z dużą ilością transakcji i ustrukturyzowanymi danymi, między innymi w sektorze finansowym, ubezpieczeniowym, produkcyjnym, logistycznym czy handlowym.

Działanie COBOL-a

COBOL nie jest językiem obiektowym (chociaż w 2002 roku wprowadzono taką możliwość). Pracujemy w nim na rekordach. Nieważne, czy mówimy o odczycie danych z pliku, z bazy danych, integracji z frontendem czy wywołaniu innego programu COBOLowego. Za każdym razem będziemy przetwarzać jakiś rekord, a struktura zmiennych pozwoli nam na manipulacje całym rekordem, dowolnie zdefiniowaną jego częścią, bądź każdym pojedynczym znakiem.

Bardzo istotnym elementem przy rozważaniu o COBOLu jest sprzęt, na którym większość kodu jest wykonywana. Są to komputery klasy Mainframe, stworzone, żeby w sposób bezpieczny i stabilny przetwarzać ogromne ilości transakcji.

Cytując Rosalind Radcliffe (Chief Architect for DevOps, IBM), “po co wydawać mnóstwo pieniędzy i tracić czas na stworzenie niezawodnego oprogramowania odpornego na działanie na zawodnym systemie, skoro można po prostu używać niezawodnego systemu”. Te słowa padają nie bez przyczyny. Znalezienie instalacji mainframe’owej, która jest w 100% dostępna od kilku bądź kilkunastu lat nie jest niczym niezwykłym. I to nie dlatego, że nie jest aktualizowana, bądź sprzęt nie jest wymieniany, a dlatego, że architektura tego rozwiązania pozwala na aktualizacje, bądź wymianę sprzętu bez utraty dostępności.

COBOL – Fakty i mity

COBOL od 62 lat wiedzie prym jeśli chodzi o rozwiązania biznesowe, wiedzie on również od dłuższego czasu prym w ilości stereotypów, mitów a wręcz memów na swój temat. Przyjrzyjmy się niektórym twierdzeniom.

1. To wymierający język

Szacuje się, że ponad 200 miliardów linii kodu COBOLowego jest obecnie w użyciu na produkcji. Około 43% banków na świecie, w tym 96 ze 100 największych, i 95% transakcji kartą płatniczą jest obsługiwana przez COBOLa. Do tego dochodzi fakt, że ponad 70% firm Fortune 500 dalej korzysta z COBOLa. Całkiem sporo jak na “wymierający język”.

Dołóżmy do tego kolejną ciekawostkę – komputery klasy mainframe obsługują średnio 30 miliardów transakcji biznesowych dziennie. Liczba ta wydaje się ogromna i odrealniona, natomiast jeśli się jej przyjrzymy, biorąc pod uwagę informację, że w BEC obsługujemy około 2,5 miliona klientów i zdarza nam się wykonywać 80-90 milionów transakcji dziennie, 30 miliardów operacji w skali świata nie powinno budzić większego zdziwienia.

2. Cobol jest trudny/Nie da się go nauczyć

Jest to wrażenie, które można było odnieść, próbując znaleźć jakieś materiały szkoleniowe, lub wertując popularne źródła wiedzy typu Stack Overflow. Wpisując tag COBOL na SO znajdziemy zawrotne 1471 pytań, gdzie dla porównania dla Javy jest to 1 771 886 pytań. Albo programiści COBOLowi wszystko wiedzą, albo… i tu dochodzimy do pewnego ciekawego zjawiska.

Jak łatwo się domyślić, duża grupa programistów uczyła się tego języka dawno temu, co też oznacza, że reprezentują oni inną kategorię wiekową niż średnia w pozostałych technologiach. W związku z tym nie poszukują oni wiedzy na SO, tylko na forach internetowych, jak to się kiedyś robiło. Na szczęście ta sytuacja zaczyna się zmieniać ze względu na napływ młodszych programistów.

Początek pandemii wpłynął bardzo pozytywnie na ogólną dostępność materiałów szkoleniowych z COBOLa. Wszystko dzięki nagłośnieniu sytuacji z New Jersey, gdzie nie można było złożyć wniosków o bezrobotne ze względu na “przeciążenie” systemu napisanego w COBOLu (koniec końców okazało się, że to system front-endowy nie wytrzymywał obciążenia, ale co się głośno zrobiło o COBOLu to jego).

3. COBOL działa tylko na Mainframie

Jakkolwiek by to nie zabrzmiało w obecnych czasach, COBOL od samego początku został stworzony jako język przenośny. Może być on więc używany na Windowsie, Linuxie, UNIXie, Mainframie czy na macOS.

Nieco więcej o kompilacji znajdziecie w tekście o COBOL-u na Prima Aprilis.

4. Rozbudowana składnia

Tak, COBOL ma rozbudowaną składnię. Taki był też zamysł tego języka od samego początku – tworzyć samodokumentujący się i czytelny kod. Obecnie przy pisaniu w innych technologiach i stosując się do zasad czystego kodu również piszemy w sposób bardzo rozbudowany.

cobol fakty

Nie jest to jedyny aspekt, w którym COBOL wyprzedził swoje czasy. Każdy program pisany w tym języku jest de facto micro-serwisem i w taki sposób były projektowane aplikacje. Do tego dochodzi możliwość skalowania infrastruktury on-demand, kiedyś uaktywniając nieaktywne/nie opłacane procesory, a dzisiaj w ramach rozwiązania hybrydowego przy użyciu datacenter IBMa.

5. Spaghetti code

Jest to często pojawiający się wniosek ze względu na istnienie polecenia GO TO. COBOL jest jednym z wielu języków, które takie polecenie posiada, jest również jednym z wielu języków, w którym takie polecenie jest nieużywane, bądź wręcz zakazane w prekompilatorze.

6. Praca w Cobolu to praca na czarnym ekranie

Kolejną rzeczą, z którą kojarzy się COBOL, jest czarny terminal z charakterystycznym zielono-turkusowym tekstem. Nic dziwnego! Do pewnego momentu nawet “GUI” aplikacji było czarnym terminalem. Jest to już odległa przeszłość, w większości aplikacji GUI w CICS (Customer Information Control System) został zastąpiony integracjami z front-endem w innych technologiach, a sam CICS jest używany jako transakcyjny serwer aplikacyjny.

Po stronie programisty również nastąpiła ewolucja, a nawet rewolucja. Zamiast pracy w edytorze ISPF w terminalu mamy do wyboru kilka IDE od IBMa (IDz, RDz, Wazi Workspaces), Topaz od BMC czy otwartoźródłową integracje z Visual Studio Code przy użyciu Zowe. Do tego dochodzi nam pełen pipeline DevOpsowy, używający standardowych narzędzi wykorzystywanych w innych technologiach. To wszystko ma na celu zmniejszenie różnicy między pisaniem aplikacji w Cobolu i w innych technologiach.

cobol fakty i mity

Źródło IBM

Podsumowanie

Wszystko to brzmi ciekawie, ale po co w 2021 roku skupiać się na języku z 1959 roku? Z bardzo prostego powodu: Cobol jest używany i rozwijany w systemach krytycznych wielu instytucji i dużych firm. Język ten w najbliższej przyszłości do nikąd się nie wybiera z kilku powodów:

  • jest to technologia, która radzi sobie we wzorowy sposób z zadaniami, do których została stworzona,
  • firmy cały czas inwestują w infrastrukturę w postaci najnowszych systemów Z.

Na koniec warto zauważyć, że wykonana w prawidłowy sposób migracja z tego języka do innych technologii jest operacją bardzo kosztowną, wręcz nieopłacalną, a jakiekolwiek próby używania narzędzi do automatycznego tłumaczenia kodu powodują powstawanie nadmuchanego kodu o tej samej strukturze tyle, że używającego nowszego języka.

Czego możemy się zatem spodziewać w przyszłości?

Najprawdopodobniej dalszych rozwiązań hybrydowych, w których aplikacje cobolowe będą dalej procesować dane transakcyjne a rozwiązania w nowszych technologiach będą wspierać integrację. Dodatkowo warto zauważyć, że wraz z wprowadzeniem IBM Z15 i dużym rozwojem Z Linux One, Mainframe zyskał możliwość pisania na niego aplikacji cloud-native, co ma być krokiem do bycia konkurencyjnym względem AWSa, Azura czy Google Cloud.


Zdjęcie główne artykułu pochodzi z unsplash.com.

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://geek.justjoin.it/cobol-fakty-i-mity-przeswietlamy-legendarny-jezyk-programowania/" order_type="social" width="100%" count_of_comments="8" ]