Powinniśmy przestać używać JavaScriptu? Devdebata - zalety i wady JavaScriptu

Powinniśmy przestać używać JavaScriptu? Devdebata

– Prawdziwą, silną alternatywę dla JavaScriptu może wskazać tylko sama branża. Nawet powstanie najbardziej wydajnego, prostego w użyciu języka, górującego w każdym calu nad JavaScriptem nic nie da, jeśli nie będzie on poparty odpowiednio dużą społecznością – powiedział nam Michał Moskal, Senior JavaScript Developer w From Poland With Dev. Jego jak i kilku innych programistów zapytaliśmy o to, co sprawiłoby, że zmieniliby zdanie na temat JavaScriptu.

W devdebacie udział wzięli:

  • Jakub Wietrzyk. Programista Full Stack i Administrator IT z ponad 20 letnim doświadczeniem w wielu technologiach i językach programowania. Współtwórca i współwłaściciel serwisu do księgowości internetowej wfirma.pl. Obecnie konsultant DevOps i praktyk nowoczesnych stacków technologicznych. W wolnych chwilach dzieli się wiedzą na https://medium.com/@jaaaco, buduje meble i jeździ na motocyklu enduro z dziećmi.
  • Piotrek Kosoń. Front End Architect w From Poland With Dev. Swoją przygodę z front-end zaczął klasycznie od HTML/CSS około 10 lat temu . Z czasem jego zainteresowania skupiły się na JavaScript. Obecnie, o ile akurat nie parzy kawy w areopressie, pracuje jako architekt w berlińskim startupie. W wolnym czasie dogląda swoich roślin oraz szuka inspiracji odwiedzając nowe miejsca.
  • Michał Moskal. Senior JavaScript Developer w From Poland With Dev. Entuzjasta aplikacji webowych, doświadczony w pracy z Reactem i Vue. Człowiek do zadań specjalnych z zakresu animacji i efektów. Prywatnie gwiazda polskiego country oraz gospodyni domowa.
  • Adrian Wiecheć. Programista front-end w From Poland With Dev. Zaczynał od Atari BASICa, który po jakimś czasie zamienił na PHP, a kilka lat temu na JavaScript. Prywatnie szczęśliwy mąż i ojciec, fan fantastyki, planszówek i Linuksa.

1. Jakie znasz projekty, sytuacje, w których JavaScript sprawdza się wzorowo i dlaczego?

Jakub Wietrzyk, Programista Full Stack i Administrator IT: Znam stosunkowo mało przypadków, w których JS się nie sprawdza. Z powodzeniem używam JS w projektach frontendowych, backendowych (node.js – gRPC, REST i GraphQL) oraz tych powiązanych ze sprzętem i automatyką domową (IoT). Do niektórych rozwiązań wygodniej jest użyć np. Pythona, czy nawet PHP, np. ze względu na istnienie lepszej biblioteki rozwiązującej konkretny problem, ale nawet wtedy jest to często pojedyncze uruchomienie (exec) wywoływane przez usługę napisaną w JS. 

Zaletą JS jest niewątpliwie możliwość uruchomienia w wielu różnych środowiskach: Windows, Linux, MacOS, AWS Lambda, RaspberryPI (ARM). 

Piotr Kosoń, Front End Architect w From Poland With Dev: Za pomocą JavaScript możemy rozwiązać praktycznie każdy biznesowy problem. Bardziej istotne jest czy to zawsze będzie najlepszy wybór – sam uważam, że o ile nie ma uzasadnionej potrzeby sięgania do któregoś niskopoziomowego języka powinniśmy rozważyć JS.

 

Michał Moskal, Senior JavaScript Developer w From Poland With Dev: JavaScript zdaje egzamin w wielu sytuacjach. Gdyby tak nie było, to ten język nie byłby aż tak popularny. Dobrze wykorzystany sprawdzi się nie tylko przy drobnych dynamicznych elementach stron, ale także przy budowie aplikacji webowych, desktopowych i mobilnych. Nie można również zapomnieć o całym wachlarzu zastosowań backendowych. Uniwersalność tego języka wciąż mnie zdumiewa. Zastanawiam się, czym jeszcze mnie zaskoczy w przyszłości.

Warto jednak podkreślić, że wykorzystanie jakiejkolwiek technologii, powinno być przede wszystkim podyktowane świadomą decyzją i konkretnymi argumentami.

Adrian Wiecheć, Programista front-end w From Poland With Dev: Jeśli piszemy niskopoziomowe sterowniki albo potrzebujemy optymalizacji na poziomie sprzętu, wybierzmy C/C++. We wszystkich innych przypadkach JavaScript albo prowadzi, albo zdążył już silnie zaznaczyć swoją obecność.

 

2. Zalety JS – co uważasz za największą zaletę JavaScriptu i dlaczego?

Jakub Wietrzyk, Programista Full Stack i Administrator IT: Jeżeli koniecznie miałaby to być jedna zaleta to wybrałbym stosunkowo niski próg wejścia. Początkujący programista nie potrzebuje żadnego IDE, SDK czy kompilatora – wystarczy przeglądarka, która jest obecna praktycznie w każdym graficznym systemie operacyjnym. Istnieją też serwisy typu codepen.io, które pomagają w początkowych etapach nauki organizując przestrzeń roboczą w rodzaj onlinowego IDE. Do uruchomienia PHP czy Pythona potrzebny jest kompilator, a do uruchomienia jakiegokolwiek serwisu webowego trzeba go skonfigurować z serwerem WWW, np. Nginx czy Apache – co nie jest super proste dla początkującego.

Piotr Kosoń, Front End Architect w From Poland With Dev: Zdecydowanie społeczność, która urosła wokół tego języka. To dzięki niej język szybko rozwija się, powstaje masa różnych bibliotek, frameworków oraz narzędzi, które poprawiają proces developmentu. Ta popularność ma też swoje ciemne strony – w tym gąszczu rozwiązań i różnych opinii zbyt łatwo znajdziemy złe praktyki.

Michał Moskal, Senior JavaScript Developer w From Poland With Dev: Za największą siłę i zaletę JavaScriptu uważam przede wszystkim jego prostotę oraz popularność. Stale rozwijająca się branża IT cały czas potrzebuje nowych specjalistów, a niski próg wejścia w technologie JSowe jest tutaj wielką pomocą. Z kolei popularność tego języka przekłada się bezpośrednio na wielkość zbudowanej wokół niego społeczności, ilość bibliotek, materiałów, meetupów i konferencji branżowych. Mamy pod tym względem wielki komfort – łatwo jest nam się uczyć nowych rzeczy, łatwo pomagać innym i tym samym łatwo dołożyć cegiełkę do rozwoju całej technologii i społeczności wokół niej zbudowanej.

Adrian Wiecheć, Programista front-end w From Poland With Dev: JavaScript to język dla ludzi, którzy potrzebują “zrobić robotę”. Nie wymyślony na uniwersytetach, nie oparty na rewolucyjnych teoriach naukowych, ale za to dostępny dla każdego i wszędzie – zarówno pod względem ceny, popularności, jak i progu wejścia i wszechobecności. Niczym BASIC na komputerach ośmiobitowych czy PHP w początkach internetu.

3. Powinniśmy przestać używać JavaScriptu? Jakie JS ma wady?

Jakub Wietrzyk, Programista Full Stack i Administrator IT:

Jestem innego zdania, jeśli jednak miałbym znaleźć argumenty przeciw to na pewno byłyby to:

  • mnogość wersji (ECMASCRIPT 2009-2017 i ich wsparcie przez przeglądarki) – co może być stosunkowo łatwo rozwiązane przez transpilator babel,
  • szybkość rozwoju frameworków – nawet te największe i najpopularniejsze (React) wymagają od developerów ciągłej nauki, bo pojawiają się w nich często nowości i zmiany wymagające nowego podejścia do starych problemów, co dla niektórych programistów może być istotną wadą tego środowiska, bo zamiast “trzaskać identyczne projekty” muszą podjąć wysiłek nauczenia się i zrozumienia tych nowości lub pozostać w starszych, potencjalnie zawierających błędy, wersjach,
  • nie do każdego zastosowania JS się nadaje: tam gdzie liczy się ultrawydajność czy w systemach czasu rzeczywistego.

Piotr Kosoń, Front End Architect w From Poland With Dev: Przychodzi mi do głowy tylko jedna sytuacja – żeby zacząć używać TypeScript. Tak naprawdę to ciężko wyobrazić sobie web bez JavaScript i na horyzoncie narazie nie widać godnego następcy.

Michał Moskal, Senior JavaScript Developer w From Poland With Dev: Nie uważam, że powinniśmy całkowicie przestać używać JavaScriptu. Jestem natomiast zwolennikiem używania go z głową. Nie przepadam za kilkoma trendami, które bardzo mocno rozwinęły się w społeczności przez ostatnie lata, m.in. za tymi spod znaku „CSS in JS”. Mam wrażenie, że próbują one rozwiązać problemy, które już zostały rozwiązane lub zwyczajnie nie istnieją. Długo przyglądałem się dyskusji na ten temat i nie znalazłem ani jednego rzeczowego argumentu, który przekonałby mnie do takiego rozwiązania. Widzę natomiast szereg luk i niebezpieczeństw.

Dlatego też uważam, że wykorzystywanie JavaScriptu do każdego możliwego celu jest nieuzasadnioną i niebezpieczną modą.

Adrian Wiecheć, Programista front-end w From Poland With Dev: Wprost przeciwnie – zaprzestanie używania Javascriptu w momencie, kiedy język jest w szczytowej formie, byłoby głupotą. Jedyny kontekst, w którym, można to pytanie potraktować poważnie – to “czy powinniśmy zamienić JavaScript na TypeScript”. I tu również podałbym odpowiedź przeczącą: jak uczy przykład CoffeScriptu, JavaScript wybebeszy wszystkie pożyteczne innowacje z konkurenta, a zwłoki porzuci w rowie historii.

4. Jaką polecasz alternatywę dla JavaScriptu?

Jakub Wietrzyk, Programista Full Stack i Administrator IT: To zależy do jakich zastosowań. 

Do backendu mógłby to być dowolny z dorosłych języków programowania dający się uruchomić po stronie serwera, a ze względu na ew. wsparcie w usługach chmurowych (AWS Lambda, Google Cloud Functions) ograniczyłbym się to Python’a lub Go. Wydaje mi się, że na Pythona powstało więcej gotowych bibliotek niż do, stosunkowo młodego, Go.

Na frontend nie mamy zbyt wielkiego wyboru i w jakimś zakresie z JS trzeba korzystać, choćby w postaci skompilowanej na podstawie innego języka. W ostatnich latach pojawiły się ciekawe alternatywy do JavaScript takie jak:

  • Flutter (oparty o język Dart), wspierany przez Google, jest to tak naprawdę alternatywa dla Javascriptowego React Native,
  • dialekty JavaScript, np. TypeScript – wspierany przez Microsoft, oferujący silne typowanie, interfejsy i inne możliwości, których brakuje w JS.

Piotr Kosoń, Front End Architect w From Poland With Dev: Po stronie frontu możemy spróbować reasonML, elm oraz clojurescript. Każdy z tych języków ma inną charakterystykę i choć raczej nie ma sensu od razu rzucać się na któryś z nich, to warto je poznać.

Na backend zamiast node mamy cały wachlarz różnych rozwiązań. Wymienię tylko kilka z nich, które według mnie są interesujące – PHP, Python, Go. Każdy z nich swobodnie może zastąpić JS, szczególnie ten ostatni Go wydaje się najbardziej zyskiwać w ostatnim czasie.

Michał Moskal, Senior JavaScript Developer w From Poland With Dev: Uważam, że prawdziwą, silną alternatywę dla JavaScriptu może wskazać tylko sama branża. Nawet powstanie najbardziej wydajnego, prostego w użyciu języka, górującego w każdym calu nad JavaScriptem nic nie da, jeśli nie będzie on poparty odpowiednio dużą społecznością. Na chwilę obecną nie widzę silnej alternatywy dla JSa, a obserwując trendy na rynku nie spodziewam się, żeby w krótkim czasie taka alternatywa powstała.

Jedynym przykładem jaki przychodzi mi na myśl, który ma już zbudowaną społeczność i silnie się rozwija jest TypeScript. Nie nazwałbym go jednak alternatywą dla JavaScriptu, a raczej kolejnym etapem jego rozwoju.

Adrian Wiecheć, Programista front-end w From Poland With Dev: Na web? Żadną. Na serwer? Jeśli potrzebujemy prostego CRUDowego API, może Rails (Ruby) albo Symfony (PHP) wystarczy, ale jeśli spodziewamy się odrobinę bardziej asynchronicznych operacji, warto jednak zacząć od razu w Node. Na mobile? Również JavaScript – React Native zaczyna się ostatnio wybijać, nawet Microsoft się zorientował. Nawet na wszelkiego rodzaju urządzeniach “IoT” JavaScript radzi sobie przeważnie całkiem dobrze.

5. W jaki sposób chciałbyś, aby świat rezygnował z JavaScriptu?

Jakub Wietrzyk, Programista Full Stack i Administrator IT: Raczej nie ma na to szans, podobnie jak PHP szybko nie zniknie, bo WordPress. Jeśli chodzi o przeglądarki internetowe to było kilka prób podjętych przez największych: ActionScript uruchamiany we Flashu, VBScript i później Silverlight Microsoftu – dzisiaj już nikt o nich nie pamięta. Jedyny język skryptowy, który przetrwał wojny przeglądarek to JS i pewnie długo to się nie zmieni. Obecnie chyba tylko WebAssembly ma jakiekolwiek szanse na wprowadzenie nowych języków do tego środowiska.

Piotr Kosoń, Front End Architect w From Poland With Dev: Zdecydowanie nie chciałbym żeby świat zrezygnował z JavaScriptu. JS ma wiele wad, ale poprzez ilość dostępnych materiałów oraz łatwość developmentu sprawia, że próg wejścia w świat programowania jest stosunkowo niski, co niewątpliwie jest wielką zaletą.

Michał Moskal, Senior JavaScript Developer w From Poland With Dev: Chciałbym, żeby to była naturalna konsekwencja rozwoju branży. Chyba nikt nie wyobraża sobie scenariusza, w którym cały świat przestaje korzystać z JavaScriptu z dnia na dzień. 

Osobiście czekam na dzień, kiedy ES5 oraz jQuery staną się pieśniami przeszłości. Nie chcę umniejszać ich roli, są to przecież wielcy bohaterowie naszego podwórka, ale uważam że przyszła już pora na nowe i nie powinniśmy za długo patrzeć wstecz.

Adrian Wiecheć, Programista front-end w From Poland With Dev: Toczą się dyskusje w temacie, że “JavaScript” to fatalna nazwa dla języka, który z Javą nie ma nic wspólnego. To byłby jedyny sensowny powód do rezygnacji z JavaScriptu – na rzecz tego samego języka pod nową nazwą.

6. Co musiałoby się stać, żebyś zmienił zdanie o JavaScriptcie?

Jakub Wietrzyk, Programista Full Stack i Administrator IT: Musiałby powstać jakiś lepszy język, który:

  • ma natywne wsparcie w przeglądarkach,
  • uruchamia się łatwo na backendzie i w usługach chmurowych,
  • da się w nim programować na inne platformy i systemy operacyjne,
  • ma bogatą bazę bibliotek podobnej wielkości co NPM.

Piotr Kosoń, Front End Architect w From Poland With Dev: Kto wie, może gdyby powstał język o równie szerokim zastosowaniu, który w krótkim czasie zbudowałby porównywalną społeczność oraz oferował jeszcze szybszy development?

Michał Moskal, Senior JavaScript Developer w From Poland With Dev: Wystarczy, że upłynie trochę czasu – myślę, że to będzie naturalna konsekwencja rozwoju branży. Branża IT jest tak dynamiczna, że możemy tylko zgadywać jak będzie wyglądała za 5, czy 10 lat. Kurczowe trzymanie się utartych szlaków i bezpiecznej strefy komfortu to dla developera pewna ścieżka do zawodowej porażki. Nie możemy sobie pozwolić na zostanie w tyle, bo pewne zaległości będzie bardzo trudno nadrobić. 

Adrian Wiecheć, Programista front-end w From Poland With Dev: Hmmm… Może nowy język funkcjonalny, który łączy łatwość użycia uniksowego shella z precyzją języków lispo-podobnych? Chociaż JavaScript i do tego się zbliża – propozycja “pipeline operatora” jest już w TC39.


Zdjęcie główne artykułu pochodzi z unsplash.com.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
Docker. Wstęp do konteneryzacji na przykładzie PHP i Laravela