#15 — Alfabet Kiciora – aplikacje webowe

W tym odcinku omawiam od strony biznesowej różne technologie istotne z punktu widzenia tworzenia oprogramowania i szeroko pojętego IT.

💡
Spodobał Ci się ten odcinek? Zasubskrybuj mój podcast na swojej ulubionej platformie i podziel się nim ze znajomymi!

Transkrypcja odcinka

Cześć, nazywam się Krzysztof Rychlicki-Kicior i witam cię serdecznie w podcaście „Software z każdej strony”, w którym dowiesz się, jak łączą się ze sobą świat biznesu i IT.

To jest odcinek #15 – Alfabet Kiciora – aplikacje webowe. W tym odcinku omawiam od strony biznesowej różne technologie istotne z punktu widzenia tworzenia oprogramowania i szeroko pojętego IT. Nie będę analizował technicznych niuansów technologii. Skupię się bowiem na przydatnych przy podejmowaniu wyborów, na przykład podczas wyboru technologii przy realizacji projektu informatycznego czy dobranie technologii do jakiegoś zadania postawionego przed nami w firmie.

Forma alfabetu, abecadła i takiego wymieniania elementów od a do z, ma dość długą tradycję. Czy to w formie artykułu w gazecie, w czasopiśmie, czy nawet książki. Pewnie starszym słuchaczom może być znana książka: Abecadło Kisiela. Ja również do tej konwencji się przychylę, chociaż w swoim stylu, w taki sposób, aby nie zaburzyć klarowności przekazu i całego procesu objaśniania.

Technologii informatycznych, za pomocą których można realizować projekty, osiągać jakieś założone cele biznesowe, są tysiące, a może i nawet dziesiątki tysięcy. Na każdą literę, naprawdę na każdą, można by taką technologię znaleźć. Ja, siłą rzeczy, skupię się na pewnej próbce, wycinku. Postanowiłem ograniczyć, przynajmniej w zakresie danego odcinka, zakres technologiczny, zakres aplikacyjny. Czyli skupić się na aplikacjach webowych. Jednocześnie będzie to taki misz-masz, bo będę odwoływał się do pewnych języków programowania, czy też frameworków, natomiast z uwagi na to, że chcę zachować spójność narracji, nie będę na siłę dopasowywać liter do całego alfabetu. Może też tak się zdarzyć, że pod jedną literą pojawi się kilka pojęć. Ja to podejście alfabetyczne traktuję z takim, można powiedzieć, dystansem.

Tak, czy siak dziś skoncentruje się na aplikacjach webowych, czyli aplikacjach działających w przeglądarce. Skupię się przede wszystkim na zastosowaniach, na popularności technologii, także w czasie, a także na kwestiach związanych z pozyskiwaniem specjalistów danej technologii. Czyli nie na stricte technicznych aspektach. Nie ukrywam, że zwłaszcza, jeżeli, i drogi słuchaczu, droga słuchaczko, jesteś osobą z doświadczeniem technicznym, to mogą pojawić się pewne uproszczenia. Natomiast nie chciałbym, aby takie, możne powiedzieć, postrzeganie przekazu było zaburzone przez dążenie do totalnej poprawności.
No dobrze, chyba dosyć już tego wstępu. Zacznę od takiego słowniczka, uzupełnienia. Pojawią się tu pojęcia, które zdecydowanie warto sobie doprecyzować, bo one nawet w środowisku technicznym nie zawsze są bardzo jednoznaczne, a będę się nimi dzisiaj posługiwał.

Najpierw, rzecz chyba najprostsza, czyli język programowania. O językach programowanie, ich nauce w kontekście rynku pracy mówi się bardzo dużo. Co to właściwie jest taki język programowania, od tej strony tej praktycznej? Nie będę tutaj używał formalnych definicji. Język programowania to nic innego jak sposób przedstawiania poleceń wydawanych komputerowi. Język naturalny, taki jak polski czy angielski, którym posługujemy się na co dzień, to też sposób przedstawienia pewnych poleceń, informacji, tylko pomiędzy ludźmi. Na tej samej zasadzie wydajemy polecenia komputerowi. Co do zasady, teoretycznie we wszystkich popularnych językach programowania, i także w wielu niepopularnych, można by pisać dowolne rodzaje aplikacji. Natomiast w praktyce, niektóre z tych języków są zdecydowanie bardziej dedykowane konkretnym zastosowaniom. Można powiedzieć, że nie ma takiego jednego języka programowania, który byłby używany we wszystkich istotnych rodzajach aplikacji. Będę oczywiście zaznaczał, przy omawianiu konkretnych pozycji, do czego są one używane najczęściej.
Oprócz języka programowania chciałbym też wspomnieć o dwóch pojęciach. Mogą się przydać wam te pojęcia nie tylko w kontekście tego odcinka, ale w ogóle przy jakichkolwiek rozmowach związanych z IT. Pierwsze z nich to „biblioteka”. Biblioteka to nic innego jak zbiór narzędzi, które pomagają osiągnąć konkretny efekt. Jeżeli w dowolnym programie, pisanym w dowolnym języku chcemy coś wyświetlić na ekranie, pobrać plik z internetu, wysłać w sposób programistyczny wiadomość e-mail, wyświetlać jakieś obrazki, to do tego wszystkiego potrzebne są biblioteki. To jest też poniekąd przyczyna, można powiedzieć sukcesu dynamicznego rozwoju IT, to jest właśnie to, że my bardzo rzadko robimy rzeczy naprawdę od zera. My nie wynajdujemy koła na nowo.  Dobra programistka, czy dobry programista mógłby napisać wszystko od zera. Natomiast po co tracić czas i jeszcze ryzykować, że to co napiszemy sobie sami, będzie zawierało jakieś błędy, pomylimy się. Jeśli chodzi o te bibliotek, to najpopularniejszy język programowania mają setki, tysiące dostępnych bibliotek do typowych zastosowań. Z kolei te mniej popularne, nie zawsze mają biblioteki do wszystkiego. Natomiast takim drugim ważnym pojęciem, poniekąd pokrewnym, jest framework.

Framework po polsku to rama szkieletowa, rama konstrukcyjna. Natomiast jeśli chodzi o znaczenie, to framework to taka można powiedzieć biblioteka używana do szybkiego tworzenia fundamentów aplikacji. Aplikacje webowe są często tworzone za pomocą frameworków i założenie jest takie, że bardzo szybko można, dosłownie w kilka godzin, czy nawet jeszcze szybciej, stworzyć schemat, szkielet aplikacji, który będzie chociażby umożliwia łączenie się z jakąś bazą danych, obsługę sesji w przeglądarce, możliwość logowania, czy choćby tak powszechnie znane ciasteczka.
Skoro mamy już te podstawowe pojęcia, to powiedzmy sobie: czym właściwie jest aplikacja webowa, bo to wcale nie jest aż tak trywialne. Aplikacja webowa to aplikacja, która działa w przeglądarce. Warto zwrócić uwagę, że często stosuje się wymiennie pojęcia aplikacja internetowa, natomiast nie jest to do końca tożsame. Bardzo łatwo można powiedzieć, rozróżnić to w następujący sposób: aplikacja internetowa to taka, która korzysta z Internetu, czyli z globalnej sieci teleinformatycznej do przekazywania danych. Alternatywnie można mieć aplikację intranetową, czyli na przykład działającą tylko w naszej sieci firmowej, czy w organizacji. Taka aplikacja nie jest wtedy dostępna z zewnątrz. Alternatywnie może być aplikacja internetowa, która nie jest aplikacją webową. Takim przykładem może być chociażby gadu-gadu. Kiedyś funkcjonowała na komputerze, w systemie Windows, choć z czasem pojawiła się też webowa wersja gadu-gadu. Nie każda aplikacja webowa musi być internetowa, bo może działać w sieci pracodawcy, w sieci firmy w jakiej jesteśmy, i odwrotnie - nie każda aplikacja internetowa musi być webowa. Jednocześnie warto zauważyć rozróżnienie między stroną internetową i aplikacją webową. Powiem szczerze - to nie jest łatwe rozróżnienie. Co do zasady strony internetowe mają bardziej charakter informacyjny. Strona internetowa to jest medium bardziej zbliżone do tego, co było pierwowzorem sieci www, czyli sieć www była używana głównie do tego, aby przekazywać informacje w formie tekstu, obrazków, hiperłączy, linków. Natomiast aplikacja powinna mieć charakter funkcjonalny. Powinna dawać możliwość głębokiej interakcji i powinna mieć jakiś cel, w jakim jest używana, poza informacyjne. Natomiast w praktyce oczywiście to rozróżnienie nie jest takie jasne. Są aplikacje, które mają poniekąd charakter działania strony internetowej. Są strony, które mają część aplikacyjną, bo jakżeby tutaj inaczej nazwać chociażby sposób działania takiego systemu jak Wordpress. Wordpress daje nam efekt strony internetowej, ale przecież Wordpress jako system zarządzania treścią jest sam w sobie potężną aplikacją.

Co ważne, większość nowoczesnych aplikacji webowych składa się z takich dwóch zasadniczych części – backend’u i frondend’u. Backend, zwany też częścią serwerową, jest to ta część aplikacji webowej, która jest uruchamiana po stronie serwera. Po angielsku często się używa takiego określenia: server-side. W praktyce za  częścią serwerową może kryć się szereg przeróżnych technologii. Wymienię je, chociaż nie będę ich rozwijał. Mówimy chociażby o serwerze WWW, o aplikacjach WSGI i serwerach baz danych, brokerach komunikatów, pamięci podręcznej i wielu innych elementach. To, co je łączy to to, że nie są one uruchamiane na komputerze użytkownika, który uruchomił przeglądarkę, tylko na serwerze, który może mieścić się gdzieś w naszej firmie, w sieci wewnętrznej, może być gdzieś w Internecie, na drugim końcu świata, w chmurze, po prostu gdziekolwiek. To właśnie po stronie backendu pojawiają się kwestie związane ze skalowalnością, czyli możliwością swobodnego wzrostu obsługiwanej liczby użytkowników. Backend to również znaczna większość kwestii związanych z bezpieczeństwem.  Choćby przechowywanie danych, zwłaszcza danych osobowych czy też ich przekazywanie. Również jeżeli mówimy gdzieś o chmurze, to też jest to backend.  Tematy chmurowe możemy zaliczyć do tej właśnie części. Tutaj często tak naprawdę podział obowiązków, zwłaszcza w dużych projektach, przy realizacji dużych projektów, inicjatyw polega na podzieleniu tych ról projektowych, że mamy osobno programistów backend-u, możemy mieć specjalistów do spraw chmury, administratorów. Tutaj jest naprawdę ogrom, i to co ważne, różnorodnej pracy.
Backend sam w sobie byłby nieużywalny dla ludzi. To, co my widzimy, to co klikamy, z czego korzystamy, ta część aplikacji, z którą wchodzimy w interakcje, jest uruchamiana w przeglądarce i to jest część nazywana frontend-em. Część kliencka, część przednia. Tutaj z jednej strony nie mamy tych wszystkich problemów związanych ze skalowalnością, bezpieczeństwem. Z drugiej strony to jest to, co widać. Tutaj musimy zapewnić działanie na różnych urządzeniach, na różnych przeglądarkach. Także jest to zupełnie inny rodzaj wyzwań i  warto zwrócić uwagę, że to też wpływa na to, że tak często te role backend-owa, frontendowa są właśnie dzielone.

Obie części są mocno niezależne od siebie, bo backend można zmienić, przebudować, napisać w innej technologii, natomiast o ile zasada, sposób komunikacji poiędzy backend-em, frontend-em nie ulaga zmianie, to tak naprawdę można majstrować przy tych obu częściach zupełnie niezależnie. Warto tu podkreślić, że w dawnych czasach, tak kilkanaście lat temu, dominowało podejście w którym ta część frontowa, frontend, była de facto osadzona w ramach aplikacji beckendowej.  Z jednej strony wydawało się to może wygodne, ale z drugiej uniemożliwiało tak elastyczne podejście do dzielenia pracy. W praktyce, jeżeli ktoś chciał robić tą część frontową, to i tak musiał poruszać się po tej aplikacji backendowej. Przez co różne aspekty realizacyjne projektów były problematyczne. Podzielenie tych dwóch części przyniosło większą elastyczność również w kontekście tworzenia choćby aplikacji mobilnych. Tutaj warto zauważyć, że jeżeli mamy dobrze zrobiony backend, czyli tę część serwerową, to możemy napisać do niej zarówno aplikację taką frontową, ale możemy napisać też aplikację mobilną i mogą korzystać z tego samego backendu, co myślę no nie trudno zauważyć, że jest sporą korzyścią.

Czas po tym, nie powiem wprowadzeniu, bo w zasadzie ta merytoryczna część nam się rozciągnęła na wstęp, a w zasadzie wstęp rozciągnął się na merytorykę. Zacznę od litery A. Od pojęcia, które już pojawiło się na łamach tego podcastu, a dokładnie w odcinku szóstym, dotyczącym cyklów i trendów w IT, do którego gorąco zapraszam. Natomiast jest to pojęcie AJAX. Wspominam o nim, ponieważ przewrotnie nie jest to ani język programowania, ani do końca biblioteka, ani tym bardziej framework. To jest takie ciekawe połączenie kilku konceptów. Rozwija się to jako Asynchronous JavaScript And XML i to jest taki zestaw różnych konceptów, które zastosowane razem doprowadziły do tego, że aplikacje webowe wyglądają obecnie tak, jak wyglądają. Mówiąc krótko, bo szerzej ten temat omawiałem w odcinku szóstym, AJAX pozwala na stworzenie takich aplikacji, w których poszczególne działania w ich ramach nie wymagają przeładowania całej strony, tak jak to kiedyś działało i tak jak to teraz często działa na typowych stronach. Chcemy przejść na jakąś inną podstronę,  chcemy przejść na inną części strony internetowej, to ta strona się przeładowuje. Natomiast to w przypadku aplikacji webowych było bardzo irytujące. Dzięki AJAX’owi jesteśmy w stanie tworzyć tak zwane Single Page application, czyli aplikacje, które funkcjonują bez przeładowywania strony. Klikamy, chcemy otworzyć sobie jakąś zakładkę, jakieś okno w ramach naszej aplikacji, bez konieczności przeładowywania całej strony i to dzięki AJAX’owi jest możliwe. Obecnie tak naprawdę nawet nie tak często mówi się o AJAX’ie, bo jest on już tak oczywistym składnikiem bardziej zaawansowanych aplikacji, czy technologii, że jego obecność uważa się za coś oczywistego.
Kolejne pojęcie, zostajemy przy literze A, jest to Angular. Jeden z najstarszych frontend-owych frameworków, już możemy od razu dwa pojęcia naraz zastosować, używanych do tworzenia aplikacji webowych.  SPA - Single Page Applications w języku Java Script. O tym języku oczywiście za chwilę też opowiem. Jest to framework rozwijany przez firmę Google. Tradycyjnie framework ten uchodził za dość trudny do nauki. Stosunkowo rozbudowany, wprowadzający taką swoją dość złożoną strukturę aplikacji. Natomiast to, na co warto zwrócić uwagę, co jest pozornie detalem, ale przy na przykład przyjmowaniu aplikacji, przy rozwoju starych aplikacji może być kluczowe, to różnica pomiędzy pojęciami AngularJS i Angular. Bo AngularJS pisany łącznie, bez żadnych kropek, to nic innego jak pierwsza wersja Angulara, kiedy stworzono, mówiąc krótko, drugą wersję tej oryginalnej biblioteki, stwierdzono, że przestaniemy używać skrótów JS. Jest to niezwykle ważne pod kątem starych projektów, bo jeżeli na przykład w swojej firmie będziesz chciał/chciała rozwijać projekt w Angularze i znajdziesz sobie programistów nowego Angulara, a okaże się że ten stary projekt był pisany AngularJS, to różnice są dość spore. Wszystko jest do przeskoczenia, ale nie można założyć, że programiści od razu zatopią się w projekcie.

Następne pojęcie to kolejny skrót CSS – Cascading Style Sheets, czyli kaskadowe arkusze stylów. Ta technologia również jest zaliczana do frontentu i ona w praktyce koncentruje się na tym, jak wygląda da na aplikacja czy też strona internetowa. Kolory tekstów, tła, fonty obramowanie, zaokrąglenia obramowań i wiele innych efektów, nawet takich jak prosta animacje czy transformacje graficzne, to wszystko jest możliwe za pomocą CSS. Nie jest to jakaś skomplikowana technologia, nie ma tu wielkiej filozofii, choć oczywiście na tematy czysto wizualne można rozmawiać i debatować godzinami, natomiast od strony czysto technologicznej jest to prosty temat. Warto tutaj też pamiętać o pojęciach pokrewnych takich jak Sass i Less. Są to technologie, które niejako rozszerzają standardowy CSS. Pozwalają nieco uczynić z pisania tych arkuszy stylów troszeczkę efekt taki, jakby to był język programowania. W praktyce nie jest, natomiast dużo fajnych optymalizacji, nawet takich związanych z czasem pracy, związanych z tym, że nie musimy kopiować, wklejać tych samych wartości wszędzie, dają właśnie Sass i Less. Jeżeli ktoś mówi i faktycznie zna Sass’a i Less’a, to w zasadzie można przyjąć, że CSS’a taka osoba ogarnia.

Pojęcie kolejne to Django, czyli też framework, ale dla odmiany używany po stronie serwera, czyli backend i, jak to framework jest związany z językiem programowania, w tym przypadku jest to język Python. Jest to jeden z popularniejszych frameworków po stronie backendowych. Pozwala na tworzenie tych aplikacji, aplikacji webowych oczywiście, zarówno w tym modelu rozdzielonym na osobno frontend, osobno backend, jak i w tym modelu klasycznym, gdzie frontend był niejako osadzony w backendzie. Warto więc, jeżeli mamy do czynienia z jakimiś projektami w tej technologii, najpierw upewnić się, czy jest to ten pierwszy, czy drugi rodzaj projektu. Dużą zaletą Django jest to, że jest stworzony w Pythonie, i z uwagi na popularność języka Python, o której jeszcze trochę powiem nieco później, a także to że Django istnieje już kilkanaście lat, przy jednoczesnym zachowaniu dużej elastyczności, w porównaniu do takich potężnych technologii jak Java czy .NET, czyni Django takim fajnym kompromisem pomiędzy elastycznością i nowoczesnością, byciem jak „hip”, a jednocześnie taką stabilizacją i pewnego rodzaju pewnością, tym, że można stosować tę technologię w projektach obliczanych na wiele lat.

Następne pojęcie jest najlepiej znane, zwłaszcza osobom nietechnicznym, jest to HTML, HyperText Markup Language, język znaczników, oczywiście używanych do tworzenia stron internetowych `od samego początku istnienia przeglądarek, istnienia sieci web. To pewnie jest technologia, którą, gdybym miał wskazać jakąś taką jedną technologię, z którą pewnie najszersze grono osób nietechnicznych miało kontakt, to pewnie jest to ten język. A do czego on służy? Poza tym, że po stronie frontendowej służy do opisu informacji, to znaczy jeżeli chcemy wyświetlić tekst albo obrazek albo hiperłącze albo film, to fakt, że będziemy to wyświetlać, że będziemy chcieli wskazać konkretny dokument, wpisać gdzieś konkretny tekst, to będzie właśnie zasługa HTML-a. To, czy ten tekst będzie czarny czy biały, czarny na białym tle, biały na czarnym tle, to jest już CSS, ale samo miejsce, gdzie wpiszemy tekst, to będzie właśnie kod HTML.

Kolejne pojęcie to Java. Java to to język programowania, ale Java to też ogromna platforma. To cały świat, ekosystem technologii szczególnie lubiany w dużych organizacjach, w korporacjach. Java powstała na początku lat 90 i od tamtej pory święci triumfy. Historycznie w Java można było tworzyć aplikację okienkowe, tak zwane aplety, może trochę starsi słuchacze pamiętacie czaty, które były popularne na stronach internetowych w późnych latach 90. To właśnie były aplety Javy. Pierwsze aplikacje na telefony komórkowe, słynne gry Java, no i oczywiście internetowe aplikacje biznesowe.

Nie da się ukryć, że ten ostatni trend rozwinął się najbardziej, ma największe znaczenie i właśnie z uwagi na dojrzałość technologii, to, że pisze w niej wielu programistów, a także niezwykle rozbudowane portfolio technologiczne w ramach tej biznesowej gałęzi Javy, nazywanej niegdyś Javą Enterprise Edition, a obecnie jest to Jakarta, to właśnie z tych względów Java wyróżnia się ogromna stabilnością, przy jednoczesnej małej zmienności. To jest niezwykle kluczowe dla ogromnych organizacji, dla korporacji. Taka korporacja chcę mieć pewność, że jak powstanie system, to on za kilkanaście, kilkadziesiąt nawet lat będzie mógł funkcjonować. Niestety oczywiście nie dla każdego projektu, nie dla każdej firmy taka cecha będzie zaletą, może być to wadą. Prędkość adopcji, czyli wdrażania nowych aspektów technologii do Javy jest stosunkowo niska. Przynajmniej w standardowej Javie. Zewnętrzne biblioteki, dostarczane przez zewnętrznych dostawców to jest zupełnie inna historia.

Skoro już przyjąłem formułę alfabetu i powiedziałem słowo Java to nie sposób nie powiedzieć JavaScript.  Mylenie tych dwóch języków to jest jeden z popularniejszych błędów w IT, który wynika z faktu, że jak powstała najpierw Java, a potem stworzono język nazywany na początku LiveScript, to bodajże twórcy, należałoby powiedzieć właściciele tego języka stwierdzili: nazwijmy go JavaScript, bo ludziom będzie się to kojarzyć z Javą i to się spopularyzuje. Wielu rekruterów popełnia ten błąd, że szukając programistów JavaScript, znajduje Javovców, czy oferty JavaScript kieruje do Javovców, i vice versa. JavaScript miał bardzo skromne początki, bo wzbogacał działanie takich statycznych, prostych stron internetowych. Jak już mieliśmy tekst i obrazki, jakoś tak w latach 90., na początku tego stulecia i chcieliśmy mieć zegar na stronie albo jakieś takie prościutkie animacje w dawnych czasach, to Java był w tym pomocny. Obecnie, obok HTML-a i CSS-a,  których już mówiłem, które zapewniają strukturę i wygląd treści, JavaScript zapewnia wszystko inne. Interakcje, efekty typu Drag & Drop, menu, kontrolki, to wszystko zasługa javascriptu. O ile jeszcze w takich prostych stronach internetowych można uniknąć stosowania go intensywnie, o tyle jeżeli budujemy aplikację, która ma mieć określone funkcje, określone zachowania, to bez javascript’u to się po prostu nie uda. Warto dodać, że choć w zasadzie każdy efekt, wszystko, co chcemy osiągnąć, da się osiągnąć w języku JavaScript, to przez wiele lat w wersji podstawowej ten język nie miał zbyt wiele wbudowanych możliwości.
Pojęciem pokrewnym jest biblioteka jQuery, która przez wiele lat dominowała jako takie narzędzie wspomagające podstawy język JavaScript i pomagała tworzyć warstwę front-endową w aplikacjach webowych. Natomiast obecnie, przy obecnej złożoności aplikacji, samo jQuery to za mało, dlatego stosuje się jeden z trzech najpopularniejszych frameworków, czyli Angular, o którym mówiłem albo React tudzież Vue.js, o których powiem za chwilę.

Przechodzimy do bardzo ważnej litery, do litery P, bo p to PHP. Czyli język programowania, który niewątpliwie miał dobry timing. Zyskał największą popularność na początku tego stulecia, ponieważ kiedy zauważono, że można tworzyć aplikację webowe funkcjonujące w przeglądarkach, kiedy Internet zaczął trafiać, jak to się mówi: pod strzechy, to PHP dotarło do momentu, w którym można było niezwykle szybko, niezwykle łatwo tworzyć działające rozwiązania. PHP miało bardzo niską barierę wejścia, jak to się mówi po angielsku, często używa się czegoś takiego jak learning curve, czyli krzywa uczenia, jak trudno, czy jak łatwo jest nauczyć się danej technologii. Pamiętam, że sam mając 15 lat napisałem pierwszą taką aplikację do zarządzania i do umieszczania na stronach sąd, liczników gości i ta aplikacja była fatalna, dziurawa jak ser szwajcarski. Napisana była tak tragicznie, że jak bym zobaczył coś takiego u swoich studentów, to bym, ja nie wyrzuca studentów za drzwiach, ale na pewno nakazałbym poprawienie czegoś takiego. Natomiast z drugiej strony ta aplikacja była używana przez kilkaset osób, które dodawały na swoje strony właśnie moje sądy, i te pozostałe elementy, więc z jednej strony tragiczna jakość, a z drugiej aplikacja działała. Obecnie oczywiście ten język ewoluował i można w nim pisać aplikacje na dobrym poziomie, natomiast nadal warto upewnić się, że jeżeli pracujemy z projektem w PHP, że korzysta się z właśnie jednego z frameworków, w tym języku jest ich wiele, ale takie najpopularniejsze, uznane to Laravel i Symfony.

Na literę P rozpoczyna się nazwa kolejnego ważnego języka programowania, czyli Python. Tutaj w przeciwieństwie do PHP, które jednak bardzo mocno kojarzy się z aplikacjami webowymi, Python to uniwersalny język programowania, w którym można tworzyć przeróżne rodzaje aplikacji, ale tymi najpopularniejszymi są aplikacje webowe, tworzone chociażby we wspomniane wcześniej Django, ale także we frameworkach Flask  czy FastAPI. Ale oczywiście Python jest też już absolutnie dominujący w zakresie sztucznej inteligencji i zwłaszcza nauczania maszynowego, czy też szeroko pojętego Data Science. Jest to, co warto zauważyć, najpopularniejszy język programowania według organizowanego od wielu lat rankingu TIOBE Index. Link do rankingu znajdziecie w opisie odcinka.
Z backend-u, czyli od PHP i Pythona, przechodzimy z powrotem na front, jak to się mówi, druga z trzech najpopularniejszych bibliotek czy też frameworków, choć to jest dyskurujne, ReactJS. Technologia młodsza od Angulara, uznawana też za łatwiejszą w nauce, co jest ważne przy wyborze technologii w projekcie, jeżeli chcemy rozwinąć członków zespołu. Uznawany obecnie za najpopularniejszą podstawę do tworzenia aplikacji po stronie klienta, po stronie frontend-owej. Choć tu znowu popularność jest kwestią dyskusyjną. Istnieje, co ważne, wersja, z której można korzystać do tworzenia aplikacji mobilnych, hybrydowych, która nosi nazwę ReactNative. Przy czym warto zauważyć, że jeżeli ktoś zna Reacta, nie znaczy, że automatycznie będzie też tworzyć równie łatwo, szybko aplikacje w ReactNative. Są pewne różnice. Choć są to technologie pokrewne. React został opracowany, jest rozwijany przez Facebook’a.

Kolejna technologia, również na R, to Ruby on Rails, i tutaj, jak rzadko kiedy, pojawia się i język programowania, Ruby, i framework, Rails. Z tą frazą można się spotkać, bo to chyba najbardziej ścisły związek pomiędzy językiem programowanie i frameworkiem. Jest to framework jak również język programowania podobny do Pythona z Django, czy też do PHP i PHP-owymi frameworkami. Według niektórych korzystanie z Ruby on Rails wymaga nieco większego doświadczenie, bo Ruby to język o dość kompaktowej, zwięzłej składni, sposobu zapisu kodu, przez co nie jest on, tak się uważa, bardzo łatwy w nauce. Natomiast jeżeli chodzi o możliwości, które chcemy osiągnąć, to wielkiej różnicy pomiędzy Ruby, Pythonem czy też PHP nie ma.

Ponownie wracamy na front, tym razem do technologii Vue.JS, który jest trzecim z tych najważniejszym frameworków używanych do tworzenia aplikacji webowych. Najmłodszy z nich, nieco młodszy od Reacta, natomiast w praktyce popularność Vue to ostatnie kilka lat. Uchodzi za dość prosty w nauce, na pewno prostszy od Angulara, podobnie łatwy jak React, może nawet łatwiejszy, chociaż tu już mocno wchodzimy w kwestię gustu, w kwestie personalnych preferencji. To, z czym można się spotkać to to, że programiści często umieją Reacta i Vue, natomiast przekwalifikowanie się z jednej na drugą technologię jest stosunkowo proste, bo mają sporo podobieństw. Sami tak praktykujemy. Kiedyś robiliśmy tylko Vue, ale potem stwierdziliśmy, że te technologie są mocno podobne i Vue to cały framework, na podstawie którego można tworzyć w pełni funkcjonalne aplikacje SPA.

No i wreszcie dochodzimy do ostatniej pozycji, którą z jednej strony nie do końca wiedziałem gdzie umieścić, bo to jest pozycja „dot net”, czy .NET, czyli nie wiem, czy przed A, czy po, czy gdzieś w środku. Prawda jest taka, że w zasadzie mogłem skorzystać z nazwy ASP.NET, czyli z części .NET, związanej z tworzeniem aplikacji webowych, ale tak też było mi wygodniej powiedzieć o tym na końcu. ASP.NET i cały .NET to główny, korporacyjny rywal Javy czy też Jakarty Enterprise i tutaj, no oczywiście jest to technologia tworzona przez Microsoft, który bardzo kompleksowo wspiera zarówno .NET, oferuje swoją chmurę Microsoft Azure i to przekłada się na silne zainteresowanie zwłaszcza w krajach skandynawskich i Stanach Zjednoczonych. ASP.NET koncentruje się bardziej na warstwie serwerowej, chociaż tak naprawdę za pomocą takich technologii wchodzących w skład ASP.NET, można tworzyć kompleksowe aplikacje od frontu do backendu. Natomiast też pewnym trendem jest tworzenie aplikacji ASP.NET w połączeniu z Angularem. Więc to jest też częste połączenie, które można historycznie zwłaszcza bardzo często spotkać.

Na tym dochodzimy już do końca tego odcinka. Wyszedł dość długi a i tak troszeczkę skracałem. Jeżeli ta forma podobała wam się, ale na przykład zabrakło wam jakieś technologii, to dajcie znać. Jak mówiłem tych technologii jest sporo, na pewno będę robił jakieś kolejne wersje, niekoniecznie związane z aplikacjami webowymi.

Zachęcam do subskrybowania kanału i do zostawiania komentarzy w różnych formie, a na dziś to już wszystko. Kłaniam się i do usłyszenia!

Link do rankingu Tiobe: https://www.tiobe.com/tiobe-index/