Język żywy a język martwy. Cienka granica.

W ciągu kilkudziesięciu lat rozwoju informatyki powstało i umarło setki języków programowania. Wielu z nich nigdy nie poznali nawet bardzo doświadczeni specjaliści. Co sprawia, że jedne języki pojawiają się i szybko odchodzą w zapomnienie, a inne zdobywają popularność i stają się ważnym narzędziem w warsztacie programisty?


Apex, Boo, Dylan, Euphoria, Maple, Opa, Xen. Znacie? Większość programistów nawet o nich nie słyszała. To samo dotyczy wielu innych języków, które gdzieś kiedyś powstały i nie zrobiły żadnej kariery. Nie brakowało również takich, które odniosły wielki sukces, chociaż na początku nic tego nie zapowiadało. Dziś chcemy zastanowić się, jakie czynniki decydują o tym, że jeden język programowania odnosi sukces, a drugi umiera. Okazuje się, że granica pomiędzy życiem a śmiercią języków programowania jest cienka.


Co sprawia, że język programowania odnosi sukces?


Sukces to często splot bardzo wielu czynników. Linus Torvalds twierdzi, że rozwój informatyki bardziej przypomina ewolucję niż efekt inteligentnego planowania. Pewne idee się sprawdzają, inne, czasem przedstawione w nieodpowiednim momencie, nie dają żadnej przewagi. Jest jednak kilka przeszkód, które język programowania musi ominąć by zyskać popularność.


Przeszkody prawne

Dużą przeszkodą w rozwoju technologii mogą być kwestie licencji. W tym roku przyszłość Reacta stanęła pod znakiem zapytania, gdy Facebook dodał zapis o utracie licencji na software w przypadku pozwania firmy. .NET przeżywa renesans od czasu uwolnienia licencji na niektóre jego części. Model licencjonowania był jedną z głównych przyczyn porażki Smalltalka.


Brak wsparcia

By język się rozwijał, potrzebne jest silne wsparcie firmy lub społeczności. Dzięki temu można reagować na nowe wyzwania lub rozwiązywać ważne problemy techniczne. Wsparcie społeczności często nie jest możliwe bez patronatu dużej firmy, która płaci za rozwój języka przynajmniej kilku kluczowym osobom.


Brak narzędzi

Jeżeli w ekosystemie zabraknie kilku podstawowych narzędzi, jest mało prawdopodobne, że język zdobędzie popularność. Za niezbędne możemy obecnie uznać dobry kompilator, system do zarządzania zależnościami, przyzwoity debugger, wsparcie dla deploymentu.


Niedopasowanie do realiów

Radykalne idee zwykle nie sprawdzają w informatyce - szczególnie, jeżeli nie rozwiązują popularnych problemów. A więc i języki programowania, które w założeniu te idee realizują, będą mieć kłopoty. Naprawdę popularne języki to te ogólnego przeznaczenia. To oznacza, że dobrze rozwiązują najczęstsze problemy. Takie, które powstały do bardzo specyficznych rozwiązań, najpewniej nie wyjdą poza swoje niewielkie pole użyteczności.


Odpychająca składnia

Kwestia teoretycznie drugorzędna, ale dość istotna jeśli chodzi o przyciągnięcie nowych programistów. Przykładem mogą być dialekty Lispa, w których właściwy kod tonie pod stertą nawiasów. Dlaczego ktoś miałby się męczyć w czasie kodowania, używając nieprzyjaznej technologii? Nowy język nie zyska zwolenników tylko dlatego, że jest nowy.


Problemy z utrzymaniem

Jeżeli koszt utrzymania projektów w danym języku będzie zbyt duży, to jest niemal pewne, że biznes się od niego odwróci, skazując go na powolną śmierć. Programiści raczej nie będą się posługiwać daną technologią bez ekonomicznej zachęty.


Słaba dokumentacja

Jest to kolejny czynnik, który sprawia, że trudno przyciągnąć nowe osoby do języka. Utrudnia to znacznie proces uczenia.


Co zwiększa szanse sukcesu języka?


Szerokie wsparcie

Czy JavaScript odniósłby sukces, gdyby nie tak szybka adaptacja w przeglądarkach? Szerokie wsparcie najczęściej tworzą poważni gracze na rynku, chcąc wypełnić nową niszę. I wiele razy widzieliśmy, że właśnie to decydowało o popularności. Fortran był pierwszym takim przypadkiem w historii - IBM postawiło na niego we wczesnych dniach informatyki i dbało o to, by każda nowa platforma dostała wparcie tego języka.


Wystarczająco dobrze rozwiązuje konkretne problemy

Tu dobrym przykładem jest Java. Nie jest najlepsza we wszystkich obszarach, ale bardzo przyzwoicie podchodzi do większości konkretnych problemów, które mają programiści w codziennej pracy.


Sympatia programistów

Przejrzysta składnia, bezproblemowy system budowania, elegancja kodu. To wszystko są czynniki, które sprawiają, że programiści kochają niektóre języki programowania. Wielu nie lubi natomiast, gdy jakaś firma zastrzega sobie prawo do danego języka. Cenią open source jako społeczność, która dba o właściwy rozwój języka, aktualizuje go, szybko usuwa mankamenty. Jeżeli odnajdą te właściwości w konkretnej technologii, jej szansa na sukces rośnie.


Potrzebny jest jeszcze jeden czynnik, bez którego język nie może odnieść sukcesu: szczęście. Musi trafić w odpowiedni czas, odpowiadać aktualnemu zapotrzebowaniu, ale musi zostać również zauważony. W dobie powszechnej konsumpcji treści internetowych to dużo łatwiejsze niż jeszcze kilkadziesiąt lat temu.

Języki, które poniosły porażkę


Przykłady kilku języków programowania, które miały być wielkie, a po prostu umarły.

 

Smalltalk

Był rozwijany już w latach 70. i 80. Miał ogromny wpływ na to, co działo się później, jednak sam nie zawojował świata. Największym problemem tego języka okazało się to, że nie był open source. Właściciele żądali wysokich opłat licencyjnych, a nawet udziałów w zyskach. Wydaje się, że Smalltalk zyskiwał coraz większy rynek dzięki rozwiązaniom biznesowym IBM, ale ostatecznie pogrążyła go Java, która pojawiła się w 1995 roku. IBM szybko się na nią przesiadł, a Smalltalk stracił dużego sprzymierzeńca. De facto Smalltalk umarł, rozwija się powoli tylko poza głównym nurtem przemysłu IT.


LISP

Ten radzi sobie trochę lepiej. Pojawił się w 1958 roku, a jego ojcem jest John McCarthy. To drugi w historii język wysokiego poziomu po Fortranie, który nadal jest w użyciu, chociaż trudno mówić o nim, że jest żywy. Wykorzystuje się go raczej sporadycznie. Jako źródło niepowodzenia LISP wielu programistów wskazuje jego składnię: używa się tu ogromnej liczby nawiasów. Z tego powodu mówi się o nim jako o programistycznym dowcipie. Wydaje się jednak, że nie to było największym problemem. Według niektórych badaczy historii programowania do upadku doprowadziło LISP to, że był zbyt udany. Okazał się na tyle elastyczny, że za łatwo można było go przebudować na coś, czego użytkownik właśnie potrzebował. W rezultacie stawał się coraz bardziej rozdrobniony, powstało kilkadziesiąt dialektów tego języka.


COBOL

Dziwnie potoczyły się losy języka COBOL, który został zaprojektowany w 1960 roku. Jego paradoks polega na tym, że można go znaleźć wszędzie i nigdzie. Nadal działają na nim aplikacje biznesowe czy urządzenia, których używają miliony ludzi na całym świecie. Wystarczy wypłacić pieniądze z bankomatu, kupić produkt online czy zatrzymać się na czerwonym świetle na drodze. Wszędzie tam kryje się COBOL. Podobno na świecie istnieje ponad 220 mld linii kodu napisanego w COBOL, posługuje się nim ponad milion programistów. Co z tego, skoro to język umierający, a może nawet już martwy. Kilka lat temu pojawił się na pierwszym miejscu listy wymierających technologii. Niestety, nie pisze się w tym języku żadnych nowych aplikacji, a developerzy zajmują się już tylko utrzymywaniem starych systemów. Zmieniły się potrzeby, więc używa się nowych rozwiązań, a COBOL przechodzi do historii.

Języki na wyżynach popularności


Teraz dla odmiany języki, które wykorzystały swoje pięć minut, rozwijają się i pną coraz wyżej w rankingach popularności.


JavaScript

O JavaScript pisaliśmy niedawno dokładniej, dlatego nie będziemy tutaj rozpisywać się po raz kolejny na ten sam temat. Zainteresowanych odsyłamy do naszego artykułu. Tutaj jedynie przypomnimy, że JavaScript miał burzliwą historię. W pewnym momencie wydawał się bliski śmierci, a jednak powrócił. Znowu jest żywy, specjaliści od programowania w nim należą do dziesiątki najlepiej opłacanych programistów w USA. JavaScript to niezwykła mieszanka bardzo dobrych i bardzo złych rozwiązań, ale właśnie ona się sprawdziła. Nie dość, że ten język programowania wprowadził nową jakość do stron internetowych (wcześniej nie było tam nawet zdjęć), to jego potencjał nadal jest wykorzystywany w serwisach www, aplikacjach serwerowych, aplikacjach mobilnych itp.


Python

Ten język pojawił się w 1991 roku i rozwijany jest jako projekt open source. Pozwala na różne style programowania, co daje developerom poczucie wolności. Idealnie trafił w swój czas, można go wykorzystać w różnych dziedzinach, a przez to błyskawicznie się rozwija. Miłośnicy Pythona podkreślają, że jest on wyjątkowo przejrzysty i zwięzły. To uniwersalny język programowania, wydaje się nieograniczony jeśli chodzi o wykorzystanie. Jest idealny również dla tych, którzy dopiero uczą się programować.


Java

Na koniec przykład języka, o którym bez przesady można napisać, że jest wręcz symbolem sukcesu. W indeksie Tiobe od bardzo dawna znajduje się na pierwszym miejscu pod względem popularności, dystansując rywali. Programiści Java są najlepiej opłacanymi developerami w USA. Poza tym, duża społeczność skupiona wokół Javy też ma wpływ na jej błyskawiczny rozwój.


Wszystko wskazuje na to, że aby język programowania mógł osiągnąć sukces i ciągle się rozwijać, musi być darmowy, innowacyjny, ale powinien również korzystać z rozwiązań już znanych i sprawdzonych. Wszak inżynier Mamoń nie bez powodu powtarzał w kultowym już filmie „Rejs”: „Mnie się podobają melodie, które już raz słyszałem. No jakże może podobać mi się piosenka, którą pierwszy raz słyszę”. Z językami programowania jest podobnie.