Polski język programowania może pomóc firmom zaoszczędzić rocznie dziesiątki milionów dolarów. Nowatorskie rozwiązanie ma przewyższać modele stworzone w Javie czy C++. Problem tylko w tym, że wspomniany język powstał... 33 lata temu. Mowa o Loglan'82, którego twórcy wciąż liczą na uznanie. I może w końcu uda im się je zdobyć.
– Ten język wyprzedził swoją epokę. Ówczesne technologie komputerowe nie pozwoliły na pełne jego wykorzystanie – mówi profesor Krzysztof Diks, obecny dyrektor Instytutu Informatyki na Wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego.
Polska cyfrowa
Pierwsze języki programowania wysokiego poziomu powstawały w latach 50. ubiegłego wieku. Za jeden z najbardziej znanych przykładów uchodzi Fortran opracowany przez zespół IBM do wykorzystania na komputerach firmy. W 1959 w Zakładzie Aparatów Matematycznych PAN powstał język programowania SAKO. Pomysłodawcą byli prof. Leon Łukaszewicz i dr Antoni Mazurkiewicz. Parę lat później w Uniwerstecie Wrocławskim powstał język MOST. Spośród tysięcy języków programowania jedynie kilka pochodzi z Polski. Największym przełomem miał okazać się jednak polski język programowania, który pojawił się dopiero w latach 80.
Odpowiadał za niego zespół Instytutu Informatyki Uniwersytetu Warszawskiego pod kierownictwem profesora Andrzeja Salwickiego. Dwanaście osób z zespołu zostało potem profesorami w Polsce (6), Niemczech, Szwecji, Meksyku, USA (2), Kanadzie. W rozmowie z INNPoland, profesor Salwicki stwierdza, że z komputerami pracuje od 1959 roku. Prace nad własnym językiem, nazwanym Loglan'82 rozpoczął po 18 latach pracy informatycznej.
– W latach 70. próbowaliśmy zrobić kompilator istniejącego języka Simula 67. Zrozumieliśmy wtedy, że możemy zrobić coś o wiele lepszego. Zaczęliśmy przymierzać się do własnego języka i kompilatora – opowiada mi profesor Andrzej Salwicki.
Granty po staremu
Stworzenie własnego języka mogłoby nie dojść do skutku, gdyby nie... druga praca profesora Salwickiego, który zatrudniony był w Zjednoczeniu Przemysłu Automatyki i Aparatury Pomiarowej „Mera”. Gdy opowiedział swojemu ówczesnemu szefowi, że wraz z zespołem może przygotować język programowania lepszy od Simuli 67 dostał do podpisania nie tylko umowę na przygotowanie języka. Profesor Salwicki zauważa, że taką umowę należałoby obecnie nazwać grantem. – Byliśmy trochę przerażeni wielkością zadania – wspomina profesor Andrzej Salwicki w brulionie „Projekt Loglan: wczoraj, dziś, jutro”. Udało mu się jednak namówić do współpracy większość pracowników Zakładu Teorii Obliczeń, którym wtedy kierował, czyli kilkanaście osób.
Podpisanie umowy dało naukowcom nie tylko pieniądze, lecz także dwa komputery Mera 400, które miały być nieocenionym wkładem w prace instytutu. – Na tych komputerach musieliśmy stworzyć wszystko od zera. Nie było systemu plików czy nawet edytora tekstu – tłumaczy mi profesor Salwicki.
Według umowy w ciągu czterech lat zespół miał oddać język i kompilator Loglan'82. Zadanie wykonano przedterminowo, dostarczając przy tym system plików, edytor, assembler i wiele innych narzędzi. – Jeden z dyrektorów Zjednoczenia pytał: po co to wszystko? Mówił, że przecież Fortran może się wszystkim zająć. Nie sposób było go przekonać – słyszę od profesora Salwickiego. Komputerów Mera 400 miało powstać kilkaset sztuk. Nie dołączano do nich jednak oprogramowania Loglan'82.
– Czy powstanie języka programowania w Polsce na przestrzeni lat 70. i 80. może dziwić? – pytam rozmówcę. – Powinno dziwić. I zresztą tak się stało. Nikt nie chciał sobie zadać trudu, by wyrobić sobie rzetelną opinię na tę sprawę. Mówiono, że „na Zachodzie są przecież lepsze rzeczy.” Nie wierzono w nasz produkt – przyznaje ze twórca polskiego języka programowania.
Czy gdyby Loglan'82 powstał na Zachodzie świat programowałby chociaż częściowo w tym języku?
Lepszy, czyli jaki
Trzeba odpowiedzieć jeszcze na najważniejsze pytanie: w czym Loglan'82 miałby być lepszy od innych języków? – Nie znam języka programowania, który powstałby w taki sposób jak nasz. Znaleźliśmy problem i postanowiliśmy go rozwiązać, podeszliśmy do sprawy naukowo – mówi profesor Salwicki. Problem, o którym wspomina, to problem wiszących referencji.
– Jeśli weźmie pan dowolny podręcznik budowy kompilatorów, to znajdzie pan tam informacje na temat problemu wiszących referencji – stwierdza rozmówca. Na czym polega to zjawisko? – Wisząca referencja pojawia się, gdy w systemie usuwamy obiekt, ale wciąż istnieją zmienne, które się do niego odnoszą. Prowadzi to do powstania groźnych błędów. Mogą one zostać wykryte nawet od razu, ale efekt ich działania zostanie odwleczony nawet o pół roku. Trzeba wtedy wynająć pracowników specjalnie do czyszczenia systemu i znajdowania błędów. To pracochłonne i kosztowne – tłumaczy mi profesor Salwicki.
Z drugiej strony istnieje problem wycieku pamięci. – Jeśli z kolei nie będziemy usuwać obiektów, by nie doprowadzić do wiszących referencji, to będziemy mieć coraz mniej pamięci na dalsze obliczenia – słyszę. – Weźmy na przykład program dla banku. Musi działać cały czas. Jeśli gromadzą się w nim niepotrzebne obiekty, to serwer się dławi, zwalnia i może w końcu dojść do katastrofy – mówi profesor.
Twórcy języków programowania podchodzą do tego zazwyczaj na dwa sposoby. – Dopuszcza się istnienie problemu i przestrzega jedynie programistów, prosząc ich o ostrożność lub nie mówiąc o usuwaniu obiektów w ogóle – słyszę od rozmówcy. – To jak w tej opowieści o częstych wypadkach pociągu, w których zawsze cierpiał ostatni wagon. Zdecydowano się więc nie doczepiać ostatniego wagonu do pociągu, by uniknąć wypadków – słyszę.
W efekcie tworzy współczesne języki programowania dodają w efekcie programistom pracy. W Javie to odśmiecacz ma automatycznie usuwać śmieci, ale problemem ma być oznaczenie w ten sposób niepotrzebnych obiektów. Według twórców Loglan'82 ma pod wieloma kątami przewyższać nowsze języki powstałe w innych częściach świata.
Referencje już niewiszące
Problem miał rozwiązać profesor Antoni Kreczmar, których wchodził w skład zespołu kierowanego przez profesora Andrzeja Salwickiego i zajmował się tworzeniem kompilatora Loglanu'82. Miał on stworzyć system zarządzania pamięcią obiektów, w którym można usuwać niepotrzebne obiekty w sposób bezpieczny (tzn. bez ryzyka powstania wiszących referencji) i w czasie stałym. – Antoni Kreczmar był wybitnym człowiekiem, wielkiej skali – mówi mi profesor Salwicki.
Rozmówca tłumaczy mi, że środowisko akademickie i inżynieryjne uważało, że nie ma rozwiązania problemu wiszących referencji. – Znane dziś języki programowania cechują się albo wysokim ryzykiem związanym z usuwaniem obiektów albo niemożnością bezpośredniego usuwania wskazanych obiektów (Java) – pisał profesor Salwicki we wspomnianym wcześniej brulionie.
Cechy, które odróżniają Loglan'82 od innych języków:
– system bezpiecznego zarządzania pamięcią obiektów
– protokół obcego wołania metod (ang. alien call) w procesach
– poprawny system współprogramów
– klasy wewnętrzne i dziedziczenie ukośne
– łączenie maszyn wirtualnych w wieloprocesorowy komputer
Zdaniem twórcy języka Loglan'82 implementacja tego systemu pozwoliłaby osiągnąć dziesiątki milionów dolarów oszczędności rocznie. A język powstał przecież ponad 33 lata temu. Obecnie profesor stara się spopularyzować stare rozwiązania jego zespołu i przekazać osobom, które korzystają z nowych języków.
– Może ktoś w końcu odkryje to samodzielnie w innej części świata, a potem inne osoby dojdą do tego, że w Polsce ktoś wymyślił to już dziesiątki lat temu – zastanawia się profesor Salwicki. – Wyniki, jakie wtedy osiągnęliśmy są opublikowane w artykułach i monografiach naszego autorstwa. Zostaną docenione za kilkadziesiąt lat i na stałe wejdą do podręczników i do działalności inżynierów oprogramowania. Cierpliwości. Od wymyślenia rachunku całkowego do zastosowań w przemyśle upłynęło ok. 200 lat – kończy rozmówca.
Język wciąż żyje i można ściągnąć go na platformy Linux i Windows.
prof. Krzysztof Diks, dyrektor Instytutu Informatyki UW
Mimo że byliśmy za żelazną kurtyną, to pracownicy Instytutu prowadzili badania należące do głównego nurtu ówczesnej informatyki. To tutaj tworzono matematyczne podstawy opisu semantyki programów i ich weryfikacji. Instytut promował najnowocześniejsze w tamtym okresie języki programowania, np. język Pascal. Tu powstawała polska szkoła algorytmiki. Profesor Salwicki był promotorem tych działań.