Pojawienie się |
1959 |
---|---|
Paradygmat |
Programowanie obiektowe, Programowanie proceduralne, Programowanie imperatywne |
Typowanie | |
Implementacje |
GNUCOBOL, IBM COBOL |
Aktualna wersja stabilna |
ISO/IEC 1989:2023 |
Twórca |
Howard Bromberg, Howard Discount, Vernon Reeves |
COBOL (akronim od ang. common business-oriented language) – wysokopoziomowy ję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 typu mainframe, wymagających przetwarzania danych na wielką skalę, zarówno w trybie 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 zaprojektowany został w 1960 roku przez CODASYL i częściowo oparty był na wcześniejszym języku programowania stworzonym przez Grace Hopper, popularnie nazywaną „babcią COBOL-a”[3]. 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 jest ISO/IEC1989:2014[4].
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.
y = x
natomiast COBOL posiada składnię zbliżoną do języka angielskiego, w tym przypadku:
MOVE x TO y
Kod w COBOL-u podzielony jest na cztery działy (ang. division) (identification, environment, data oraz procedure), 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.
Historia
W późnych latach 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 000 USD, 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 przez Departament Obrony Stanów Zjednoczonych[1].
Pierwsza definicja COBOL-a stworzona została w 1960 roku przez komitet CODASYL (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
Właściwości
Składnia
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:
x IS GREATER THAN y
lub bardziej zwięźle:
x GREATER y
lub jeszcze bardziej:
x > y
Bardziej złożone warunki mogą być „skrócone” poprzez usunięcie powtarzalnych wyrażeń I zmiennych, np.:
a > b AND a > c OR a = d
Może zostać skrócone do:
a > b AND c OR = d
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!'
)[5]. Separatory zawierają spacje, przecinki oraz średniki.
Podstawowym elementem strukturyzującym program w COBOL-u jest dywizja. W każdym programie wyróżniamy 4 dywizje: identification, environment, data oraz procedure. Dywizja identification określna nazwę oraz element źródłowy. W dywizji tej wyspecyfikowane są również klasy i interfejsy. Dywizja environment określa wszystkie elementy programu, które zależą od systemu, na którym działają, takie jak pliki i zestawy znaków. Dywizja data służy do deklaracji zmiennych i parametrów. Dywizja procedure zawiera polecenia. Każda dywizja jest podzielona na sekcje, które składają się z paragrafów[1][6].
Krytyka i obrona
Krytycy COBOLa zarzucają mu brak struktury. Zarzut ten odnosi się przede wszystkim do tak zwanego kodu spaghetti, przyczyną powstania którego jest z kolei wykorzystywanie komendy GO TO
(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). Aktualnie GO TO
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.
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[7].
COBOL, a dokładniej jego struktury danych, w znacznym stopniu wpłynął na inne języki programowania takie jak PL/I czy Pascal. 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.
Zastosowanie języka COBOL
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].
Programy napisane w COBOL-u nadal używane są na całym świecie, w instytucjach rządowych oraz biznesowych i działają na licznych systemach operacyjnych takich jak z/OS, VME, Unix, OpenVMS oraz Windows. W 1997 Grupa Gartner 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[8]. W 2006 i 2012, ankiety Computerworld wykazały natomiast, że ponad 60% organizacji wykorzystuje COBOL-a bardziej niż C++ i Visual Basic .NET oraz że dla połowy z nich COBOL używany jest w większości wewnętrznych systemów[9].
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.
Program „Hello world” w języku COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY 'Hello, World!'.
STOP RUN.
Zobacz też
Przypisy
- 1 2 3 4 5 Michael Coughlan , Beginning COBOL for Programmers .
- ↑ Robert L. Mitchell , Cobol: Not Dead Yet .
- ↑ Porter Adams , Captain Grace M. Hopper: the Mother of COBOL .
- ↑ „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.
- ↑ Richard L.Conner , „Cobol, your age is showing”. Computerworld .
- ↑ COBOL and Legacy Code as a Systemic Risk | naked capitalism.
- ↑ „An interview: Cobol defender”. Computerworld., 10 października 1984 .
- ↑ „Cobol brain drain: Survey results”. Computerworld, 14 marca 2012 .