Czas napisać coś na temat odchodzący od mojej działalności. Ponieważ dość już siedzę w tym fachu i dopatruję się wielu powtarzających się sytuacji uważam, że mogę w jakimś stopniu odpowiedzieć na pytanie "jakie języki programowania opłaca się znać?" i podzielić się swoimi spostrzeżeniami tym bardziej, że ja sam mam zamiar opanować poniższe języki. Podkreślam, że to jest tylko moje subiektywne zdanie i jak zawsze poparte konkretnymi argumentami. Macie prawo się nie zgadzać. Przedstawiam własne języki programowania, które w 2019 roku uważam za fundamentalne zarówno w kwestii znalezienia pracy jak również rozwijania swoich zdolności w zaciszu domowym. Ponadto do każdego z nich przedstawiam garść zalet i wad.

Java

Mówi się coraz częściej, że Java za kilkanaście lat wypadnie z kręgu najczęściej wykorzystywanych języków i zostanie zastąpiony przez inne języki programowania. Czy rzeczywiście? Być może, ale na chwilę obecną jest to podstawa w kwestii znalezienia pracy. Choć nie jestem doświadczonym developerem, to jednak widać oferty pracy wśród których Java z całą pewnością brana jest pod uwagę. W dzisiejszych czasach nie stawia się na optymalizację. Stawia się na szybkość widzenia efektu końcowego. Wysoki poziom abstrakcji, masa bibliotek, wirtualna maszyna, odśmiecacz ("Garbage Collector"). Ponadto znajduje też zastosowanie w programie "Android Studio" tuż obok Kotlina, zatem mobilne aplikacje również są tworzone w Javie. Wymieniać można bez końca.

ZALETY:

  • wbudowany odśmiecacz zapobiega pozostawianiu niepotrzebnej już pamięci
  • wirtualna maszyna gwarantująca identyczne działanie programu na każdym systemie wspierającym Javę ("napisz raz, uruchom wszędzie")
  • dużo bibliotek przeznaczonych do formatowania łańcuchów znaków, generowania pseudolosowych liczb itd.

WADY:

  • kompilacja do kodu bajtowego powoduje obniżenie wydajności w działaniu
  • od bieżącego roku obowiązuje płatna subskrypcja w przypadku wykorzystywania języka do celów komercyjnych (Napisałem już na ten temat)
  • w celu przerobienia programu na plik wykonywalny, należy to zrobić za pomocą zewnętrznych "wspomagaczy" (program / biblioteka)

Python

Język Python charakteryzuje się dziecinną składnią i elastycznością w pisaniu. Pozwala uniknąć skomplikowanych zapisów przy deklaracji tablic, list czy obiektów wymagając jedynie zastosowania właściwej pary znaków. Nic więc dziwnego w tym, że znajduje też swoje miejsce na stanowiskach pracy. Przeważnie służy jako dodatek do innego języka, aby wykonywał jedynie część programu lub jakąś pojedynczą operację, która nie doprowadzi do zawalenia się programu w przypadku niepowodzenia. Mimo wszystko, język warty opanowania choćby ze względu na prostą składnię, która w większości przypadków kończy się na jednym wersie. Był, jest i będzie w pełni darmowy do pobrania i zainstalowania z wbudowanym interpreterem.

ZALETY:

  • dziecinnie prosta składnia umożliwiająca wykonywanie większości poleceń kończąc przeważnie na tej samej linijce
  • w pełni darmowy z wbudowanym IDE o nazwie "IDLE"
  • dynamiczne typowanie zmiennych (ta sama zmienna raz jest tekstem, a po chwili może być obiektem)

WADY:

  • język interpretowany wykonuje jedno polecenie za drugim, przez co musi za każdym razem analizować ten sam kod (głównie umieszczony w pętlach) przekładając to na wydajność i z tego względu nie jest zalecany jako język do tworzenia gier.
  • interpreter ze względu na pojedyncze wykonywanie poleceń narażony jest na błędy w trakcie działania programu
  • wykorzystuje składnię polegającą na wcięciach przy tworzeniu bloku funkcji czy pętli, przez co mocno różni się od konwencji znanej w większości języków (klamerki {})

C++

Absolutny obowiązek w dziedzinie programowania. Utworzony w 1983 roku przez Bjorne Stroustrupa nadal wykazuje się użytecznością w zakresie pisania kodu źródłowego wysoko i niskopoziomowego gdzie w grę wchodzi błyskawiczne działanie. Tutaj też bez wątpienia znajdziecie pracę jeśli doskonale opanujecie podstawy języka będąc przygotowanym na różne niespodzianki wynikające z niedopatrzeń. Jest na tyle rozbudowany, że można się go uczyć nawet przez całe życie. Pomimo, że jest się narażonym na masowe ilości drobnych pomyłek, C++ bez wątpienia stanowi konkurencję dla innych języków pod każdym względem i tak już chyba zostanie na zawsze. Żadne inne języki programowania nie mogą się równać z potęgą C++.

ZALETY:

  • ma bezpośredni kontakt z operacjami niskopoziomowymi przez co wpływa korzystnie na szybkość aplikacji
  • jest językiem ogólnego przeznaczenia (przeznaczony do wszystkiego)
  • posiada wiele paradygmatów naraz (można pisać obiektowo, generycznie, proceduralnie lub jeszcze inaczej)

WADY:

  • programista nieprawidłowo korzystając ze wskaźników jest narażony na anomalia w trakcie wykonywania programu
  • brak ochrony na przekroczenie zakresu liczb całkowitych
  • jest bardzo rygorystyczny (nie można skompilować programu jeśli na przykład dochodzi do wielokrotnego dołączenia tego samego pliku korzystając z dyrektywy "include" lub gdy nie widzi prototypu zadeklarowanej funkcji gdy jest ona umieszczona później niż jej wywołanie)

C#

Alternatywa Javy wytworem firmy Microsoft również znajduje zainteresowanie wśród pracodawców jako język doskonale "dogadujący się" z bazami danych. Wszyscy zainteresowani pracą nad bazami danych powinni też opanować podstawy C#. Przyznaję, że patrzę na ten język programowania przez pryzmat doświadczeń tworzenia w silniku "Unity" bo tylko wtedy w nim pisałem, natomiast jako czysty język również sprawdzi się w tworzeniu różnych aplikacji. Znaczna część składni pochodzi z Javy więc tak naprawdę jeśli umiecie Javę, to w mik zrozumiecie "C Sharpa". Na dodatek posiada specjalne właściwości służące za prawdziwe "gettery" i "settery", których jako takich nie ma w Javie (funkcje jedynie "udają").

ZALETY:

  • ponad połowa składni i funkcjonalności to Java, zatem trochę czasu na dostrzeżenie różnic i już można swobodnie w nim pisać
  • doskonała integracja z bazami danych
  • język wysokiego poziomu poszerzony o kilka wyjątkowych rzeczy ("var" jako odpowiednik "auto" w C++11, "gettery" i "settery", listy)

WADY:

  • kompilacja do kodu pośredniego tak jak w Javie odbija się negatywnie na wydajności aplikacji
  • środowisko C# jest uzależnione od systemu Windows
  • wiele słów kluczowych występujących tylko w tym języku powoduje możliwość zastosowania ich tylko tutaj

JavaScript

JavaScript wbrew zbieżności nazw, nie ma nic wspólnego z Javą, natomiast z całą stanowczością jest to język który warto znać. Skrypty wykonywane po stronie klienta również są potrzebne człowiekowi na co dzień. Jeden z elementów przeglądarkowej "triady" zaraz obok HTML'a oraz CSS'a charakteryzujący się prostą składnią stanowi istotny filar spośród innych języków programowania warty podstawowego opanowania. Moim zdaniem, jest to język który też przyda się zawsze, bez względu na okoliczności. Szczególnie jeśli myślimy o utworzeniu własnej strony i wstawieniu jej na serwer. Brak ochrony oraz błędy w trakcie interpretowania, to są według mnie, największe słabe punkty JavaScript'u jednak znając go od podszewki da się znimimalizować zarówno jedno, jak i drugie.

ZALETY:

  • brak ścisłego typowania zmiennych (w celu utworzenia zmiennej wystarcza jedynie słowo "var" choć w pewnych sytuacjach, zmiana na inny typ wartości może mylić programistę)
  • możliwość wykorzystywania płótna (canvas) w HTML'u do tworzenia gier, galerii obrazów, rysowania figur itp.
  • paradygmat programowania obiektowego jak i funkcyjnego

WADY:

  • składnia może powodować łatwe utworzenie "makaronu" w kodzie z powodu długich poleceń w połączeniu ze słowami kluczowymi i nawiasami
  • kod nie jest chroniony, można go łatwo zobaczyć w konsoli JavaScript z przeglądarki (aby go w pewnym stopniu ochronić, konieczna jest jego "minifikacja")
  • jest to język interpretowany, zatem każdy błąd zostaje wychwycony dopiero w trakcie wykonywania programu (wówczas funkcja zostaje zatrzymana i wykonuje się tylko do momentu wykrycia błędu, co może być niepożądane przy wczytywaniu zawartości strony "tylko do połowy")

Oto języki programowania, które uważam za "przyszłościowe" a przynajmniej przydatne przez długi okres czasu nie tylko w prywatnym wykorzystywaniu, ale również przy ubieganiu się o stanowisko pracy. Mam zamiar ogarnąć je wszystkie jednak głównie dla własnych korzyści, bo uważam je za najcenniejsze i najbardziej zbliżone do uniwersalnego wykorzystania.

43290
Dzisiaj / TodayDzisiaj / Today86
Wczoraj / YesterdayWczoraj / Yesterday88
Tydzień / WeekTydzień / Week174
Miesiąc / MonthMiesiąc / Month1603