Do dnia dzisiejszego powstało 8,500 języków programowania. Co dzieje się jednak, gdy te języki przestają być użyteczne? Indeks Tiobe jest miarą popularności języka. Kiedy języki wychodzą z użycia, spadają one na niższe miejsca w rankingu, natomiast gdy popularność języków wzrasta - zajmują one wyższe miejsca.

Języki takie jak Perl i Ruby z czasem straciły na popularności. Upadek pierwszego z nich jest prawdopodobnie spowodowany jego przestarzałością (najnowsza wersja Perl powstała w 2000 roku), a choć Ruby był intensywnie wykorzystywany w rozwoju Twittera, jest to tak naprawdę jego jedyny powód do dumy. Od tego czasu Twitter rozbudowywany jest za pomocą Javy, Swift i Scali.

Istnieje wiele powodów, dla których język programowania może stracić na popularności i wyjść z użycia. Pamiętacie Flasha? Program ten był kiedyś niezbędny do wypełniania formularzy internetowych lub oglądania treści multimedialnych w czasach przed YouTubem. Jednak fakt, że Flash stwarzał zagrożenie dla bezpieczeństwa, w połączeniu z pojawieniem się nowej wersji HTML, która umożliwiła osadzanie wideo bezpośrednio w kodzie strony internetowej, zmusił Adobe, właściciela Flasha, do zaprzestania rozwoju programu z początkiem 2020 roku.

Bardzo kusząca jest myśl, że wraz z upływem czasu, gdy języki programowania stają się przestarzałe, spadają w rankingu Tiobe, lub są po prostu zapominane, przestają one wywierać wpływ na aplikacje i można je śmiało zignorować. Co więcej, może wydawać się, że jeśli początkujący programiści marnują czas i energię na naukę umierających języków kosztem nauki programowania w popularnych językach, istnieje ryzyko, że zostaną zapomnieni wraz z językiem, którego się nauczyli.

Niestety, jakkolwiek kuszące dla nowych programistów jest skupienie się na nauce obecnie popularnych języków, niekoniecznie oznacza to, że przestarzałe języki nie powrócą. Na przykład R, którego popularność w rankingu Tiobe malała od wielu lat, zaliczył niedawny powrót. Albo SAS i SQL, pomimo bardzo niewielu zmian w ciągu ostatnich 30 lat nadal są wykorzystywane przez duże firmy do statystyk i tworzenia baz danych. Jednak najbardziej spektakularnym przykładem tego zjawiska jest niezwykły przypadek COBOL.

Wielki powrót COBOLa

W 1959, w oparciu na bazującym na angielskiej składni języku stworzonym w 1955 roku przez Grace Hopper, zaprojektowany został język programowania COBOL (Common Business-Oriented Language), który powstał jako rozwiązanie tymczasowe, aby umożliwić przenoszenie procedur przetwarzania danych Departamentu Obrony. Jednakże, zgodnie z dyktatem Miltona Friedmana, że "nie ma nic tak trwałego, jak tymczasowy program rządowy", Departament Obrony wymusił na producentach tworzenie oprogramowania za pomocą COBOL, wymagając go na wszystkich komputerach zakupionych po 1961 r. Inne departamenty federalne i wkrótce stanowe również zaczęły przetwarzać dane na COBOL, w tym Departament Spraw Weteranów, Sprawiedliwości, Zdrowia i Opieki Społecznej oraz Departament Pracy.

Pokolenia informatyków unikały COBOLa. Odrzuciły go ze względu na brak odpowiedniej struktury i poleganie na nieprecyzyjnej heurystyce, z której zrezygnowały bardziej zorganizowane języki. Te dwa czynniki, oraz problemy programistów COBOL z dokumentowaniem kodu na wczesnym etapie programowania, sprawiły, że język stał się skomplikowany i trudny do rozszyfrowania przez osoby niebędące specjalistami. W związku z tym COBOL zmagał się z dwoma problemami: malejącą liczbą programistów kodujących w tym języku, oraz trudnością w konwersji na nowoczesny kod spowodowaną brakiem dokumentacji.

Pomimo tych problemów, COBOL zyskał sporą popularność poza środowiskami akademickimi. Rządy federalne i stanowe USA szybko wprowadziły COBOL ze względu na jego elastyczność i możliwość przenoszenia danych. COBOL trafił również do świata korporacji, a wszystko to miało miejsce przed rewolucją komputerową z lat 70-tych. XX wieku. Wcześniej wiele systemów federalnych, stanowych i korporacyjnych wprowadziło COBOL do swoich komputerów mainframe. Co więcej, wiele z głównych procesów tych samych podmiotów opiera się obecnie na systemach napisanych w ponad 50-letnim kodzie COBOL. Skala tego zjawiska jest ogromna: według raportu Reutera z 2017 r. W użyciu jest nadal 220 miliardów linii kodu COBOL.

Obecnie, coraz większym problemem związanym z tym językiem jest malejąca liczba programistów, którzy mogą pomóc utrzymywać oprogramowanie napisane w COBOLu lub przekonwertować kod na inny język. Średni wiek programistów COBOLa wynosi około 60 lat, a rocznie średnio 10% z nich przechodzi  na emeryturę. Ponadto, ze względu na niechęć do COBOLa ze strony środowiska akademickiego, a także dużych firm technologicznych, brakuje specjalistów, którzy mogą zastąpić programistów COBOLa przechodzących na emeryturę. Jednak programy źródłowe wielu firm i instytucji rządowych nadal korzystają z języka COBOL w zakresie podstawowych zadań związanych z przetwarzaniem danych, a z uwagi na brak wykwalifikowanych pracowników zajmujących się konserwacją i aktualizacją programów zbyt ryzykowne staje się zarówno utrzymywanie COBOLa jak i próba konwersji podstawowych funkcji oprogramowania biznesowego do bardziej znanych języków programowania. Tak więc, o dziwo, im bardziej przestarzały staje się COBOL, tym mocniej się zakorzenia.

Problemy te uwidoczniły się wiosną tego roku w Stanach Zjednoczonych. W następstwie lockdownu spowodowanego pandemią koronawirusa dziesiątki milionów pracowników nagle straciło pracę. Spora część systemów w departamentach pracy w najbardziej dotkniętych nagłym bezrobociem stanach była napisana w COBOLu, i nie były one przygotowane na nagły wzrost liczby wniosków o zasiłek dla bezrobotnych. Opóźniło to wypłaty zasiłków w momencie, gdy pandemia zaczęła przybierać na sile. Gwałtowny wzrost liczby zgłoszeń dotyczących bezrobocia ujawnił również, jak niewielu programistów koduje w tym języku.

Ze względu na rozpowszechnienie COBOLa przez duże podmioty rządowe i korporacyjne w systemach mainframe, na brak systematycznej dokumentacji COBOLu i malejącą liczbę wyspecjalizowanych programistów, a także ze względu na przestarzałą, trudną do rozszyfrowania składnię COBOLa, nie jest możliwe szybkie uaktualnianie systemów, które na nim bazują do nowszych języków programowania. Złożoność języka nie pozwala na automatyzację przez inne języki programowania, więc próba umieszczenia COBOLa w innych procesach okazała się nieskuteczna. Outsourcing zadań związanych z COBOLem do pracowników kontraktowych za granicą również się nie powiódł. Pracownicy ci, jeżeli nie są rodzimymi użytkownikami języka, mogą mieć problemy ze składnią angielską. Istnieją również obawy o bezpieczeństwo narodowe wobec osób niebędących obywatelami, pracujących bezpośrednio przy przetwarzaniu danych wrażliwych na wyższych szczeblach administracji rządowej.

Walka z przestarzałymi językami

Zagadka COBOLa, podobnie jak w przypadku innych starszych kodów, dotyczy tego, jak skłonić programistów do nauki przestarzałych, ale kluczowych dla procesu języków. Prawdopodobnie rozwiązaniem jest solidna rekrutacja i komunikacja potrzeb w odniesieniu do tych programów. Osiągnięcie tego celu wymaga od organizacji, by te przestały ignorować kwestie związane z mainframe'ami i starszymi systemami na rzecz nowych, modnych przełomów w informatyce. Krótkowzroczne, krótkoterminowe myślenie jest przyczyną problemów związanych z językiem COBOL. IBM uruchomił już bezpłatny samouczek online dla języka COBOL. Otworzyły się fora internetowe, aby połączyć programistów COBOL z potencjalnymi pracodawcami. Rozwiązania te mają jednak charakter krótkotrwały, natomiast problem z brakiem programistów niewątpliwie pozostanie z nami na dłużej.

W dłuższej perspektywie pojawiają się dwa rozwiązania. Programy pisane w COBOLu i innych, starszych językach będą musiały być przepisane na nowsze języki, bądź też firmy będą musiały zatrudnić nowych specjalistów do utrzymania i aktualizacji dotychczasowego kodu.  Te rozwiązania nie muszą się wzajemnie wykluczać. Dzięki większemu niż kiedykolwiek wcześniej ekosystemowi języków programowania i szerokiej gamie zasobów internetowych dostępnych do nauki aktualnych języków programowania, dotychczasowi programiści dysponują bogatym zapleczem uzupełniającym ich dotychczasową wiedzę specyficzną dla danego systemu. Najlepiej byłoby, gdyby programiści znający starsze języki nauczyli się wystarczająco dużo o nowoczesnych językach, aby byli w stanie przepisać programy napisane w starym kodzie w nowy. Firmy, które zatrudniają te osoby, mogłyby zaoferować im korzyści finansowe, zachęcające do konwersji kodu, a nie samej konserwacji. Podmioty rządowe lub firmy mogą również rozważyć możliwość zawarcia umów otwartych lub przyznania premii emerytowanym programistom pracującym nad projektami konwersji z obecnie zatrudnionymi programistami, którzy pracują w nowszych językach programowania.

Aby rozwiązać długoterminowy problem malejącej podaży programistów starszych języków, jednym z rozwiązań może być oferowanie przez uczelnie wyższych certyfikatów lub kursów programowania w starszych językach. Aby osiągnąć ten cel, szkoły policealne i handlowe, które już organizują podobne szkolenia, mogłyby zatrudniać emerytowanych programistów starszych języków do prowadzenia zajęć. Potencjalnymi uczestnikami takich kursów mogą być profesjonaliści zmieniający branżę, a także osoby chcące pracować dla dużej korporacji, którym brakuje wykształcenia informatycznego lub odpowiedniego doświadczenia zawodowego. Przede wszystkim ważne jest, aby duże organizacje i instytucje rządowe zastanowiły się nad strukturami, stanowiącymi podstawę kluczowych procesów, oraz nad zasobami niezbędnymi do ich utrzymania i aktualizacji. Przy setkach miliardów, a nawet bilionów linijek starego kodu, które wciąż działają na całym świecie, problemy związane z konserwacją i konwersją stają się coraz bardziej widoczne.

Zaniedbywane języki programowania, które uważane są za przestarzałe lub nawet martwe, mogą w przyszłości stanowić poważne wyzwanie dla cyfrowej integralności organizacji, branży lub rządów. Starsze systemy stanowią wyzwanie, a także szansę dla tych, którzy potrafią myśleć strategicznie o celach długoterminowych.


#branzaIT #programming #cobol #legacycode #softwaredevelopment

RaiBay - Polish Online Auction for Tech Talents

Follow us: Linkedin, Facebook, Twitter :)