60 LAT Dawno, dawno temu. Gdy internet nie istniał . Gdy nie było Javy i JavyScriptu. Gdy język programowania PASCAL jeszcze nie powstał. Programowanie wyglądało zupełnie inaczej.

Był to świat, gdzie istniały tylko takie języki programowania jak : Fortran, COBOL, ALGOL, Assembler, BASIC, LISP, APL

"To były czasy" jak by mógł powiedzieć jakiś dziadek. 

Dzisiaj spójrzmy na język COBOL, który dobrze się trzyma mimo swojego wieku. W latach 80 wielu twierdziło, że jest to martwy język tymczasem w roku 2020 programista COBOL nadal jest potrzebny

To język programowania, który nie może umrzeć. Pomyśl ile banków, aplikacji rządowych działa na tym języku jeszcze. 

Modernizacja takich systemów jest prawie niemożliwa. A osoby, które w tym programują albo odchodzą na emeryturę, albo już nie żyją. Co tworzy smakowity kąsek na rynku pracy, nawet tym Polskim

Podobno nawet rząd amerykański daję dotacje na naukę tego języka.

COBOL? Co to jest?

COBOL to skrót słowny od COmmon Bussines Oriented Language. Stworzony i sponsorowany przez departament Obrony. W tamtych czasach uzyskał status kultowego języka. Byli śmiałkowie, którzy twierdzili, że ten języki jest czytelny dla osoby nie programistycznej, czyli biznesowej. Wszystko w tym języku programowania widać jak na dłoni.

Natomiast pod koniec lat 70 wielu zaczęło twierdzić, że czytanie składni COBOL deformuje mózg

Nie żartuje o to oficjalny cytat Edsger W. Dijkstra

cytat.PNG

Już w tamtych czasach pojawił się problem ze znalezieniem programistów, którzy by rozumieli ten język programowania

Szkoły nie było stać na komputery głównego szeregu ("Mainframe") co oznacza, że nie wiele osób uczyło się tego języka, albo miało do tego sprzęt. 

Dlaczego ten język dominuje wciąż?

Jak ten język COBOL wygląda na tle obecnych języków programowania

COBOL jest bardzo ograniczony:

  • Nie ma w nim dynamicznej alokacji pamięci
  • Nie masz w nim łatwego dostępu do niskopoziomych funkcji systemu operacyjnego
  • W COBOL-u nie ma mowie o rekurencji i innych wzorcach projektowych, które my dziś znamy

COBOL nie jest językiem programowania, w którym zrobisz co chcesz. 

Ten język służy tylko do operacji na poszczególnych domenach biznesowych. Fachowo mów się na to DSL ("domain-specific language")

Byś mógł to lepiej zrozumieć o to przykładowe języki DSL :

  • SQL
  • XPath
  • ReGex

Jakie on ma mocne strony? Do czego więc służy w ogóle ten COBOL w takim razie. :

  • Do zarządzania dużą ilością danych w formie rekordów
  • Dbanie o dane finansowe. Tak by wartości co do przecinka były poprawne. Ułamki nie są lubiane przez komputery,a jakoś COBOL był pierwszych językiem, który próbował to ogarnąć.
  • Biznesowe programy mieszają liczby z napisami z ułamkami i danymi pieniężnymi w formacie decimal. Teraz jaki stary język programowania mógł w łatwy sposób zażądać takimi skomplikowanymi rekordami, gdzie masz wiele informacji w różnych formatach. 

Oczywiście obecnie wiele języków programowania to potrafi. Jak nie wszystkie. 

Jednakże COBOL został stworzony właśnie w tym celu. Do sterowania rekordami danych. Nic dziwnego, że banki z niego korzystają. Bo jest funkcjonalność natywna dla tego języka

Jak zestawisz COBOL z jakimkolwiek językiem programowania, to on obecnie wygląda blado.

Nie zmienia jednak to faktu, że istnieje na wielu serwerach miliardy linijek kodu COBOL i nikt nie próbował tego zmigrować 

Napiszmy ten pierwszy program w COBOL

Bądźmy na czasie i zamiast dziurkowanej kartki dla byczego komputera wyciągamy Visual Studio Code.

Istnieje wiele dodatków do Visual Studio Code, które pomogą Ci napisać kod w tym języku.

Ja obecnie korzystam z dwóch dodatków.

COBOL Visual stuido code.PNG

https://marketplace.visualstudio.com/items?itemName=bitlang.cobol

COBOL Visual stuido code 2.PNG

https://marketplace.visualstudio.com/items?itemName=broadcomMFD.cobol-language-support

Teraz pora chwycić smoka za paszcze. By pisać w tym języku, potrzebny Ci jest kompilator

Jeśli jestem na innym systemie operacyjnym niż Windows to polecam zapoznać się z dokumentacją jak zainstalować odpowiednie rzeczy

https://open-cobol.sourceforge.io/faq/index.html#using-gnucobol

Dla systemu Windows  pobierasz program OpenCobolIDE

https://launchpad.net/cobcide/+download

COBOL INSTALACJA.PNG

Ten program oprócz kompilatora i bibliotek instaluje także IDE, ale ja z niego nie będę korzystał.

Sugeruje Ci zainstalować ten program pod jakąś prostą ścieżką, bo to ułatwi Ci życie za chwilę.

Ja wybrałem  : C:\COBOL

Zmienne środowiskowe 

Aby kompilować program z poziomu "wiersza poleceń" musisz ustawić odpowiednie zmienne środowiskowe. 

cobol sorodiwsko 091.jpg

COBOL potrzebuje następujących zmiennych środowiskowych. Jeśli zainstalowałeś program w folderze "C:\COBOL\" to ścieżki będą następujące.

cobol zmienne srodowis.PNG

W zmiennej środowiskowej PATH musisz też dodać ścieżkę do bibliotek COBOL, by je potem uruchamiać z wiersza poleceń.

cobol zmienne srodow.PNG

To wszystko. Pamiętaj, że zmiany w zmiennych środowiskowych  są widoczne dopiero po uruchomieniu ponownym komputera.

Piszemy HelloWorld

To co widzisz to kartka dziurkowana. Tak kiedyś kod źródłowy był na takich kartach papieru.

Możesz poczytać o tym w tych miejscach:

sheet.jpg

Kolumna 1-6 jest dla sekwencji liczby. Kolumna 7 jest wskaźnikiem, który jest używany do wstawienia komentarzy do kodu. Kod znajduje się pomiędzy kolumną 8, a 72.

Kolumny od 73 do 80 wolne do użycia przez programistę

Wiele nowoczesnych kompilatorów COBOL nie potrzebuje takiej struktury. Jednakże wielu kodu w COBOLU jest napisane w takim formacie 

Uważaj na ostry zakręt. COBOL nie jest językiem, którego struktura skojarzy Ci się z innym językiem programowania

Twórcy  COBOL-a chcieliby ten język, sam się dokumentował . Dlatego w tej składni masz bloki jak : 

  • divisions,
    • sections,
      • paragraphs
        • statements

Oto kod Hello World

       IDENTIFICATION DIVISION. 
       PROGRAM-ID. HELLO.
       PROCEDURE DIVISION.
           DISPLAY "Hello, world".
       END PROGRAM HELLO.

A z tymi kolumnami to tak na serio, bo kod w Visual Studio Code wygląda tak :

kod.png

Co ten kod robi?

W pierwszej linij IDENTIFICATION DIVISION zawiera w sobie paragraf określający ID programu

Gdy jeden program COBOL chce pogadać z innym programem COBOL to wtedy takie ID jet potrzebne. 

Później deklarujemy procedurę i korzystam z funkcji DISPLAY, by wyświetlić napis.

Na końcu informujemy kompilator, że to koniec naszego programu podając jego ID

Jeśli zrobiłeś poprawnie zmienne środowiskowe to możesz skompilować kod wpisując polecenie

cobc -x hello.cbl

hello wrodl.PNG

Dlaczego COBOL jest zły?

Moim zdaniem COBOL nie wygląda, aż tak źle patrząc na jego składnie. To taki język SQL z dziwną składnią językową.

Na razie jednak muszę odpocząć by napisać kolejny wpis o COBOL-u, bo czacha jednak dymi.