COBOL (akronim odang. common business-oriented language) – wysokopoziomowyjęzyk programowania stworzony i używany do tworzenia aplikacji biznesowych. COBOL jest językiem imperatywnym, proceduralnym, oraz od 2002 roku,obiektowym.
Język ten w znacznym stopniu nadal używany jest w aplikacjach systemów typumainframe, wymagających przetwarzania danych na wielką skalę, zarówno wtrybie wsadowym, jak i online. Typowymi obszarami zastosowania są bankowość, ubezpieczenia, służba zdrowia, transport, jak również systemy rządowe i militarne[1].
W ostatnich latach zauważalny jest stopniowy spadek znaczenia COBOL-a w tworzeniu nowych aplikacji. Większość wykonywanych prac programistycznych związana jest z utrzymaniem i rozwojem aplikacji istniejących[2]. Z uwagi na jego malejącą popularność oraz mniejszą podaż programistów COBOL-a, część programów migrowana jest na nowe platformy, przepisywana na nowsze języki bądź zastępowana nowymi pakietami oprogramowania. Niemniej COBOL nadal odgrywa znaczącą rolę w obszarze aplikacji biznesowych na świecie.
COBOL został zaprojektowany w 1960 roku przezGrace Hopper. Projektując COBOL korzystała ona z autorskiego kompilatora FLOW-MATIC, nad którym pracowała w 1952 roku, oraz z programu COMTRAN firmyIBM[3]. Ze względu na swój znaczny wkład w rozwój COBOL-a Hopper jest nazywana „babcią COBOL-a”[4]. Jego powstanie było skutkiem prób stworzenia przez Departament Obrony USA przenośnego języka programowania wykorzystywanego do przetwarzania danych. Powstał jako rozwiązanie tymczasowe, ale Departament Obrony USA wymusił na producentach komputerów jego stosowanie i przez to w krótkim czasie język został rozpowszechniony.
COBOL ustandaryzowano w 1968 roku i od tego czasu był ulepszany cztery razy. Rozszerzenia dotyczyły wsparcia programowania obiektowego oraz strukturalnego. Obecnym standardem jestISO/IEC1989:2014[5].
Składnia COBOL-a opiera się na języku angielskim i została zaprojektowana tak, aby kod był czytelny oraz łatwy w dokumentowaniu (samodokumentujący się). Język jest rozbudowany pod względem składniowym i używa ponad 300 zarezerwowanych wyrazów.
Współczesne języki programowania korzystają ze zwięzłej składni, np.
natomiast COBOL posiada składnię zbliżoną do języka angielskiego, w tym przypadku:
Kod w COBOL-u podzielony jest na cztery działy (ang. division) (identification,environment,data orazprocedure), posiadające hierarchiczną strukturę sekcji, paragrafów, zdań i instrukcji.
Kiedy tworzono COBOL akademicy i teoretycy informatyki nie wykazywali zainteresowania rozwojem aplikacji biznesowych, w związku z czym nie uczestniczyli w jego kreacji. Został on zaprojektowany jako język przetwarzania danych gospodarczych, przez co później był krytykowany przez środowiska akademickie.
W późnychlatach 50., użytkownicy i wytwórcy komputerów zaczęli niepokoić się rosnącymi kosztami tworzenia oprogramowania. Przeprowadzona w 1959 roku ankieta wykazała, że przy jakiejkolwiek instalacji przetwarzania danych koszt programowania wynosi przeciętnie 800 000USD, a przetłumaczenie istniejącego oprogramowania, które umożliwiłoby uruchomienie kodu na nowym sprzęcie, kosztowałoby kolejne 600 000 USD. Ta sama ankieta zasugerowała, że jeśli wykorzystany zostałby język zorientowany biznesowo, konwersja byłaby tańsza i szybsza. Program stworzenia takiego języka został w 1959 roku zorganizowany i zasponsorowany przezDepartament Obrony Stanów Zjednoczonych[1].
Pierwsza definicja COBOL-a stworzona została w 1960 roku przez komitetCODASYL (ang. Conference on Data Systems Languages). Za rozwój kolejnych standardów odpowiedzialny byłAmerican National Standards Institute (ANSI), który to wyprodukował kolejno trzy standardy: ANS 68, ANS 74 oraz ANS 85. Odpowiedzialność za rozwój następnych standardów spoczęła na ISO. ISO 2002 – pierwszy standard wyprodukowany przez to ciało – zdefiniował pierwszą zorientowaną obiektowo wersję COBOL-a[1].
Poszczególne standardy wprowadziły następujące udoskonalenia do języka
- COBOL ANS 68 – rozwiązał problem niekompatybilności pomiędzy różnymi wersjami COBOL-a
- COBOL ANS 74 – wprowadził komendę CALL oraz możliwość użycia zewnętrznych podprogramów
- COBOL ANS 85 – wprowadziłprogramowanie strukturalne oraz wewnętrzne podprogramy
- COBOL ISO 2002 – wprowadził programowanie zorientowane obiektowo
- COBOL 2014
COBOL posiada składnię podobną do języka angielskiego. Używana jest ona do opisywania niemal wszystkiego w programie. Na przykład warunek może zostać wyrażony:
lub bardziej zwięźle:
lub jeszcze bardziej:
Bardziej złożone warunki mogą być „skrócone” poprzez usunięcie powtarzalnych wyrażeń I zmiennych, np.:
Może zostać skrócone do:
W konsekwencji rozbudowanej składni COBOL posiada ponad 300 słów kluczowych (zarezerwowanych).
Każdy program w COBOL-u zawiera cztery podstawowe elementy leksykalne: słowa, literały, symbole (ang.picture character-strings, zobacz:PICTURE clause) oraz separatory. Słowa zawierać mogą słowa zarezerwowane oraz identyfikatory zdefiniowane przez użytkownika. Mogą mieć długość do 31 znaków oraz zawierać litery, cyfry, myślniki i podkreślenia. Literały to cyfry (np.12) oraz ciągi znaków (np.'Hello!')[6]. Separatory zawierają spacje, przecinki oraz średniki.
Podstawowym elementem strukturyzującym program w COBOL-u jest dywizja. W każdym programie wyróżnia się 4 dywizje:identification,environment,data orazprocedure. Dywizjaidentification określna nazwę oraz element źródłowy. W dywizji tej wyspecyfikowane są również klasy i interfejsy. Dywizjaenvironment określa wszystkie elementy programu, które zależą od systemu, na którym działają, takie jak pliki i zestawy znaków. Dywizjadata służy do deklaracjizmiennych i parametrów. Dywizjaprocedure zawiera polecenia. Każda dywizja jest podzielona na sekcje, które składają się z paragrafów[1][7].
Krytycy COBOLa zarzucają mu brak struktury. Zarzut ten odnosi się przede wszystkim do tak zwanegokodu spaghetti, przyczyną powstania którego jest z kolei wykorzystywanie komendyGOTO (komenda ta używana jest do przechodzenia po programie w przód i wstecz, w sposób który sprawia, że logika programu staje się trudna do zrozumienia). AktualnieGOTO w dużej mierze zastępowane jest komendąPERFORM oraz procedurami, których zastosowanie znacząco niweluje ten zarzut.
Krytyce poddawana jest również zbyt rozbudowana i szczegółowa składnia. Zwolennicy twierdzą jednak, że pozwala ona na samodokumentowanie się kodu, co ułatwia jego utrzymanie. Z założenia COBOL miał być również łatwy do opanowania, a jednocześnie czytelny dla osób bez zaplecza technicznego np. menedżerów. W rzeczywistości COBOL nie jest łatwy do opanowania, a jego gramatyka jest kontekstowa[8] i znacznie skomplikowana.
Kolejnym zarzutem jest izolacja wspólnoty COBOLa od reszty społeczności informatycznej. W 2013 sondaż Micro Focus wykazał, że 20% pracowników naukowych uczelni oraz 55% studentów uważało COBOLa za język przestarzały lub martwy. Ten sam sondaż wykazał jednak również, że tylko 25% kadry nauczało programowania w COBOL-u, mimo iż aż 60% uważało, że powinni go uczyć. Tymczasem w 2003 roku COBOL obecny był w 80%systemów informatycznych w Stanach Zjednoczonych, w takim samym stopniu, jak C++ i Java[9].
COBOL, a dokładniej jego struktury danych, w znacznym stopniu wpłynął na inne języki programowania takie jakPL/I czyPascal. Jawne definiowanie struktur poprzedziło rozwój systemów zarządzania bazami danych i do dziś uważane jest przez wielu praktyków za wygodne i efektywne podejście do definiowania typów zmiennych.
COBOL jest językiem programowania z ponad 64-letnią historią. Aktualnie wielu postrzega go jako zaszłość, bez realnego znaczenia dla współczesnego świata. W rzeczywistości pomimo swojego wieku COBOL odgrywał bardzo istotną, jeśli nie dominującą, rolę w świecie biznesu[1]. Pomimo swojego wieku COBOL wciąż pozostaje jednym z 20 najpopularniejszych języków programowania według tabeli TIOBE INDEX (dane z marca 2025 roku)[10].
Programy napisane w COBOL-u nadal używane są na całym świecie, w instytucjach rządowych oraz biznesowych i działają na licznychsystemach operacyjnych takich jakz/OS,VME,Unix,OpenVMS orazWindows. W 1997 GrupaGartner wydała raport, który wykazał, że 80% światowego biznesu działało na COBOL-u, przy prawie 200 mld linii kodu i 5 miliardami linii pisanymi rocznie. Stworzona w 1996/7 Java nie zdołała przyćmić pozycji COBOL-a.
W wydanym w 2005 roku raporcie Gary Barnett zaznaczył, że „COBOL pozostaje najpowszechniej stosowanym językiem programowania w dużych przedsiębiorstwach, odpowiadając za 75% wykonywanych transakcji komputerowych” oraz „90% wszystkich transakcji finansowych[11]. W 2006 i 2012, ankietyComputerworld wykazały natomiast, że ponad 60% organizacji wykorzystuje COBOL-a bardziej niżC++ iVisual Basic .NET oraz że dla połowy z nich COBOL używany jest w większości wewnętrznych systemów[12].
Pomimo szerokiego wykorzystania, nadal wywierana jest presja, aby zastąpić istniejący kod COBOL bardziej nowoczesną alternatywą. Spowodowane jest to przede wszystkich wysokimi kosztami utrzymania, przestarzałym sprzętem i oprogramowaniem oraz konieczność integracji z bardziej nowoczesnym oprogramowaniem, jak również niedoborem programistów COBOL. Niestety większość prób modernizacji, które zawierają w sobie wymianę kodu napisanego w COBOL-u kończy się niepowodzeniem.
IDENTIFICATIONDIVISION.PROGRAM-ID.HELLO-WORLD.PROCEDUREDIVISION.DISPLAY'Hello, World!'.STOPRUN.
- ↑abcdeMichaelM. Coughlan MichaelM.,Beginning COBOL for Programmers . Brak numerów stron w książce
- ↑Robert L.R.L. Mitchell Robert L.R.L.,Cobol: Not Dead Yet . Brak numerów stron w książce
- ↑Navarro 2023 ↓, s. 118–120.
- ↑Navarro 2023 ↓, s. 120.
- ↑„ISO/IEC 1989:2014”. ISO. 26 May 2014. Retrieved 7 June 2014.
- ↑ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.3.1.2.
- ↑RichardR. L.Conner RichardR.,„Cobol, your age is showing”. Computerworld . Brak numerów stron w książce
- ↑Języki kontekstowe i automat liniowo ograniczony. Maszyna Turinga | Informatyka MIMUW [online], smurf.mimuw.edu.pl [dostęp 2025-06-12] .
- ↑COBOL and Legacy Code as a Systemic Risk | naked capitalism.
- ↑TIOBE Index [online], TIOBE [dostęp 2025-03-21] (ang.).
- ↑„An interview: Cobol defender”. Computerworld., 10 października 1984 . Brak numerów stron w książce
- ↑„Cobol brain drain: Survey results”. Computerworld, 14 marca 2012 . Brak numerów stron w książce
- Joaquín Navarro: Kobiety w matematyce. Od Hypatii do Emmy Noether. Barcelona: RBA, 2023.ISBN 978-84-1149-405-2.