COBOL

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

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 znaczymy 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 COBOLa w tworzeniu nowych aplikacji. Większość wykonywanych prac programistycznych związania jest z utrzymaniem i rozwojem aplikacji istniejących.[2] Z uwagi na jego powoli malejącą popularność oraz coraz mniejszą podaż programistów COBOL, część programów migrowana jest na nowe platformy, przepisywana na bardziej nowoczesne 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ą COBOLa”[3]. Jego powstanie było skutkiem prób stworzenia przez Departament Obrony USA przenośnego języka programowania wykorzystywanego do procesowania danych. Mimo, iż powstał jako rozwiązanie tymczasowe, Departament Obrony USA szybko zmusił producentów komputerów do jego stosowania przez co w krótkim czasie został rozpowszechniony na szeroką skalę.[4]

COBOL został ustandaryzowany 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.[5]

Składnia (ang. syntax) COBOLa 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.

Podczas, gdy we współczesnych językach używana jest zwięzła składnia np.:

 y=x

, COBOL posiada składnię bardziej zbliżoną do języka angielskiego, w tym przypadku:

 MOVE x TO y

Kod w COBOLu podzielony jest na cztery dywizje (identification, environment, data oraz procedure) posiadające hierarchiczną strukturę sekcji, paragrafów, zdań i instrukcji. [4]

W czasach kiedy tworzony był 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 głównie dla biznesmenów przez co w późniejszym czasie był szeroko krytykowany przez środowiska akademickie.[4]

Historia[edytuj]

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 procesowania danych koszt programowania wynosi przeciętnie US$800,000 oraz, przeciętne przetłumaczenie istniejącego oprogramowania, które umożliwiłoby uruchomienie kodu na nowym sprzęcie kosztowałoby kolejne $600,000.[4] Ta sama ankieta zasugerowała, że jeśli wykorzystany zostałby język zorientowany biznesowo, konwersja byłaby zarówno tańsza jak i szybsza. Program stworzenia takiego języka został w 1959 roku zorganizowany i zasponsorowany przez Departament Obrony Stanów Zjednoczonych.[1]

Pierwsza definicja COBOLa 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ła pierwszą zorientowaną obiektowo wersję COBOLa.[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 COBOLa
  • 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[edytuj]

Składnia[edytuj]

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 OR 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 COBOLu 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 COBOLu 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][7]

Krytyka i obrona[edytuj]

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ą PERFROM oraz procedurami, których zastosowanie znacząco niweluje ten zarzut.[4]

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. [4]

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 COBOLu  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.[8]

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.

Dlaczego COBOL[edytuj]

COBOL jest językiem programowania z ponad 50 letnią historią. Aktualnie wielu postrzega go jako zaszłość, bez realnego znaczenia dla współczesnego świata. W rzeczywistości pomimo swojego wieku COBOL nadal odgrywa bardzo istotną, jeśli nie dominującą, rolę w świecie biznesu.[1]

Programy napisane w COBOLu nadal używane są na całym świecie w instytucjach rządowych I biznesowych i działają na licznych systemach operacyjnych takich jak z/OSVMEUnixOpenVMS oraz Windows. W 1997, Grupa Gartner wydała raport, który wykazał, że 80% światowego biznesu działa na COBOLu, przy prawie 200 mld linii kodu i 5 miliardami linii pisanymi rocznie. Nawet stworzona w 1996/7 Java nie zdołała przyćmić pozycji COBOLA. [4]

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.[9] W 2006 i 2012, ankiety Computerworld wykazały natomiast, że ponad 60% organizacji wykorzystuje COBOLa 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.[4][10]

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 COBOLu kończy się niepowodzeniem. 

Program "Hello world" w języku COBOL[edytuj]

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
*
PROCEDURE DIVISION.
PARA-1.
DISPLAY "Hello world!".
*
EXIT PROGRAM.
END PROGRAM HELLO-WORLD.

Zobacz też[edytuj]

Przypisy

  1. a b c d e MichaelM. Coughlan MichaelM., Beginning COBOL for Programmers.
  2. Robert L.R. L. Mitchell Robert L.R. L., Cobol: Not Dead Yet.
  3. PorterP. Adams PorterP., Captain Grace M. Hopper: the Mother of COBOL.
  4. a b c d e f g h COBOL, „Wikipedia”, 7 października 2016 [dostęp 2016-10-19] (ang.).
  5. "ISO/IEC 1989:2014". ISO. 26 May 2014. Retrieved 7 June 2014.
  6. ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.3.1.2.
  7. RichardR. L.Conner RichardR., "Cobol, your age is showing". Computerworld.
  8. COBOL and Legacy Code as a Systemic Risk | naked capitalism.
  9. "An interview: Cobol defender". Computerworld., 10 października 1984.
  10. "Cobol brain drain: Survey results". Computerworld, 14 marca 2012.