No więc zgadujcie: PHP ? JAVA, C++ a może BASIC ? Odpowiedź może być zaskakująca. (Do zapoznania się z tekstem zapraszam również laików, dalem rys historyczny.)
Odpowiedź może Was zaskoczyć.
Otóż najpopularniejszym językiem programowania nadal pozostaje COBOL. Common Business-Oriented Language. W tym roku skończy 55 lat. Tak więc jest jednocześnie najstarszym językiem programowania wyższego rzędu.
A mówią o tym statystyki.
Na ponad 300 miliardów linii kodu źródłowego, działających obecnie programów 200 miliardów jest napisane w tym języku. Co więcej, nadal rocznie przybywa kolejnych kilka miliardów.
Ilość programistów zawodowo kodujących w COBOL’u ocenia się na dwa miliony.
Statystyczny posiadacz karty płatniczej nawet nie zdaje sobie sprawy, że jego transakcje przetwarzają, przynajmniej gdzieś po drodze, programy i procedury napisane w tym języku. Dotyczy to 80% transakcji business’owych wykonywanych obecnie na Świecie.
Porównajmy ilość globalnych dziennych wyszukiwań w Google z ilością transakcji business’owych wykonywanych, w tym czasie, przez programy napisane w COBOL. Otóż szacuje się, że tych transakcji jest 200 razy więcej …
Podstawowe oprogramowanie banków, giełdy, energetyki opiera się właśnie na nim.
Wyprawa w przeszłość.
Do przełomu lat 50-tych i 60-tych. Pierwsze sputniki, Rock And Roll i zimna wojna …
Komputery były ogromnymi, wielotonowymi szafami. Nierzadko wypełniały całą kondygnację sporego budynku.
Wypełniały je tysiące lamp radiowych tudzież odpowiednia ilość oporników, kondensatorów … Jak na poniższym obrazku. Grzało to niemiłosiernie pochłaniając wiele kilowatów.
Osiągały w porywach, zdumiewającą w tamtych czasach, szybkość obliczeniową rzędu 20 tysięcy operacji na sekundę. Wielkie szafy mieściły też pamięć rzędu kilobajtów. Nowoczesny smartphone, który mamy w kieszeni dysponuje pamięcią RAM około miliona razy większą.
Zręczność ówczesnych programistów sprawiła, że policzono na nich parametry sputników oraz pierwszych sond wysłanych w kierunku Księżyca, Marsa i Wenus. Programy symulacyjne pozwoliły zaprojektować nieodłączny składnik Zimnej Wojny jakim były bomby atomowe i wodorowe.
Pod koniec lat 60-tych lampy zostały powoli zastąpione przez tranzystory. Komputery nieco zmalały i rozpowszechniły się. Osiągnęły też zawrotne, wówczas, parametry: pamięć rzędu kilkudziesięciu kilobajtów (!), ponad 100 tysięcy operacji na sekundę czy też wielkie pakiety dyskowe mogące pomieścić nawet parę megabajtów. Wreszcie zaczęto je powszechnie stosować do celów business’u.
Małe urządzenie mobilne, które mieścimy obecnie w kieszeni jest tysiące razy szybsze niż to całe centrum na powyższej fotografii. Pamięć potrafi być nawet i milion razy większa.
Pojawia się COBOL.
Pomimo kilku dekad i skoku jakościowego, zasada działania komputerów pozostała ta sama. Opiera się na przedwojennych jeszcze pracach teoretycznych brytyjskiego matematyka Allana Turinga. Tak samo działają też wasze smartfony 🙂
Procesor i pamięć. W pamięci są dane oraz program czyli operacje które należy wykonać na danych. Zarówno dane jak i operacje są liczbami trudno odróżnianymi przez laika. Na poniższym rysunku przedstawiającym teoretyczną maszynę Turinga. Pamięć reprezentuje taśma z zerami i jedynkami, procesor zaś to ta symboliczna maszyna z kółkami zębatymi.
Programy komputerowe z lat 50-tych były długimi ciągami liczb. Jedne instrukcje wykonywały operacje arytmetyczne (dodaj, odejmij, pomnóż, podziel) inne na przykład: pobierz dane z komórki o tym a tym numerze względnie: idź do instrukcji zawartej w komórce o numerze takim a takim …
Nietrudno się domyśleć iż zarówno napisanie jak i zrozumienie takiego ciągu cyfr było dla człowieka zadaniem mozolnym. Szukanie błędów też. Był za to „zrozumiały” dla komputera.
Przełomu dokonała kobieta, Grace Hopper, matematyczka będąca oficerem amerykańskiej marynarki.
Jej ideą stało się: mówmy do komputerów po angielsku.
I tak, w skrócie, powstał język programowania COBOL.
Mało zrozumiałe ciągi cyfr zastąpiono zrozumiałymi zdaniami, jak na powyższym zdjęciu. Wykładowcą dla oficerów marynarki jest właśnie Grace Hopper
Adres komórki pamięci zastąpiła jej symboliczna nazwa, którą nadawał programista. Linia takiego programu mogła więc wyglądać następująco:
ADD NETTO TO VAT GIVING BRUTTO.
albo
MOVE CASH-INCOME TO BOOK-COLUMN(10).
czy też coś takiego:
IF RECORD-END-OF-FILE = YES PERFORM DISTRIBUTION-PROCEDURE.
Życie stało się prostsze. Zamiast tracić czas na mozolne liczenie komórek i wyszukiwanie numerów rozkazów maszynowych można było skupić się na określeniu co ma być policzone. Ogromny krok naprzód.
Tłumaczeniem tych instrukcji na galimatias liczb, zrozumiały dla komputera, zajmuje się program zwany kompilatorem. To co jest czytelne dla człowieka nazywamy kodem źródłowym, to co dla komputera – kodem wynikowym.
COBOL stał się w 1959 pierwszym prawdziwym językiem programowania wyższego rzędu. Otworzył też rynek zbytu na komputery dla wielkich korporacji, banków, giełdy …
Równolegle powstał też FORTRAN, niezastąpione narzędzie inżynierów i naukowców. To właśnie jego użyto do liczenia pierwszych wypraw na Księżyc.
Dokonania Grace Hopper nie ograniczają się do COBOL’u.
To ona właśnie stworzyła obowiązujący do dziś paradygmat programowania funkcjonalnego. Punkt zwrotny rozwoju współczesnej informatyki. A zaczęło się niewinnie. Rozpoczęła od katalogowania powtarzalnych procedur (na przykład liczenie pierwiastka arytmetycznego) by kolejny programista nie musiał robić wszystkiego od początku.
Będąc przekonaną iż główną domeną zastosowania komputerów powinien być business mocno tą ideę promowała. Aż się udało. A nie było to wtedy oczywiste, jako że pierwotnie używano je do obliczeń technicznych na potrzeby armii (w tym projektowania ładunków nuklearnych).
Bez tej wybitnej osobowości współczesna technika komputerowa i informatyka mogła by wyglądać inaczej.
Co dalej ?
Grace Hopper zmarła ukończywszy 85 lat (na początku roku 1992) w stopniu kontradmirała marynarki wojennej USA. Język programowania COBOL skończy w tym roku 55 lat.
Wkrótce po COBOL’u powstały następne języki. FORTRAN, o którym mówiłem. ALGOL – prekursor Pascala. Uniwersalny PL/I, BASIC, C, Pascal …
Obecnie liczbę popularnie używanych języków programowania szacuje się na liczbę rzędu 600 a z mniej znanymi – kilka tysięcy.
Dziełem ostatnich dekad jest programowanie obiektowe: JAVA, C++, C#, Ruby i znany PHP lub PERL.
Tymczasem podstawowym narzędziem tworzenia oprogramowania do celów ekonomicznych pozostał właśnie COBOL. Procedury i programy sprzed 30-40 lat zostały dokładnie przetestowane przez dziesięciolecia ich używania. Horrendalna ilość kodu źródłowego sprawia iż przepisanie ich na nowo jest nieopłacalne. Problem „pluskwy roku 2000” dotyczył głównie programów napisanych w COBOL. Obawiano się, że padnie giełda i międzynarodowe systemy bankowe.
Przeciętny użytkownik karty płatniczej nawet nie zdaje sobie sprawy, że jego operacje finansowe są przetwarzane gdzieś, po drodze, przez programy napisane kiedyś w języku COBOL. Podobnie też nie zdajemy sobie sprawy, że właśnie te programy często przygotowują nam rachunki za energię czy inne media.
Archaiczny, wydawało by się, język programowania jest nadal rozwijany powstały nawet jego wersje obiektowe.
Miałem zawodowo do czynienia ze środowiskiem dostosowanym do systemów Windows „Visual COBOL” firmy MICRO FOCUS. Co ciekawsze zetknąłem się z projektem IBM gdzie COBOL mógł być łączony z JAVA jako JSF. A nawet powstał język programowania EDL, który łączył pozornie rozbieżne koncepcje COBOL i JAVA. Moim zdaniem udało się to średnio. Nie mniej idea zaistniała 🙂
Oczywiście są też jego zażarci krytycy.
55-letni COBOL ma się dobrze i zapewni pracę przynajmniej jeszcze paru pokoleniom programistów.