Dwa ostatnie felietony z prezentowanej tu serii opisującej etapy rozwoju informatyki poświęciłem na omówienie trzech pierwszych ważnych języków programowania (FORTRAN, ALGOL i COBOL). Dziś opowiem o powstaniu i ewolucji następnych języków.

Opisane we wcześniejszych odcinkach języki programowania (a także przynajmniej tuzin innych języków programowania wymyślonych w latach 60. XX wieku, których historii nie warto jednak studiować, bo przemknęły na firmamencie informatyki jak spadające gwiazdy) pozwalały profesjonalistom na tworzenie coraz doskonalszych systemów informatycznych dla różnych zastosowań. Języki te miały jednak wspólną wadę: ten, kto chciał się nauczyć programowania, a nie wykazywał w tym kierunku szczególnych uzdolnień, miał duże trudności z ich opanowaniem.

Mam w tym zakresie własne doświadczenia, bo przez ponad dziesięć lat nauczałem studentów AGH programowania w FORTRAN-ie, a studentów Wyższej Szkoły Pedagogicznej (obecnie Uniwersytet Pedagogiczny w Krakowie) programowania w Pascalu, który był zalecanym dla szkół „potomkiem" ALGOL-u. Obserwowałem, jak jedni w lot chwytali główne idee tworzenia algorytmów i bez trudu tworzyli ich zapisy w wybranym języku programowania, a inni koszmarnie się z tym męczyli, nie uzyskując – mimo wielu wysiłków – zadowalających rezultatów. Dużo mówi się – szczególnie w okresie egzaminów maturalnych – że są ludzie, którzy nie mają talentu do matematyki. I jest to prawda. Ja jednak przekonałem się (obserwując setki studentów!), że bywają ludzie organicznie niezdolni do programowania komputerów.

Czytaj więcej

Jak nauczyliśmy maszyny liczyć i myśleć za nas? Część 15: pierwsze ważne języki programowania

Warto podkreślić, że chociaż program w języku COBOL przypominał zestaw poleceń przekazywanych podwładnemu w potocznym języku angielskim, a więc udawało się go z łatwością przeczytać, to jednak pisanie programów w COBOL-u wymagało sporej wiedzy i dyscypliny, łatwe więc wcale nie było. Też coś wiem o tym, bo nauczałem programowania w COBOL-u na Akademii Ekonomicznej w Krakowie, a także na Wydziale Zarządzania AGH.

Pomocny i wygodny język dla początkujących: BASIC

Aby jednak otworzyć świat komputerów dla początkujących adeptów informatyki, a także dać wygodne narzędzie tym, którym FORTRAN czy Pascal sprawiały kłopoty, opracowano bardzo prosty i przyjazny język programowania o nazwie BASIC (Beginner's All-purpose Symbolic Instruction Code). Stworzyło go dwóch pracowników Dartmouth College, John George Kemeny i Thomas E. Kurtz. Znana jest data i godzina (!) pierwszego uruchomienia translatora tego języka: miało to miejsce dokładnie 1 maja 1964 r. o godzinie 4.00. Komputerem, na którym „ruszył" BASIC, był duży komputer firmy General Electric GE-225.

Początkowo w ogóle translatory tego nowego języka uruchamiano na komputerach klasy mainframe – ale to było trochę pomieszanie z poplątaniem, udostępniano bowiem na komputerach wartych wiele milionów dolarów narzędzie do programowania przeznaczone dla kompletnych ignorantów. Gdyby ta sytuacja dłużej się utrzymywała, język BASIC byłby tylko jedną z wielu informatycznych ciekawostek bez większego znaczenia.

Natomiast wkrótce po opracowaniu tego języka rozpoczęła się rewolucja mikrokomputerów przeznaczonych do użytku domowego. Pisałem o tym w „Rzeczy o Historii" z 23 lipca 2021 r. Już pierwszy z tej rodziny mikrokomputerów, ALTAIR 8800, używał języka BASIC jako podstawowego narzędzia, za pomocą którego użytkownik mógł osiągnąć to, co sobie zaplanował. Było to tym bardziej korzystne, że język BASIC służył nie tylko do pisania całych programów do wykonywania jakichś konkretnych, z góry zaplanowanych czynności – można go było wykorzystywać także w trybie interaktywnym, pisząc polecenia w tym języku, które komputer natychmiast wykonywał.

Translator BASIC-a trampoliną do światowej kariery

W kontekście języka BASIC warto przypomnieć dzieje Billa Gatesa, jednego z założycieli firmy Microsoft. Pisałem o nim w „Rzeczy o Historii" z 2 kwietnia 2021, ale tu w kontekście języka BASIC przywołam kilka ciekawostek.

Kariera tego niezwykłego człowieka zaczęła się od tego, że w 1975 r., mając 19 lat, rozesłał do wszystkich producentów komputerów ofertę, że może im sprzedać translator języka BASIC. Było to zuchwalstwo: Gates NIE MIAŁ tego translatora, a dopiero chciał go zbudować. Ponieważ chętnych do zakupu nie brakowało (pierwszym był twórca ALTAIR-a, Ed Roberts), Bill Gates wraz z przyjacielem Paulem Allenem pracowali dzień i noc przez sześć tygodni, po czym zaproponowali BASIC, który stał się światowym standardem, a swoim twórcom przyniósł miliony dolarów czystego zysku.

Użytkownicy pokochali BASIC. W translatory tego języka wyposażono pierwsze mikrokomputery Apple, mikrokomputery domowe Commodore, Atari, bardzo udane maszyny Sinclaira i bardzo nieudany polski mikrokomputer Junior.

Czytaj więcej

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

Gdy powstały komputery IBM PC, które miały zrewolucjonizować informatykę, potrzebny był dla nich system operacyjny. Historii systemów operacyjnych poświęcę odrębny felieton, bo są to programy o ogromnym znaczeniu dla historii informatyki, ale tu wspomnimy tylko, że gdy komputerowy gigant, firma IBM, stworzyła komputer osobisty IBM PC, istniało wiele bardzo dobrych systemów operacyjnych dla komputerów IBM – jednak były to systemy dla komputerów klasy mainframe, obsługujących równocześnie wielu użytkowników. Żaden z tych systemów nie pasował do maleństwa, jakim był IBM PC, przyjęto więc propozycję Billa Gatesa (wtedy jeszcze tylko właściciela mało znanej firmy Microsoft), że zbuduje on system operacyjny dla IBM PC zaspokajający typowe potrzeby użytkownika indywidualnego.

Gates wywiązał się z zadania, a system MS-DOS (Microsoft Disk Operating System) stał się od swego debiutu (w sierpniu 1981 r.) najczęściej używanym systemem operacyjnym na całym świecie. Wyparł go dopiero system Windows (także stworzony przez firmę Microsoft), którego debiut miał miejsce 20 listopada 1985 r. Pod koniec lat 80. XX wieku MS-DOS i Windows istniały równolegle i bywały używane naprzemiennie, a ponadto w systemie Windows istniał mechanizm pozwalający zejść do DOS-u i wykonywać część zadań pod kontrolą tego właśnie systemu operacyjnego.

Dlaczego opowiadam tak obszernie o MS-DOS w felietonie poświęconym językowi BASIC? Otóż Gates był tak przywiązany do translatora BASIC, że wbudował go w system MS-DOS. I to nie byle gdzie – w samo jądro systemu, do części zwanej BIOS. W ten sposób nawet bardzo profesjonalne komputery IBM PC traktowały BASIC jako język „wrodzony", podczas gdy dla wszystkich innych języków translatory trzeba było osobno kupować i instalować.

Sekwencja BASIC–MS-DOS–Windows uczyniła firmę Microsoft potentatem na rynku oprogramowania, a Billa Gatesa wprowadziła do grona najbogatszych ludzi świata.

Maleńki BASIC wygrał, a ogromny PL/1 poniósł klęskę

Niezależnie od sympatii wobec Billa Gatesa trzeba przyznać, że BASIC to był mały język programowania, który zrobił wielką karierę. Dla kontrastu opowiem o języku, który był ogromny i bardzo bogaty, który jednak „przedobrzył", nie trafił w potrzeby rynku i definitywnie przegrał.

Firma IBM (opisana przeze mnie w „Rzeczy o Historii", 14 maja 2021 r. i 28 maja 2021 r.) miała zawsze skłonność do tego, by robić rzeczy wielkie. W związku z tym, obserwując na początku lat 60. rozwój języków programowania FORTRAN, ALGOL i COBOL, podjęła ambitną próbę opracowania jednego języka programowania, który by zastąpił tamte wszystkie. Język ten tworzono z wielkim „zadęciem", z góry zakładając, że będzie to „numer 1 wśród języków programowania", co zawarto też w jego nazwie: PL/1, czyli Programming Language No. 1. Pierwszy opis tego języka opublikowano w Nowym Jorku w 1965 r,, pierwszy translator udostępniono w 1968 r., a norma opisująca ten język w sposób całościowy została zatwierdzona w 1976 r.

Firma IBM miała bardzo silny atut, który wykorzystywała do promowania tego języka – miał być głównym językiem programowania na komputerach serii IBM 360. Ta seria komputerów rzeczywiście wstrząsnęła światową informatyką, co opisałem w „Rzeczy o Historii" z dnia 28 maja 2021 r. Język PL/1 miał wszystko, o czym tylko programista mógł zamarzyć. Operował na liczbach, tekstach, wyrażeniach logicznych i złożonych strukturach danych, przy czym można było stale kontrolować dokładność obliczeń. Wszelkie deklaracje (np. wielkości tabel) były dynamiczne, a w przypadku kiedy programista nie chciał (lub nie umiał) czegoś dobrze zadeklarować – język przyjmował ustalenia domyślne. Bardzo rozbudowana była automatyczna kontrola błędów. Niepodobna tu streścić wszystkich cech tego języka, powiem więc tylko, że w Wikipedii, publikującej zwykle zwarte i krótkie opisy, hasło poświęcone PL/1 (w wersji angielskiej) zajmuje ponad 70 tys. znaków. Dodam może także pro domo sua, że sam byłem zafascynowany tym językiem i wydałem w 1984 r. podręcznik „Programowanie w języku PL/1" (skrypt uczelniany AGH nr 938). Wcześniej wydawałem też podręczniki dotyczące programowania w językach FORTRAN, ALGOL, COBOL i BASIC, ale podobnych książek było wtedy już sporo i moje niczym szczególnym się nie wyróżniały. Natomiast mój skrypt o PL/1 to był chyba pierwszy polski podręcznik nauczający praktycznego programowania w tym języku. Przygotowując ten skrypt, opracowałem i uruchomiłem na komputerze R-32 (to taka komunistyczna wersja IBM 360) ponad 100 programów, które ilustrowały różne właściwości tego języka, skrypt był więc poparty wiedzą teoretyczną, konkretną i dobrze ugruntowaną.

Niestety, gdy skrypt się ukazał, zainteresowanie językiem PL/1 (na świecie i w Polsce) spadło praktycznie do zera. Wynikało to z faktu, że język PL/1 miał niesłychanie rozbudowaną składnię i semantykę, przez co samą swoją wielkością onieśmielał i zniechęcał potencjalnych użytkowników. Znana jest opinia wybitnego holenderskiego pioniera informatyki Edsgera Dijkstry, który napisał: „Korzystanie z PL/1 jest jak latanie samolotem z 7000 przycisków, przełączników i uchwytów do manipulowania w kokpicie". Coś w tym było – pisząc wspomniany wyżej pierwszy (i chyba jedyny) polski skrypt opisujący programowanie w języku PL/1, miewałem chwilami zawrót głowy od nadmiaru możliwości, jakie dawał do dyspozycji ten język.

Co więcej, był to język wyraźnie przeznaczony dla wielkich maszyn, klasy mainframe albo nawet superkomputerów. Nikt nigdy nie próbował implementować PL/1 na mikrokomputerach – a wkrótce miała nadejść właśnie ich era. W sumie więc ten ogromny język zbudowany zbiorowym wysiłkiem bardzo mądrych ludzi pochodzących z bardzo potężnych firm i korporacji nie odegrał w historii informatyki właściwie żadnej istotnej roli, chociaż istnieje do dziś i ma zwolenników. Nielicznych!

Autor jest profesorem AGH w Krakowie