W poprzednim felietonie wchodzącym w skład tego cyklu opisałem, jak doszło do sformułowania koncepcji języków algorytmicznych, będących wygodnym i skutecznym narzędziem programowania komputerów, oraz jak stworzono translatory, dzięki którym owe języki algorytmiczne mogły służyć do programowania konkretnych komputerów. Opisałem też wstępnie działania Johna Backusa, które doprowadziły do powstania języka Fortran (ang. Formula Translator, dawniej: FORTRAN). Dzisiaj ten temat rozwinę.

Coraz doskonalsze wersje Fortranu

Fortran, czyli język ukierunkowany na programowanie obliczeń opisywanych przez wzory matematyczne, początkowo (w 1957 r.) był produktem firmy IBM, przeznaczonym dla użytkowników komputerów z serii IBM 704. Jednak jego zalety spowodowały, że translatory tego języka pojawiały się na różnych komputerach – niestety, w różnych wersjach i odmianach. Backus nie chciał dopuścić do tego, żeby program pisany w Fortranie dla jednego komputera napotykał na trudności przy przeniesieniu do innych komputerów, dlatego w 1958 r. stworzono normę (określaną jako FORTRAN II) opisującą ujednolicone zasady budowy programów w tym języku. Potem język jeszcze udoskonalono i w 1960 r. stworzono taką jego wersję (nazwaną FORTRAN IV), która była potem podstawą programowania komputerów aż do 1980 r. Standaryzację Fortranu uznano za tak ważną, że wydano specjalną normę amerykańską (ANS X3.9 – 1966), ustanawiającą reguły tego języka. Nie przeszkodziło to w powstaniu kolejnych wersji tego języka (którego nazwę przestano pisać wersalikami): Fortran 66, Fortran 77, Fortran 90, Fortran 95. Najnowsza wersja nosi nazwę Fortran 2008.

Czytaj więcej

Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 14: początki programowania

Moim zdaniem największą rolę w rozwoju informatyki odegrała wersja FORTRAN IV, która była na początku lat 60. ubiegłego wieku najbardziej sprawnym narzędziem programowania, używanym na całym świecie i właściwie w obszarze praktyki niemającym konkurencji.

W obszarze praktyki tak, ale w obszarze naukowym już niekoniecznie!

Narodziny Algola

Fortran podobał się praktykom, bo pozwalał budować bardzo sprawne programy. Translatory tego języka od początku były nastawione na optymalizację produkowanych programów w języku maszynowym. Backus przywiązywał do tego wagę, bo jedna z linii ataku na jego nowy produkt opierała się na zarzucie, że mądry programista piszący program wprost w języku maszynowym (albo w tzw. Assemblerze) potrafi tak zaplanować obliczenia, żeby program bardzo szybko pracował. Zakładano, że działający w sposób schematyczny translator tego nie osiągnie.

Nikt nie potrafił napisać translatora pozwalającego na praktyczne użycie programów napisanych w Algolu na konkretnych komputerach!

Okazało się jednak, że translatory Fortran produkowały bardzo sprawnie działające programy, a napisanie programu na zadany temat nie zajmowało więcej niż kilka godzin pracy (a nie kilka dni, jak przy pisaniu w języku maszynowym). Fortran zachwycał więc praktyków, ale nie zadowalał teoretyków, bo jako język nie miał porządnie zdefiniowanej gramatyki.

Owi teoretycy pod koniec lat 50. XX wieku wypracowali koncepcję języka programowania opartą na bardzo pięknie zdefiniowanych podstawach formalnych i język ten nazwali Algol (ang. Algorithmic Language; dawniej: ALGOL). Raport opisujący Algol został opublikowany w 1960 r. i od razu stał się sensacją. Piękna struktura tego języka (określanego potem jako ALGOL 60, bo powstały także nowsze wersje w późniejszych latach) zachwycała teoretyków. Elegancka notacja BNF, użyta do opisu jego gramatyki, była potem przez całe lata wzorem dla wielu prac naukowych wykonywanych w informatyce. Możliwość stosowania w Algolu zaawansowanych struktur algorytmicznych (np. rekurencji) powodowała, że programista miał w tym języku o wiele potężniejsze narzędzia niż programista korzystający z Fortrana.

Autopromocja
ORZEŁ INNOWACJI

Konkurs dla startupów i innowacyjnych firm

WEŹ UDZIAŁ

Czytaj więcej

Jak nauczyliśmy maszyny liczyć i myśleć za nas?

Była jednak łyżka dziegciu w tej beczce miodu. Nikt nie potrafił napisać translatora pozwalającego na praktyczne użycie programów napisanych w Algolu na konkretnych komputerach! Te translatory, które powstały, na ogół nie obsługiwały tych najbardziej wytwornych teoretycznie mechanizmów języka, które miały być jego największą zaletą, a ponadto budowały programy w kodach maszynowych działające o wiele wolniej niż programy tworzone przy programowaniu w Fortranie. Powstała więc nieco schizofreniczna sytuacja: wszyscy zachwycali się Algolem, ale wszyscy używali Fortrana!

Spadkobiercy Algola

Teoretycy zajmujący się Algolem nie ustawali w staraniach, żeby pokazać, iż oferują coś znacznie lepszego niż ten prostacki Fortran i w 1968 r. stworzyli nową wersję Algola (tzw. Algol 68). Jej opis był jednak tak sformalizowany i skomplikowany, że nie tylko twórcy translatorów dali za wygraną, ale nawet inni teoretycy przyznawali, że tego nie da się zrozumieć. W związku z tym Algol 68 nigdy nie stał się praktycznie użytecznym narzędziem programowania komputerów, chociaż napisano na jego temat mnóstwo bardzo wymyślnych prac naukowych.

Natomiast praktycznym narzędziem programowania komputerów opartym na Algolu 60 był język Pascal. Stworzył go w 1970 r. szwajcarski informatyk Niklaus Wirth, profesor ETH w Zurichu. To znana uczelnia, którą ukończyli m.in. Albert Einstein i Wolfgang Pauli. Przebywałem tam jesienią 2018 r. jako Visiting Professor i potwierdzam, że jest to europejska szkoła, której poziom dorównuje czołowym uniwersytetom amerykańskim.

Wprowadzony w listopadzie 1983 r. i stale ulepszany Turbo Pascal to narzędzie, z którym naprawdę znakomicie się pracowało.

Niklaus Wirth, tworząc język Pascal w latach 70. XX wieku, pogodził ogień z wodą. Stworzył język programowania wzorowany na Algolu i dziedziczący wszystkie jego zalety formalne – ale wolny od jego wad, to znaczy pozwalający tworzyć programy o dużej sprawności obliczeniowej, porównywalnej z Fortranem. Uważa się, że najbardziej dojrzała wersja języka Pascal opisana została w podręczniku z 1974 r., a powstające później mutacje nie miały już tylu zalet. W efekcie na początku XXI wieku Pascal był już narzędziem o marginalnym znaczeniu, a obecnie posługują się nim głównie hobbyści.

Niemniej przez mniej więcej 20 lat panowało przekonanie, że to właśnie ten język należy preferować, zwłaszcza na początku nauki programowania, bo wyrabia on u programisty dyscyplinę myślową i dobry styl. Uczyłem przez wiele lat programowania na kilku krakowskich uczelniach i na podstawie własnego doświadczenia potwierdzam, że było to świetne narzędzie do uczenia studentów tzw. myślenia algorytmicznego. Bezsporną zaletą Pascala było to, że wymuszał on programowanie przemyślane i eleganckie, co potem bardzo się przydawało, nawet gdy użytkownik z różnych względów porzucał ten język i korzystał z innych. Programy w Pascalu są do dzisiaj strukturalnie bardzo czytelne i eleganckie, co powoduje, że łatwo je kontrolować i analizować ich działanie. Stąd opinia, że programując w Pascalu, unika się większości błędów, które są zmorą programujących w innych językach.

Czytaj więcej

Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 12: urządzenia peryferyjne komputera – drukarki

W latach 80. dostępny był znakomity translator o nazwie Turbo Pascal firmy Borland. Wprowadzony w listopadzie 1983 r. i stale ulepszany Turbo Pascal to narzędzie, z którym naprawdę znakomicie się pracowało. Jego wersja 4.0 ukazała się w 1987 r., wersja 5.0 w 1988 r. itd. Ostatnia wersja miała numer 7.0 i została wprowadzona w 1992 r. – po czym Borland zaprezentował (w 1995 r.) własny język – Delphi, będący bardzo zmodernizowaną wersją Pascala. Niestety, język Delphi nie zdobył nigdy tej popularności, jaką cieszył się Pascal. Co ciekawe, języki Modula i Modula 2, wymyślone i propagowane przez samego Niklausa Wirtha, nie do końca zadowolonego z Pascala, też się nie przyjęły. Tylko Pascal miał ten wdzięk i urok, który wszystkich uwodził! Niestety, poprawiane arcydzieło rzadko bywa lepsze od oryginału...

Potrzeba unifikacji i język COBOL

Jednym z problemów informatyki w latach 50. było to, że programów komputerowych nie można było przenosić z jednego komputera na drugi (no chyba że były to takie same komputery tego samego producenta). Próbą przezwyciężenia tej niekorzystnej sytuacji było wprowadzenie języka COBOL (ang. Common Business-Oriented Language). Był to język dostosowany do programowania komputerów pracujących na użytek biznesu. Pierwsza wersja COBOL-a powstała w 1959 r. w zespole prowadzonym przez znaną nam już Grace Murray Hopper. Potem koncepcję pani admirał „wziął na warsztat" CODASYL (ang. Conference on Data Systems Languages), który opracował i ogłosił w 1960 r. standard języka COBOL. Standard ten zatwierdziło jako obowiązującą normę ANSI (American National Standards Institute), a różne ważne instytucje – m.in. Departament Obrony Stanów Zjednoczonych – nakazały podległym jednostkom tworzenie programów właśnie w COBOL-u. Zapewniono w ten sposób całkowitą przenośność oprogramowania stworzonego w jednym ośrodku do wszystkich jednostek prowadzących podobną działalność, co radykalnie zmniejszyło koszty informatyzacji.

Na świecie napisano setki programów w COBOL-u, używanych przez tysiące podmiotów gospodarczych.

COBOL to język zasadniczo odmienny od omawianych wyżej języków Fortran i Algol. O ile bowiem polecenia dla komputera pisane w tych dwóch wcześniej przedstawionych językach programowania przypominały formuły matematyczne (miłe dla oka fizyka albo inżyniera, ale przerażające dla typowego urzędnika), o tyle polecenia pisane w COBOL-u przypominały zdania języka naturalnego (początkowo angielskiego, ale potem powstały wersje narodowe, w tym także polska). Dzięki temu podobieństwu do zdań języka naturalnego program w COBOL-u może przeczytać i zrozumieć właściwie każdy, a to był ważny argument przy tworzeniu oprogramowania dla firm oraz banków. Do programów w COBOL-u łatwo dawali się przekonać decydenci (bo widzieli, co taki program robi), dlatego programy te dobrze się sprzedawały, a to napędzało zapotrzebowanie na translatory COBOL i na implementacje tego języka na komputerach przeznaczonych na potrzeby biznesu, w tym zwłaszcza komputerów mainframe (patrz: „Rzecz o Historii" z 23 lipca 2021 r.).

Czytaj więcej

Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 11: Dyski optyczne i klawiatura

Na świecie napisano setki programów w COBOL-u, używanych przez tysiące podmiotów gospodarczych. Statystyka sporządzona w 2012 r. (ponad 50 lat po wprowadzeniu COBOL-a do użytkowania!) przez tygodnik „Computerworld" ujawniła, że 60 proc. systemów informatycznych w USA wciąż bazuje na COBOL-u, a 90 proc. transakcji finansowych jest obsługiwanych przez programy napisane (często wiele lat wcześniej) właśnie w tym języku. Wiele prób zamiany systemów informatycznych stworzonych pierwotnie w COBOL-u na programy napisane w jednym ze współcześnie „modnych" języków programowania (np. Java albo C++) zakończyło się niepowodzeniem. COBOL jest nie do zdarcia!

Autor jest profesorem AGH w Krakowie