Języki programowania – Mega przewodnik po

Najbardziej popularne języki programowania na polskim rynku. Zobacz zestawienie najbardziej popularnych języków programowania wraz z krótkim, rzeczowym opisem.

Młodzież naczytała się mnóstwa artykułów o programistycznej arystokracji, o zarabianiu setek tysięcy rocznie i służbowych furach na pstryknięcie palcem.

Ścieżka zawodowa programisty kusi. Szczególnie, że do Polski przybywa coraz więcej dużych firm zza granicy, widząc w nas bardzo dobrą i relatywnie tanią siłę roboczą.

Tylko gdy zajrzymy do ofert pracy… oczopląsu można dostać.

Języków programowania namnożyło się jak grzybów po deszczu!

Fachowa terminologia, opisy stanowisk w 80% w języku angielskim, kilkanaście różnych kategorii.

Jakie nasz potencjalny programista ma możliwości?

Zobaczmy…

 

HTML / xHTML / HTML5 / XML

Wymienione tu technologie nie można nazwać językiem programowania. To języki znaczników, które w pewien określony sposób opisują strukturę dokumentu.

Na przykład, jeśli tworzysz stronę internetową, posiada ona nagłówek, panele boczne, część główną i stopkę.

Do jej podziału i opisu używa się właśnie języka HTML oraz jego pochodnych.

Wspominam tu o XML/HTML, bo jest to podstawa w świecie IT. Szczególnie w programowaniu aplikacji webowych.

Cała strona frontendowego programowania polega właśnie na manipulacji tymi znacznikami. Dodawaniu ich, usuwaniu, wypełnianiu treścią, modyfikacji atrybutów itp.

Jeśli nie znasz HTMLa, zacznij od zapoznania się z podstawami.

Świetnym punktem startowym będzie http://kurshtml.edu.pl – sam od niego zaczynałem i naprawdę jest rzetelnie przygotowany.

Bardzo ciekawie przygotowany kurs również tutaj: http://how2html.pl/.

 

CSS

Kolejna technologia, która nie jest językiem programowania (a znalazła się we wpisie o językach programowania).

Podobnie jak języki znaczników, CSS to podstawa przy tworzeniu aplikacji webowych. Z resztą nie tylko. Masa narzędzi służących do tworzenia aplikacji desktopowych i mobilnych korzysta z htmla i css do konstruowania wyglądu i struktury aplikacji.

CSS służy do opisu wyglądu i zachowania poszczególnych elementów na stronie.

Na przykład, możemy go użyć do nadania elementowi odpowiedniej szerokości, wielkości czcionki, pogrubienia itp.

Każdy szanujący się programista musi chociaż wiedzieć jak css działa i gdzie się go używa.

Ponownie odsyłam do http://kurshtml.edu.pl i http://how2html.pl/, gdzie CSS jest bardzo przystępnie opisany. Z opisami i przykładami.

Warto również zapoznać się z serwisem http://webkod.pl/.

 

SQL

SQL służy do interakcji z bazą danych. Dzięki niemu odczytujesz, zapisujesz i modyfikujesz dane oraz zarządzasz strukturą bazy.

Jego znajomość jest bardzo cennym dodatkiem do każdego języka programowania.

W dobie ORMów bez SQLa można żyć, ale wypada znać go chociaż w podstawowym stopniu. Niektóre rzeczy po prostu dużo łatwiej i szybciej jest zrobić po stronie bazy danych, a do aplikacji przesłać gotowy wynik tych obliczeń.

Microsoft czy Oracle wypuściły swoje wzbogacone technologie SQL (kolejno T-SQL i PL-SQL), wyposażając SQLa w zmienne, pętle i warunki. Dzięki nim operacje po stronie bazy mogą być dużo bardziej zaawansowane.

Najlepsze miejsca, by zgłębić temat SQL:

http://www.sqlpedia.pl/kurs-sql/

http://sql-kursy.pl/

 

JavaScript

Ach.. JavaScript. Do niedawna niedoceniany język programowania, używany głównie do walidacji formularzy po stronie klienta.

Dziś, jeden z najprężniej rozwijających się języków.

Dzięki takim narzędziom, jak Node.js, możemy korzystać z JavaScript po stronie serwerowej.

Rosnącą popularność zawdzięcza głównie takim frameworkom jak jQuery, Angular.js, Backbone czy Knockout.

Podczas gdy jQuery ułatwił i ustandaryzował dostęp do poszczególnych elementów na stronie, Angular zapewnia tworzenie SPA (Single Page Applications) bardzo wygodnie.

JavaScript jest językiem skryptowym.

Jest to jedyna słuszna droga, gdy chcemy zaszyć naszą logikę po stronie klienta przeglądarki.

Popularnym podejściem jest komunikacja z Web Serwisami za pomocą JavaScript. Serwisy, niezależnie od technologii, wystawiają pewne metody, które mogą zostać odpytane przez JavaScript (do poczytania – AJAX).  Wtedy kod JavaScript odbiera dane (zazwyczaj w postaci JSON lub XML) i bazując na nich, wykonuje pewne akcje na stronie.

Generalnie, niezależnie od języka programowania, którego zamierzasz się nauczyć, warto poznać JavaScripta. Jego znajomość przydaje się niemal w każdym projekcie.

Polecam zacząć naukę od:

http://kursjs.pl/

http://miroslawzelent.pl/kurs-javascript/

 

PHP

Stare dobre PHP. Swoją niesłabnącą popularność zawdzięcza otwartości i łatwości użycia.

Nie dość, że hostingi obsługujące język PHP kosztują grosze (zaczynają się od kilkunastu złotych za rok), to PHP nie wymaga żadnych płatnych licencji, by dobrze działać.

Jego prostota zachęca jednak do użycia w prostszych aplikacjach i stronach internetowych.

Nie znaczy to jednak, że technologia nie nadaje się do większych wyzwań. Po prostu, im wyższy stopień skomplikowania projektu, tym większy nakład pracy wymagany od developera. Odpowiednio przygotowana solucja w C# czy JAVIE pozwala rozwijać oprogramowanie znacznie szybciej i mniejszym nakładem pracy (przez co taniej)

I co ważniejsze, pozwoli utrzymać kod w ryzach.

Podsumowując, z PHP korzystamy raczej w mniejszych projektach, do których nie warto budować skomplikowanego, ciężkiego środowiska w bardziej zaawansowanych technologiach.

Naukę zaczniesz na stronie, którą właśnie czytasz: https://wordpress-438575-1374540.cloudwaysapps.com/rozdzial-1/srodowisko-do-nauki-php/

 

Python

Python staje się najbardziej pożądanym językiem programowania w obecnych czasach. W połączeniu z Django (frameworkiem do tworzenia aplikacji webowych) jest poszukiwany na całym świecie.

Większość ofert pracy zaznacza, że mile widziana znajomość Pythona.

Do jego składni trzeba się przyzwyczaić. Jednak, gdy się go dobrze pozna, pisanie i czytanie kodu w Pythonie jest bardzo wygodne. To jego ogromny plus, gdyż Pythona uważa się za jeden z najłatwiejszych języków programowania.

Z racji, że jest łatwy do nauczenia się, dużo ludzi się nim posługuje. A z racji, że dużo ludzi się nim posługuje, łatwo jest znaleźć programistę Pythona. A z tej racji, firmy decydują się na stosowanie Pythona do tworzenia aplikacji.

Używany głównie do mniejszych aplikacji.

Ilość dodatkowych znaków ograniczona do minimum. Tutaj każda spacja i tabulator mają znaczenie, gdyż wcięciami zastępujemy tradycyjne nawiasy (znane z pozostałych języków).

Polecany start nauki: http://www.python.rk.edu.pl/w/p/podstawy/

 

Ruby (Ruby on Rails)

Twórca języka Ruby powiedział kiedyś, że „Ruby jest prosty z wyglądu, ale bardzo skomplikowany w środku, tak jak ciało ludzkie”.

Sporo w tym prawdy.

W Rubym, tak jak w Pythonie, wszystko jest obiektem. Możemy odwoływać się do każdej wartości jak do obiektu.

Jest zupełnie darmowy.

Ma kilka fajnych feature’ów i jest bardzo elastyczny. Można go swobodnie rozszerzać i jest łatwo portowalny na inne systemy operacyjne. Pozwala nawet na korzystanie z wątków tam, gdzie natywnie system ich nie wspiera.

Ruby on Rails to nazwa biblioteki wspierającej tworzenie nowoczesnych aplikacji webowych w Ruby.

Używany głównie przez pasjonatów, którzy dostrzegają w nim piękno i styl.

Ilość ofert pracy nie powala, jednak można jakąś znaleźć od czasu do czasu (głównie na rynkach zachodnich).

Świetny start do języka Ruby znajdziesz tutaj: blog.wilgosz.pl

 

JAVA

Java jest językiem, który towarzyszy nam niemal wszędzie. Począwszy od komputerów, przez telefony, telewizory, tablety, na samolotach, samochodach, lodówkach i pralkach kończywszy.

Jej głównym założeniem była portowalność (przenośność) aplikacji między różnymi systemami operacyjnymi. Kod aplikacji niemal niezależny od sprzętu, na którym zostanie uruchomiony.

Java odpala swoje aplikacje w maszynie wirtualnej (Java Virtual Machine). To ona odpowiada za całą obsługę aplikacji, jej obiektów i procesów.

Jeśli, przykładowo, pralka ma zainstalowaną maszynę wirtualną JAVA, można na niej uruchomić program napisany w Javie.

Właścicielem Javy jest Oracle. Amerykański gigant, który jest również właścicielem Open Office oraz popularnego systemu baz danych.

Java posiada ogromną, szczegółową dokumentację oraz masę narzędzi wspierających każdy etap tworzenia oprogramowania.

Używa się jej zarówno do mini-aplikacji jak i aplikacji gigantów. Stosowana w niemal każdej dużej firmie, stąd ogromne zapotrzebowanie na programistów JAVY. Język mocno skupiony wokół ideologii programowania obiektowego (OOP Object Oriented Programming).

Stosowany zarówno przez fanów Linuxa, jak i MACa i Windowsa. Wszędzie działa tak samo (krytycy śmieją się, że tak samo wolno). Mam podobne wrażenia z powolnym działaniem aplikacji pisanych w JAVIE, więc coś w tym chyba jest.

Dobry początek nauki języka JAVA:

http://java-krok-po-kroku.readthedocs.org/pl/latest/

http://www.samouczekprogramisty.pl/kurs-programowania-java/

Darmowe i płatne kursy JAVY znajdziesz na www.javastart.pl.

 

C#

Wzorowany na JAVIE język programowania stworzony przez Microsoft.

Również korzysta z maszyny wirtualnej, która do tej pory działała wyłącznie w środowisku Windows (.NET runtime environment). Jednak trwają prace nad wdrożeniem środowiska .NET do systemów Unix/Linux oraz MacOS.

Składniowo niemal identyczny jak JAVA. Są drobne różnice, ale generalnie łatwo przesiąść się z jednego języka na drugi. Założenia programowania te same.

Ciekawostką jest, że choć na początku C# powstawał opierając się na JAVIE, teraz JAVA dodaje podobne funkcjonalności (jak LINQ czy Lambda expressions) bazując na tych, które dobrze działają w C#.

Największym plusem pisania w kodu w C# jest MS Visual Studio – kompletne środowisko do tworzenia, testowania, debugowania i releasowania aplikacji. Ogromny kombajn (wersja enterprise 2015 z wszystkimi dodatkami zajmuje 34 GB) a działa wyjątkowo dobrze i wygodnie się w nim pracuje.

Przeznaczony raczej do większych aplikacji i dedykowanych rozwiązań.

Bardzo obszerny i konkretny kurs (od którego zaczynałem naukę C#) znajdziesz tutaj: http://www.centrumxp.pl/dotNet/20,kategoria,Kurs-C-cz-I.aspx

Polecam również blog Marka Zająca: http://zajacmarek.com/2015/04/kurs-c-cz-1-zacznijmy-od-wstepu/, gdzie znajdziesz masę przydatnych informacji i materiałów szkoleniowych. Od podstaw C# po zaawansowane zastosowania.

 

C/C++

Umiejętność powoli niszowa.

Warto dodać, że C++ to taki jakby C tylko wzbogacony o obiekty. Podczas gdy C jest językiem typowo proceduralnym, C++ wspiera programowanie obiektowe.

Oba mają swoje typowe zastosowania, do których trzeba naprawdę dobrze poznać te języki, by móc coś znaczyć.

Pierwsze z nich, tyczące się C, to programowanie systemów wbudowanych Embedded. Mikroprocesory i te sprawy. Raczej dla pasjonatów/fanatyków. Przeciętniak może się szybko zrazić.

Drugie to programowanie wysoko wydajnych aplikacji desktopowych i konsolowych. Mam tu na myśli, oczywiście, gry 3D.

Z racji, że w grach każda wygenerowana klatka ma znaczenie, a nikt nie lubi, gdy gra zaczyna mu się ścinać, kod tworzący gry komputerowe jest niemal najbardziej wyśrubowany ze wszystkich typów aplikacji.

C/C++ nie prowadzą programisty za rączkę, jak pozostałe, omówione wcześniej języki. Nie ma tu Garbage Collectora, który zajmie się nieużywanymi obiektami. Tutaj programista naprawdę musi wiedzieć, co robi. Sami alokujemy pamięć, zwalniamy ją i zmieniamy jej zasoby przydzielone poszczególnym zmiennym.

Serdecznie polecam MEGA tutorial programowania w C++ „Od zera do gier kodera” – http://xion.org.pl/productions/texts/coding/megatutorial/.

Sam od niego zaczynałem i jest godzien polecenia.

Warto również zerknąć na kurs online do nauki C i C++: http://cpp0x.pl/kursy/Kurs-C++/1

 

Objective C

Jeżeli nastawiasz się na development pod urządzenia Apple, Objective C powinno być Twoim pierwszym wyborem.

Nie chcę powiedzieć, że nie masz innych alternatyw. Pod iOS możesz pisać aplikacje w JAVIE i uruchamiać je w virtualnej maszynie lub możesz korzystać z bardziej zaawansowanych i drogich narzędzi (takich jak Xamarin), które umożliwiają pisanie kodu w C# i budowaniu go pod konkretne środowisko (jak iPhone, iPad, MAC czy Android).

Jednak jeśli chcesz pisać typowo natywne aplikacje, musisz skorzystać z Objective C.

Z językiem C ma on wspólną tylko część nazwy. Objective C jest znacznie wyższego poziomu i jest typowany w całości dynamicznie.

Materiałów do nauki iOSa nie ma zbyt wielu (zbyt wielu darmowych w języku polskim). Wciąż jest tu spore pole do popisu.

Dobry punkt startowy dla nauki programowania pod iOS znajdziesz na blogu Gutka: http://blog.gutek.pl/2013/08/05/ios-dla-poczatkujacych/

 

Pascal/Delphi

Pascala spotyka się jeszcze czasami na studiach czy w liceach. Jednak sama technologia odchodzi do lamusa.

Popularny dwadzieścia lat temu, teraz wyparty przez bardziej przyjazne technologie.

Jego zalążki sięgają 1970 roku, to już niespełna 50 lat temu.

Podobny w swojej składni do C++, jednak znacznie bardziej opisowy, przez co mniej czytelny. Wymaga więcej znaków, by osiągnąć ten sam efekt.

Delphi to środowisko, w którym tworzy się aplikację przy pomocy języka Object Pascal. Początkowo to środowisko nazywało się Turbo Pascal.

Szczerze, to bardzo rzadko spotyka się oferty pracy w Delphi/Pascal. Jeśli już, to zazwyczaj są to stare opasłe aplikacje, które wymagają utrzymania i drobnych poprawek (koszmar dla każdego programisty).

Mogę zabrzmieć trochę drastycznie, ale chyba nie warto się uczyć tej technologii.

Dla referencji można zajrzeć na: http://pascal.kurs-programowania.pl/

 

Assembler

Mimo swojego wieku (Pierwszy Assembler został stworzony już w 1945 roku!) Assembler jest powszechnie używany do dzisiaj.

Oczywiście, assembler to tylko nazwa zwyczajowa, a języków assemblera jest multum (każdy inny dla różnych grup procesorów).

Jest to język bardzo niskiego poziomu, w którym dosłownie piszemy linijka po linijce polecenia dla procesora.

Ma swoje bardzo konkretne zastosowania, gdzie użycie nawet najszybszych bibliotek C jest zbyt wolne.

Pisanie w nim wymaga nie lada umiejętności.

Z racji, że technologia jest wiekowa, strony uczące programować w Assemblerze są nieco archaiczne. Niech Cię jednak to nie przerazi! Informacje na nich są wciąż aktualne:

http://assembler.ryszki.prv.pl/

https://g.bialic.po.opole.pl/e_kurs/

 

Języki funkcyjne (SCALA, LISP, Erlang)

Programowanie funkcyjne to nieco inny poziom abstrakcji. W programowaniu takim nie występują zmienne, do których możemy przypisać jakąś wartość, ani pętle (w tym główna pętla czasu)  które sterują przebiegiem wykonania kodu.

Zamiast tego mamy stałe oraz funkcje, a zamiast pętli stosuje się rekurencję.

Języki typowo funkcyjne mają swoje ścisłe przeznaczenie i raczej nie nadają się na pierwszą przygodę z programowaniem. Poza tym są używane stosunkowo rzadko.

Scala np. jest językiem zorientowanym obiektowo, który wspiera programowanie funkcyjne. Styl funkcyjny nie jest w nim obligatoryjny. Jest do ogólnego przeznaczenia.

Tu, niestety, darmowych kursów ze świecą szukać. Można znaleźć jakieś wzmianki i krótkie opisy, ale za kompletny kurs trzeba Ci będzie zapłacić.

Inaczej sprawa wygląda w materiałach anglojęzycznych.

Kompletny kurs podstaw programowania funkcyjnego w Scali znajdziesz np. na stronie Cursera:

https://www.coursera.org/course/progfun

 

Podsumowując,

każdy język programowania sprawdza się lepiej lub gorzej, w zależności od kontekstu. Bez wątpienia, patrząc na ilość ofert pracy, na topie są: JAVA, C# oraz PHP.

Do tego bardzo popularny robi się JavaScript wraz z szeroko pojętym frontendem.

Jeżeli uważasz, że listę warto wzbogacić, zostaw swój komentarz poniżej.

Programowanie jest trochę jak jazda samochodem. Jak już nauczysz się jeździć, dużo łatwiej będzie Ci się przesiąść z osobówki do busa.

Jak poznasz zasady programowania z użyciem jednego języka, nauka kolejnych będzie prosta i przyjemna.

Na koniec wiedz, że nie ma czegoś takiego jak najlepszy język programowania.

Gdyby taki istniał, reszta byłaby zbędna.

22 Responses on this post

  1. Niezłe zestawienie.

    Właściwie, to wszystkie topowe technologie są. Można jeszcze wspomnieć o bardziej fancy languages, jak np. GO czy Groovy. Chociaż w sumie ten zestaw pokrywa 99% rynku.

    Dobra robota, dobry punkt startowy.

  2. Świetny artykuł. Do podsumowania mogę dodać, że technologie i popularne języki programowania zmieniają się co kilka lat, nie należy się więc też zbytnio przywiązywać do jednej :).

    Bazując jednak na doświadczeniu, podejmując naukę nie należy się kierować wyłącznie ilością ofert pracy w danym okresie. Przykładowo Ruby zaczął zyskiwać popularność w 2003 roku, a PHP i Java to jedyne liczące się wcześniej technologie.

    Różne języki programowania są popularne w odpowiednich dla siebie grupach docelowych. Dlatego Assembler nigdy nie będzie popularny wśród klientów na PHP i odwrotnie 🙂

    1. Dzięki Sebastian!

      Oczywiście, masz rację. Trendy na rynku programowania zmieniają się bardzo dynamicznie i ciężko przewidzieć sytuację za kilka lat.

      Dlatego wyspecjalizowanie się wyłącznie w jednej technologii często jest ślepą uliczką, gdyż w dzisiejszych czasach bardzo liczy się elastyczność.

      Pozdrawiam 🙂

      1. Nie do końca. Dla proagmisty, który jest profesjonalistą w jednej technologii przełączenie się na inne, gdy zachodzi potrzeba jest znacznie łatwiejsze. Z kolei poznanie technologii na wysokim poziomie i pozostanie na bieżąco’ zużywa tak duże zasoby czasu, że nie jest możliwe bycie profesjonalnym programistą w kilku technologiach na raz, chyba że człowiek chce być „średnim” programistą.

  3. Wyczarpujący artykuł, chociaż nie do końca ze wszystkim na temat Javy mogę się zgodzić 😉 Podobnie zastanowiłbym się nad zaliczaniem HTML/CSS do języków programowania.

    Sam jestem autorem http://www.samouczekprogramisty.pl gdzie podobnie jak tu PHP staram się wprowadzić początkujących w świat Javy 🙂

    1. Hej Marcin,
      dlatego właśnie w pierwszym zdaniu w HTML wskazuję, że nie jest to język programowania 🙂 jednak i HTML i CSS są tak nieodłącznymi elementami, na których bazuje niemal każdy programista, że musiałem je tu wymienić.

      Fakt, że tytuł artykułu mógłby wtedy być nieco inny.

      PS. Fajna strona. Dobry punkt startowy dla przyszłych JAVOwców 🙂 Dorzucę do materiałów.

    1. Mimo to, w3schools to niesamowita strona, gdzie masz podane wszystko jak na talerzu. To jedno z najlepszych miejsc w sieci jeśli zapomnisz składni a chciałbyś sobie coś przypomnieć. Ja osobiście polecam.

  4. Nie podoba mi się, że nie umieściłeś linków do oficjalnej dokumentacji poszczególnych języków, a podajesz linki do jakichś kursów.

    1. Hej Patryk,
      masz do tego prawo. Wyszedłem z założenia, że jest to punkt startowy do nauki nowych języków programowania. Rzadko kto zaczyna naukę od dokumentacji. Poza tym wpisując dany język w Google pierwszym wynikiem zazwyczaj jest właśnie oficjalna strona wraz z dokumentacją.

      1. Rzadko kto zaczyna od dokumentacji, bo rzadko kto nie mający jakiegokolwiek doświadczenia z programowaniem wie, że coś takiego jak dokumentacja istnieje. Wielu ludzi powiela mit, że żeby opanować dany język trzeba przebrnąć przez kursy, książki i wtedy można spróbować coś napisać samemu, dlatego sporo ludzi sobie odpuszcza już na samym początku. Rzadko kto produkuje sensowne kursy dla początkujących; czyli przedstawienie podstaw syntaxu i jak zacząć nowy projekt. Rzadko kto mówi w swoich kursach o dokumentacji i do czego ona służy, a od tego powinno się zacząć. Programista musi już od samego początku wiedzieć, że przedstawiony w kursie algorytm jest jedynie jednym z wielu, a faktycznie każdy developer powinien zrozumieć zasadę ich budowania. W znacznej większości, kursy polegają na przedstawieniu gotowego algorytmu, wytłumaczeniu jego poszczególnych elementów, przez co początkujący developer ma wrażenie, że „to właśnie tak powinno się robić”. Sam przez to przechodziłem 8 lat temu i wiem o czym mówię, tak samo jak sporo znajomych zaczynających zabawę z programowaniem, po obejrzeniu kursów odbiera takie wrażenie.

  5. Bardzo dziękuję za merytoryczne zestawienie. Właśnie czegoś takiego szukałem 🙂

  6. Bardzo miło się czytało, prosto napisany tekst, aby każdy nowicjusz zrozumiał co z czym (czyli coś dla mnie). Bardzo dziękuję. No i ukłony za ostatnie dwa zdania 😉

  7. Gratuluję świetnego kursu! Bardzo dziękuję również za błyskawiczną wysyłkę książki.
    Mam pytanie, jaką Uczelnię i Wydział Pan kończył? Widać, że mam Pan bardzo zdroworozsądkowe podejście do programowania i potrafi bardzo dobrze przekazać wiedzę, może to zasługa właśnie świetnej Uczelni?

    1. Cześć Justyno,
      dziękuję bardzo za te miłe słowa. Kończyłem Politechnikę Śląską w Gliwicach, na wydziale AEI. Nie wiem, jak duży wpływ miała na mnie ta uczelnia, ale zdrowy rozsądek zdecydowanie pomógł mi ją ukończyć.
      Pozdrawiam serdecznie i życzę wielu sukcesów!

Comments are closed.