Chcąc zacząć przygodę z branżą IT pierwszą decyzją przed jaką staniesz będzie wybór języka programowania do nauki. Ten blog poświęcony jest wprawdzie Javie, ale bardzo ważnym jest, aby rozumieć różnice i znać alternatywy — może okazać się, że Java nie jest tym, co najlepiej pasuje w Twoim przypadku. Ta strona ma na celu krótki opis najpopularniejszych języków / stacków (stack to język programowania oraz biblioteka/biblioteki lub technologie używane razem — w niektórych przypadkach mówimy czysto o języku programowania, a czasem to konkretny zestaw technologii jest popularny i warto się go uczyć razem).
Oczywiście poniżej nie zostały wymienione wszystkie języki, a jedynie kilka które w mojej subiektywnej ocenie są obecnie popularne i warto rozważyć ich naukę. Ostatni akapit podsumowuje, dlaczego akurat Java została wybrana jako język omawiany na tym blogu.
Podział języków programowania
Przede wszystkim języki programowania dzielą się na dwie grupy — skryptowe oraz kompilowane.
Pierwsza grupa to języki skryptowe. Programy napisane w ten sposób to właściwie pliki tekstowe (i tak, można je edytować nawet w notatniku), uruchamia się je za pomocą dodatkowego programu i w momencie uruchomienia tekst (kod) jest interpretowany (zamieniany na postać zrozumiałą dla komputera i wykonywany). Zaletą tego podejścia jest to, że możemy szybko zobaczyć efekty zmian (po zmianie wystarczy odświeżyć stronę czy uruchomić ponownie i od razu widzimy zmiany). Minusem jest, że błędy o błedach w kodzie (np. w składni) dowiemy się dopiero w momencie uruchamiania tego konkretnego fragmentu kodu (najczęściej), co utrudnia szukanie błędów. Drugim minusem, który jednak nie będzie problemem w większości przypadków, jest mniejsza wydajność takich aplikacji. W ogólnym przypadku jednak w językach skryptowych pisze się szybciej, ale lepiej sprawdzają się w prostszych aplikacjach/projektach.
Druga grupa to języki kompilowane, do tej grupy należy m.in. Java. Różnią się one tym, że zanim uruchomimy nasz kod, musimy go skompilować, tzn. przetłumaczyć na język zrozumiały dla komputera. W przypadku języków skryptowych proces ten odbywa się w momencie uruchamiania, za każdym razem jak program jest uruchamiany. W językach kompilowanych proces ten jest wykonywany tylko raz, jeszcze przed uruchomieniem programu. Powoduje to, że wprowadzone przez nas zmiany musimy najpierw skompilować (najczęściej z całym programem) a następnie uruchomić program jeszcze raz. Wymaga to trochę innego podejścia do pisania programów (metoda prób i błedów do rozwiązania problemów nie sprawdzi się w większych projektach). Z drugiej strony programy napisane z użyciem języków kompilowanych działają szybciej, a błędy w składni są wykrywane jeszcze przed uruchomieniem programu (na etapie kompilacji). Znajomość języków z tej grupy daje też większe możliwości na rynku pracy, ponieważ większość ofert z dużych firm dotyczy właśnie tej grupy.
W tym miejscu należy podkreślić, że jedna grupa nie jest lepsza od drugiej. Są inne, nadają się do innych rzeczy i rozwijając się w programowaniu czy kiedyś może zaczynając własny start-up należy rozważyć wady i zalety obu, nie odrzucając żadnego z góry. Podsumowując:
Języki skryptowe | Języki kompilowane | ||
---|---|---|---|
Zalety | Wady | Zalety | Wady |
|
|
|
|
Języki skryptowe
PHP
PHP to jeden z najpopularniejszych języków skryptowych, także jeden z pierwszych powszechnie używanych. Powstał jako rozszerzenie popularnego kiedys języka skryptowego Perl z myślą o aplikacjach internetowych. Nadal jest z nimi ściśle związany.
Język ten jest bardzo prosty do nauki podstaw, jednak przez bardzo dynamiczny rozwój i wiele zmian wprowadzanych bez głębszej refleksji, niektóre jego elementy zdają się chaotyczne, konwencje nazewnictwa czy argumentów nie wszędzie są zachowane i bywa to uciążliwe. Z drugiej strony bardzo łatwo o hosting aplikacji napisanych w PHP (prawie każdy serwer, także np na home.pl czy nazwa.pl obsługuje ten język).
Język bardzo popularny w Internecie, np. jako fora internetowe, portale, blogi itp
Python / Django
Język zdobywający na popularności, w szczególności w połaczeniu z frameworkiem Django (używanym do aplikacji webowych).
Ogromną zaletą tego języka jest jego prostota, prawdopodobnie jest to najłatwiejszy do nauczenia się język. Pewnym ograniczeniem jest hosting aplikacji w Pythonie (czyli jesli chcemy udostępnić nasza aplikację światu). Nie ma też zbyt wielu (w porównaniu do innych technologii) ofert pracy dla programistów tej technologii.
Język ten jest używany głównie w start-upach oraz małych firmach.
Ruby on Rails
Kolejny język/framework zdobywający popularność. Wyróżnikiem jest sam język Ruby, który powstał poprzez próbę połaczenia najlepszych cech innych języków. Przewaga nad np. Pythonem sprowadza się głównie do preferencji osobistych lub specyficznych funkcji, niemniej jest to najmniej popularny język jeśli chodzi o oferty pracy.
Technologia ta jest używana głównie w start-upach oraz przez pasjonatów.
Node.JS
Technologia o której ostatnio robi się głośno, cechą unikalną jest inne podejście do programowania aplikacji webowych, tzw. programowanie zdarzeniowe. Ma ono swoje zalety (dla zainteresowanych i nieco obeznanych w temacie polecam tą dyskusję), jest też możliwe do realizacji w innych językach programowania (choć głównie kompilowanych), ale wymaga od programisty dość dużej wiedzy aby w pełni rozumieć co się dzieje w aplikacji. Raczej nie polecany dla początkujących, ale mimo tego warty uwagi.
Technologia ta obecnie jest najczęściej wybierana przez startupy lub w dużych firmach do projektów eksperymentalnych, nie kluczowych.
Języki kompilowane
Java
Java jest językiem rozwijanym obecnie przez firmę Oracle (dawniej Sun Microsystems). Jej głównym założeniem jest ‘write once — run everywhere’ (jest to nieco utopia, ale mniej więcej działa). To, co warto wiedzieć to że język ten jest rozwijany głównie przez społeczność w ramach tzw. Java Community Process (specjaliści z różnych firm demokratycznie decydują o standardach i kierunku rozwoju), duży nacisk położony jest na zgodność ze standardami i dokumenację.
Java stosowana jest do pisania wszelkiego rodzaju aplikacji, od małych po ogromne, działa w każdej z tych ról. Jest preferowanym językiem w korporacjach i dużych firmach ponieważ aplikacje można uruchamiać zarówno na systemach Windows jak i Linux, dzięki czemu nie wymaga dodatkowych inwestycji w infrastrukturę.
C# ( .NET )
Jest to odpowiedź firmy Microsoft na język Java. Założenia są zbliżone, choć rozwój języka jest sterowany przez firmę Microsoft, nie zawsze jest on zgodny z przyjętymi standardami. Największym minusem jest konieczność uruchamiania na platformie Windows, co często wiąże się z większymi kosztami utrzymania aplikacji. Niemniej ma on wsparcie firmy Microsoft, przez co część firm decyduje się na to rozwiązanie.
Język używany głównie w dużych firmach, które zdecydowały się oprzeć wyłacznie o rozwiązania firmy Microsoft. Język ten jest mniej popularny niż Java, jednak jego popularność także powinna utrzymywać się na stabilnym poziomie.
Podsumowując — dlaczego Java?
Na tym blogu wybraliśmy Javę z kilku powodów. Przede wszystkim jest to język najpopularniejszy pod kątem ofert pracy. Jest on także dojrzały, rozwijany od wielu lat i posiadający świetną dokumentację i szeroką społeczność użytkowników. W razie problemów bardzo łatwo uzyskać pomoc np. w serwisach stackoverflow.com czy na forach internetowych. Będzie on prawdopodobnie nadal popularny przez długie lata wśród większych firm, w przeciwieństwie do języków/technologii których popularność wynika częściowo z ‘mody’ i trendów i ciężko przewidzieć ich popularność w perspektywie kilku/kilkunastu lat.
Niemałe znaczenie ma też fakt, że jest to język który wykorzystuję na co dzień w swojej pracy zawodowej od prawie 7 lat i o którym posiadam największą wiedzę — pozwala mi to lepiej tłumaczyć pewne elementy i w razie potrzeby odpowiadać na pytania, a także wtrącać praktyczne porady i wskazówki ‘z życia wzięte’.
Nie znaczy to jednak że jest to najlepszy język i nie warto uczyć się innych — powtórzę to, bo jest to bardzo ważne, że każdy powinien wybrać technologię która najlepiej pasuje do tego, jaką ścieżkę kariery chce obrać lub co mu się najlepiej podoba. Ten blog poświęcony jest Javie i nauce programowania właśnie w tym języku z powodów wymienionych wyżej. W przypadku innych języków mogę pomóc, o ile moja wiedza na to pozwoli lub skierować w inne miejsca gdzie można znaleźć wartościowe informacje i kursy na ten temat.