Najlepszy język do nauki programowania

W dobie coraz powszechniejszego wykorzystania komputerów w prawie wszystkich dziedzinach życia bardzo wiele osób chce uczyć się programować. Pojawia się więc pytanie: jaki jest najlepszy język do nauki programowania? Postaram się odpowiedzieć na to pytanie w miarę moich skromnych możliwości. Jakieś tam doświadczenie z nauką różnych języków i technologii mam. Omówię tu kilka z nich, podając zalety, wady i moje prywatne przemyślenia.

Najlepszy język do nauki programowania - ilustracja
źródło: https://pixabay.com

Na początek może rozwieję wątpliwości – tak naprawdę nie ma czegoś takiego jak najlepszy język do nauki programowania. Każdy w zasadzie jest dobry, każdy ma lepsze i gorsze strony. Ile osób, tyle opinii. To, co naprawdę się liczy w pracy programisty to umiejętność myślenia w pewien określony sposób. Nawet jeżeli składnia poszczególnych języków jest różna, to algorytmy pozostają te same. Dlatego wybierając pierwszy język warto poznać charakterystyki różnych i wtedy zdecydować, którego chcę się nauczyć, czy raczej na podstawie którego chcę się nauczyć programować.

C / C++

Kiedy dawno temu zaczynałem uczyć się programowania, chyba najpopularniejszym językiem, do nauki którego była masa książek i kursów internetowych był C++. Także na studiach, na przedmiocie „Podstawy programowania” poznawaliśmy C/C++. Nie jest to najmłodszy język, ale właśnie przez tą swoją dojrzałość jest ceniony przez wielu specjalistów. Dziś rzadziej wykorzystywany przy tworzeniu aplikacji, jest wciąż bardzo przydatny przy programowaniu na niskim poziomie (na przykład mikro kontrolerów). To za sprawą wydajności. Szczególnie C jest językiem w którym programista ma bardzo dużą kontrolę nad pamięcią (nie taką jak w assemblerze, ale wciąż większą niż w takiej Javie). C++ natomiast wprowadza do języka możliwość programowania obiektowego, z zachowaniem bardzo dobrej wydajności C. Zaletą C++ są też strumienie, ułatwiające przesyłanie danych. Kompilatory C i C++ są szeroko dostępne w sieci, zarówno te darmowe, jak i płatne.

#include <iostream>
using namespace std;
int main() 
{
    cout << "Hello, World!";
    return 0;
}

Przykładowy fragment kodu w C++

Bardzo fajnie, powiesz, ale ja dopiero chcę się nauczyć programować i nic z tego nie rozumiem. Ok, teraz moja ocena C/C++ jako pierwszego języka do nauki. Ja tak zacząłem. Pewnie, nie było to programowanie najwyższych lotów, ale nikt nie zaczyna od napisania sterownika albo jądra systemu operacyjnego. Co to oznacza – skoro małolat był w stanie nauczyć się pisać programy, to da się od tego zacząć. Czy warto? C/C++ daje większą kontrolę nad pamięcią, tak naprawdę uczy tego, jak komputer tą pamięcią zarządza. To bardzo cenna wiedza, nawet, jeżeli pisząc kod na co dzień się nad tym nie zastanawiamy. Minusem jest mniejsza niż kiedyś popularność – na C/C++ jest po prostu mniej ofert pracy (nie mówię że mało, ale mniej niż choćby na C#). Brak też wielu nowoczesnych bibliotek i konstrukcji, które ułatwiają pracę, wykonując jej część za programistę (nawet, jeżeli kosztem wydajności).

C# i .NET

Wspomniałem o C#. Brzmi podobnie do C, prawda? To dlatego, że C# jest niejako rozwinięciem C/C++. Jest to język stworzony dla Microsoftu a jego kod kompilowany i uruchamiany przez środowisko .NET (.NET Framework, Core i inne). Jest obecnie bardzo popularny (sam pracuję jako programista .NET). Zdecydowanie młodszy od dwóch poprzednich, powstał koło roku 2000 i jest wciąż bardzo aktywnie rozwijany. Choć jest spadkobiercą C, to posiada wiele cech upodabniających go np. do Javy. Nie mamy tu bezpośredniego zarządzania pamięcią, tym zajmują się procesy w środowisku uruchomieniowym. Również dziedziczenie działa podobnie jak w Javie. Moim zdaniem jednak najmocniejszą stroną .NETa i C# która daje ogromną przewagę nad Javą jest LINQ, czyli język zapytań do danych, działający bez względu na ich format (zmienne w pamięci, pliki csv, bazy danych, arkusze Excel itp.). Znacznie przyspiesza i ułatwia on pracę z danymi w różnych formatach a jego możliwości są przeogromne.

using System;

namespace MyNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, world!");
            Console.ReadLine();
        }
    }
}

Przykładowy fragment kodu w C#

Najpopularniejszym środowiskiem developerskim do pracy w .NET jest Visual Studio. Program jest stworzony i rozwijany przez Microsoft, a jego podstawowa (choć pozwalająca wykorzystać wszystkie możliwości języka) wersja dostępna jest za darmo.

Wszystko super, ale czy warto zaczynać od C#? Powiem tak – praktycznie każdy kod, który działa w C++ po niezbędnych poprawkach składniowych zadziała w C#. Ta kompatybilność nie jest może tak duża jak między C a C++, ale ucząc się programować raczej nie napiszemy kodu, który używa zaawansowanych mechanik specyficznych dla danego języka. C# jest nowoczesny, wciąż mocno rozwijany i wspierany przez Microsoft. Znajdziemy dużo poradników, książek i kursów dla tej technologii. Stosunkowo łatwo znaleźć też pracę znając C# i generalnie .NET. W C# napiszemy też np. aplikację webową, które są coraz bardziej popularne. No i mając mechanizmy jak garbage collector nie musimy martwić się alokacją pamięci. Jest to też zdecydowanie lepszy język do nauki programowania obiektowego.

Interfejs programu Visual Studio
Interfejs programu Visual Studio

Java (nie mylić z JavaScript)

Kilka razy użyłem nazwy Java. Zakładam, że prawie każdy o Javie słyszał. Jest to bardzo popularny język, szczególnie na uczelniach, ale też na różnego rodzaju kursach i bootcampach. Nie bez przyczyny. Przez wielu uważany jest bowiem za prosty do nauki, a jednocześnie nowoczesny i wciąż rozwijany (co jest nie bez znaczenia). Składniowo bardzo podobny do rodziny C (bardziej do C# niż C/C++). Także tutaj występuje automatyczne zarządzanie pamięcią, silna typizacja i obiektowość. Java także kompiluje się w swoim specyficznym środowisku. Tutaj jednak rolę tą pełni maszyna wirtualna. Oznacza to, że kod napisany w Javie można odpalić wszędzie, gdzie można odpalić taką maszynę: na komputerze, w telefonie, zegarku, ale też w lodówce czy pralce (serio, są sprzęty domowe z Javą na pokładzie). Oznacza to niestety również czasem problemy z optymalizacją i wydajnością (kwestie wirtualizacji). Środowisk do pracy z Javą jest kilka. Najpopularniejsze są darmowy Eclipse oraz płatny IntelliJ.

public class HelloWorld 
{
    public static void main(String[] args) 
    {
        System.out.println("Hello, World");
    }
}

Przykładowy fragment kodu w Javie

Jak się sprawa ma z łatwością wejścia do świata programowania przy pomocy Javy? Materiałów (książek, tutoriali, kursów, szkoleń itp.) jest zatrzęsienie. Zaryzykowałbym nawet stwierdzenie, że jest to najpopularniejszy język wśród początkujących programistów i tych, którzy chcieliby nimi zostać. To oznacza łatwość w znajdowaniu porad. Niestety, powoduje to też, że jest bardzo dużo porad i materiałów bezwartościowych, albo wręcz szkodliwych w nauce. Statystyka. Wybierając jednak te renomowane (z polecenia, albo mające pozytywne opinie), można się wiele nauczyć. Problem jest tylko taki, że Java jako narzędzie pisania programów desktopowych umiera. Trzyma się jakoś na urządzeniach mobilnych (Android) i w aplikacjach webowych, ale i tam ma coraz mocniejszą konkurencję (choćby w postaci wspomnianego wcześniej .NETu). Jasne, da się bez problemu znaleźć pracę na stanowisku Java Developer, ale z pewnością jest jej mniej niż kiedyś.

Podsumowanie

Sam więc widzisz, czytelniku, że nie da się jednoznacznie wskazać, jaki jest najlepszy język do nauki programowania. Dużo zależy od potrzeb, predyspozycji, osobistych preferencji i gustów. Rynek jest zmienny, technologie jeszcze bardziej, więc bardzo prawdopodobne, że dzisiejsze trendy za rok, dwa albo pięć się zmienią. Jeżeli jednak dobrze opanujesz algorytmy, zaczniesz myśleć jak programista, to zmiana języka będzie tylko formalnością – kwestia miesiąca, albo mniej, by przyzwyczaić się do trochę innej składni.

Jeżeli temat cię zainteresował i chciałbyś dowiedzieć się więcej o pracy programisty, lub chciałbyś nim zostać, ale nie wiesz jak, polecam książkę pana Macieja Aniserowicza pt. „Zawód: Programista”. Dostępna jest pod tym adresem: zawodprogramista.pl. Sam tą książkę kupiłem i szczerze polecam.

Najlepszy język do nauki programowania według mnie

Być może jesteś ciekawy co ja mogę doradzić. Nie będę bardzo oryginalny. Dla mnie osobiście, na dzień dzisiejszy, najlepszy byłby C# lub Java. Pamiętaj jednak – to tylko moja opinia. W dodatku bardzo subiektywna. Decyzja należy do ciebie.

Leave a Reply