Co sprawia, że nowy język programowania jest warty uwagi? Devdebata (cz. 2)
Programistów rozwijają ciekawe projekty, wyzwania, ale też poznawanie nowych języków programowania. Coraz częściej słyszymy o nowych językach (ostatnio pisaliśmy o języku Elchemy, który stworzył Krzysztof Wende), ale nie wszystkie zdobywają zainteresowanie developerów. Dlaczego? Co sprawia, że nowy język programowania jest warty uwagi? O to zapytaliśmy naszych ekspertów w drugiej części devdebaty.
W pierwszej części devdebaty, zapytaliśmy doświadczonych developerów o to, co przekonałoby ich do zainteresowania się nowym językiem, jakie materiały ułatwiłyby im wykorzystanie go do swoich projektów oraz o to, czy stare języki kiedyś znikną i dlaczego. Dzisiaj przedstawiamy drugą część, z której dowiecie się, jakie nowe języki programowania są warte uwagi, ale też o tym, co definiuje to, że nowy język jest warty uwagi.
Odpowiedzi udzielają:
Jacek Kiernicki. Senior Magento Developer w Divante. Programista, pasjonat i zwolennik relatywnie prostych i skutecznych rozwiązań. W wieku 17 lat rozpoczął przygodę z elektroniką i programowaniem mikrokontrolerów. Kilka lat później jego urządzenia zdobywały nagrody na targach poznańskich. 15 lat temu porzucił elektronikę na rzecz rozwiązań webowych. Od 7 lat pomaga europejskim firmom rozwinąć się w branży eCommerce.
Krzysztof Godlewski. Head of Web w 10clouds. Przygodę z programowaniem zaczął we wczesnych latach dziecięcych. Z powołania back-endowiec. Od trzech lat związany z firmą 10Clouds. gdzie aktualnie opiekuje się zespołem odpowiedzialnym za tworzenie aplikacji webowych.
Krzysztof Kędzierski. Senior Developer w RST Software Masters. Absolwent wydziału Elektroniki Politechniki Wrocławskiej. Specjalizuje się w dostarczaniu rozwiązań opartych na platformie JVM. Tworzył oprogramowanie dla branży telekomunikacyjnej, finansowej, motoryzacyjnej i transportowej. Skuteczny w dekompozycji złożonych problemów. Skoncentrowany na rozwiązywaniu realnych problemów biznesowych i zorientowany na potrzeby klienta.
Grzegorz Śliwiński. Python Developer w Clearcode. Absolwent Politechniki Wrocławskiej z 8-letnim doświadczeniem programistycznym. Otwarty na rozmaite wyzwania, co zaowocowało barwną ścieżką zawodową, która jakiś czas temu zaprowadziła go do roli managerskiej. Po rocznej przygodzie z zarządzaniem, z nową perspektywą powrócił na łono technologii i z przyjemnością poświęcił się swojej największej pasji – tworzeniu rozwiązań przetwarzających potężne ilości danych. Od 5 lat w Clearcode projektuje i rozwija oprogramowanie dla branży AdTech. Fan testowania. Najwięcej satysfakcji czerpie ze wspólnego rozwiązywania problemów wraz z innymi członkami zespołu oraz dostarczania rozwiązań, które adresują realne problemy klientów.
Adam Tulejko. PHP Developer w Piwik PRO. Backend Web Developer z kilkunastoletnim stażem, głównie w PHP. Zwolennik łączenia dobrych praktyk z pragmatycznym podejściem, w szczególności interesuje się zagadnieniami dobrego designu w oprogramowaniu oraz przetwarzaniem dużych ilości danych . Obecnie w Piwik PRO zajmuje się rozwojem i optymalizacją platformy web analytics, obsługującej codziennie miliony requestów.
Spis treści
Pytanie #5. Jaki nowy język programowania poznałeś ostatnio i co Cię w nim zaciekawiło?
Odpowiada: Jacek Kiernicki, Senior Magento Developer w Divante:
To jest bardzo dobre pytanie, na które czekałem od początku naszej rozmowy. W tym pytaniu zaszyta jest konkluzja, że im więcej się zna języków tym lepiej. Nic bardziej mylnego. Lepiej jest bowiem dogłębnie poznać jeden lub dwa języki, zrozumieć ich mocne strony i ich słabości, niż ciągle pobieżnie poznawać nowe języki i nie umieć ich w pełni wykorzystać. Dużo ważniejszym od poznawania nowych języków jest bowiem poznawanie nowych frameworków pisanych w danym języku. Najlepiej takim, który zna się najlepiej. To właśnie frameworki pozwalają na efektywną i relatywnie szybką, a więc tanią, budowę nowych aplikacji.
Weźmy za przykład jakże popularny język PHP. Pomimo jego popularności na rynku stale brakuje programistów dobrze znających takie frameworki jak Symfonia lub Zend, a jeszcze mniej znających platformy takie jak Magento lub PimCore. Prawdziwy potencjał komercyjny jest właśnie w tych dwóch ostatnich. Aby być cenionym programistą dajmy na to wspomnianego tutaj Magento nie wystarczy sama znajomość PHP lub JavaScript w przypadku front-endu. Tutaj z całą pewnością przydadzą się Symfonia oraz dla frontu Knockout lub React. Nie bez znaczenia też jest praktyczna znajomość wzorców projektowych i zagadnienie zwane DI (Dependency Injection).
Jeszcze raz podkreślam, że sam język nie wystarczy. To tak jakbym uczył się języka angielskiego bez kontekstu zwyczajów panujących w krajach anglosaskich. Niby coś będę umiał powiedzieć, ale bez znajomości kultury nie zostanę dobrze zrozumiany. Język trzeba znać, żeby coś powiedzieć, ale żeby mówić z sensem potrzebna jest znajomość tematu, na który się wypowiadam. W programowaniu takim tematem są frameworki. Już bardzo dawno nie poznałem nowego języka. Wolę rozwijać te, które znam, by w pełni wykorzystywać ich coraz to nowe możliwości oraz poznawać nowe frameworki i platformy zbudowane w językach, w których pracuję. Ostatnią taką platformą open source był PimCore. Jest to bardzo dynamicznie rozwijający się system pozwalający zarządzać informacją produktową (PIM).
Odpowiada: Krzysztof Godlewski, Head of Web w 10clouds:
Ostatnio mocno kibicuję Elixirowi. Cechą, która przykuła moją uwagę było oparcie języka na maszynie wirtualnej Erlanga (BEAM) wraz z całym jej dobrodziejstwem. Podoba mi się to, że nadal jest to język funkcyjny, ze składnią przyjemniejszą niż Erlang. Sporo filozofii Erlangowej zostało zachowanej, ale otrzymujemy też usprawnienia, jak chociażby dużo lepsza obsługa stringów w porównaniu z Erlangiem. Pod spodem natomiast nadal mamy środowisko z ponad 30-letnim doświadczeniem w boju. Myślę, że jest to język, który zdecydowanie ma przyszłość.
Odpowiada: Adam Tulejko, PHP Developer w Piwik PRO:
Ostatnio poznanym przeze mnie językiem jest Rust, który łączy możliwości języka niskiego poziomu z programowaniem funkcjonalnym i bezpieczeństwem w zarządzaniu pamięcią bez utraty wydajności. Jest to język, który z powodzeniem stara się rozwiązać bolączki programistów C i C++, a jednocześnie dostarcza składnię podobną do współczesnych języków takich, jak Haskell czy Ruby, w których programowanie jest znacznie przyjemniejsze niż w C i C++.
Rust nie jest jednak prostym językiem i poznać wszystkich jego elementów wymaga czasu. Jeśli jednak jesteś skłonny/a go poświęcić, nagrodą będzie umiejętność pisania bardzo wydajnych aplikacji. Ja uważam, że warto. Z resztą nie tylko ja, Rust został najbardziej lubianym językiem w 2016 i 2017 roku na Stack Overflow.
Pytanie #6. Co definiuje, że nowopowstały język jest przyszłościowy i warto się go uczyć?
Odpowiada: Krzysztof Godlewski, Head of Web w 10clouds:
Są sytuacje, w których sprawa jest jasna – istniejące środowisko dostaje nową zabawkę i jeżeli jej się nie nauczysz, za jakiś czas wypadniesz z gry. Mam na myśli języki takie jak Swift czy Kotlin. Na pewno gdy za daną technologią stoi duży gracz, jest szansa, że warto zainteresować się danym językiem – patrz Go czy TypeScript. W pozostałych przypadkach – trudno mi ocenić. Istnieją języki, które w pewnym momencie „zaklikują” i po kilku latach okazuje się, że jest na nie zapotrzebowanie (np. Scala). Na pewno warto jest znać kilka języków, żeby mieć możliwość rozwiązania problemu używając najbardziej odpowiednich narzędzi.
Odpowiada: Grzegorz Śliwiński, Python Developer w Clearcode:
Na pierwszym etapie promocja – to, by zbudować na początku taką bazę entuzjastów, którzy byliby skłonni wprowadzać ten nowy język w projektach, nad którymi pracują. Na drugim etapie zapotrzebowanie rynku. Te projekty muszą się udać, co stworzy zapotrzebowanie na większą liczbę inżynierów znających dany język. Same możliwości i narzędzia mają dzisiaj znaczenie drugorzędne. Zawsze można je przeportować pomiędzy językami.
Odpowiada: Adam Turlejko, PHP Developer w Piwik PRO:
Bardzo trudno jest odpowiedzieć na to pytanie. Wiele czynników wpływa na to, czy dany język zostanie powszechnie uznany. Istnieją języki, takie jak D, które nie zdobyły popularności mimo tego, że są udane. Współcześnie ważne jest, aby za danym językiem stała jakaś organizacja, która będzie w stanie go wypromować i znaleźć dla niego niszę. Przykładami są choćby Java, za którą stał Sun Microsystems oraz Go, którego wspiera Google. Z kolei na popularność PHP wpłynęła łatwość, z jaką można się go nauczyć oraz konkretne zastosowanie (web development).
Dobrą wskazówką, czy przed danym językiem maluje się jasna przyszłość jest to, czy korzystają z niego ważne firmy i instytucje oraz czy zaimplementowano w nim ważne dla nich oprogramowanie. W przypadku Rust’a za taki sygnał można uznać fakt, że został on użyty do stworzenia nowego silnika CSS przeglądarki Firefox, a także jest używany przez serwisy internetowe – np. Trivago – do zwiększenia wydajności swoich rozwiązań.
Pytanie #7. Dlaczego powstają nowe języki programowania i czy rynek nie jest już nimi nasycony?
Odpowiada: Jacek Kiernicki, Senior Magento Developer w Divante:
Nowe języki wbrew pozorom nie powstają tak szybko. Wciąż najpopularniejszymi językami są PHP, Java, JavaScript, C# czy C++. Przypomnę, że ten ostatni ma już 35 lat! Powstają natomiast nowe frameworki i platformy i to one mogą sprawiać wrażenie, że na rynku jest coraz więcej języków. W rzeczywistości jest coraz więcej frameworków i systemów open source.
Dlaczego powstają? Najwyraźniej rynek ich potrzebuje. Gdyby nie było zainteresowania nowymi produktami przestałyby one powstawać. Rynek ciągle jest nienasycony i szuka możliwie najbardziej zaawansowanych rozwiązań w możliwie najniższej cenie. Myślę, że cena ma tutaj kluczowe znaczenie. Najbardziej popularne są frameworki i systemy typu open source, które są darmowe, więc co stanowi ich koszt? Tutaj czas wdrożenia stanowi koszt. Czas zaangażowania programisty stanowi lwią część kosztów wdrożenia systemu. Nowe platformy powstają więc po to, by możliwie jak najbardziej skrócić czas wytworzenia gotowego produktu i tym samym obniżyć koszty jego wytworzenia dostarczając przy tym rozwiązań, jakich oczekuje dzisiejszy rynek.
Odpowiada: Krzysztof Kędzierski, Senior Developer w RST Software Masters:
Języki powstają, ponieważ nikt nie zabronił ich tworzenia. Zazwyczaj cel jest taki, aby zrobić coś prościej, lepiej i przez to stworzyć warunki do szybszego wytwarzania oprogramowania. Ja, tempo powstawania nowych języków programowania i frameworków, uznaję za chorobę IT. Większość developerów uczy się ich, bo tego oczekuje od nich rynek pracy, a nie istnieje język, który rozwiązuje wszystkie problemy. Developerzy znają więc narzędzia, a coraz rzadziej rozumieją mechanizmy, które tymi narzędziami sterują.
Odpowiada: Grzegorz Śliwiński, Python Developer w Clearcode:
Niektóre powstają dla zabawy lub żartu (tak jest z niektórymi popularnymi narzędziami). Lecz większość nowych języków próbuje zaadresować jakiś problem autora, którego w tym momencie nie da się wygodnie rozwiązać inaczej. To, czy ten język zainspiruje stare, by podchwycić jakąś funkcjonalność, czy sam na niej zyska, jest chyba mniej ważne niż fakt, że otrzymujemy w łapki kolejne narzędzie.
Dziękujemy wszystkim zaproszonym gościom za udział w debacie. Mam nadzieję, że dzięki niej poznaliście różne punkty widzenia dotyczące nowych języków programowania. Pochwalcie się w komentarzach, jaki ostatnio język poznaliście i opowiedzcie, jakie są Wasze spostrzeżenia na jego temat.