fbpx ...

Whitespace, a może Brainfuck? Lista dziwnych, ezoterycznych języków programowania jest długa. Dzisiaj zajmiemy się jednak popularnymi językami programowanie i podzielimy je względem trudności, także z perspektywy nauki.

Z góry uprzedzam – to nie jest ranking, a subiektywne odczucie z mojej strony. Patrzę na trudność języka z perspektywy kogoś, kto ma doświadczenie w programowanie C++ i Pythonie.

Dla początkującej osoby hasła takie jak (eghm…) Java czy C++ brzmią jak jedno i to samo, jednak nic bardziej mylnego. Języki programowania można podzielić na łatwe i trudne w kilku aspektach. Pod względem trudności nauczenia, ilości materiałów do przyswojenia, składni i zastosowania.

Łatwe języki programowania

Pierwszym z języków stosunkowo łatwych jest Python, utworzony przez holenderskiego programistę van Rossuma. To dobra opcja na start, gdyż cechuje się on z góry narzuconą, łatwą i zwięzłą składnią. Pythona polecam jako język na pierwszy raz. Można do niego podejść nawet osoba z zerowym doświadczeniem. Dodatkowo Python wymusza formatowanie, nie ma nawiasów, nie ma średników, nie da się napisać “brzydkiego” kodu.

Również Java nie należy do trudnych. Już na samym początku jest mniej rzeczy do przyswojenia niż w innych językach i nie trzeba zagłębiać się w teorię wskaźników, która była zmorą wielu studentów kierunków informatycznych z C++. Nie ma też zarządzania pamięcią. Minusem Javy może być konieczność nauki dodatkowych bibliotek takich jak Spring lub Hibernate.

Nie przejdzie mi przez gardło nazwanie HTML-a językiem programowania, bo to sposób formatowania tekstu, ale na liście HTML może się znaleźć. Jego znajomość jest podstawą do pracy z frontendem.

Czyli języki łatwe i dobre na start: Python i Java.

Trudne języki programowania

C++ to język, który jest trudny nie ze względu na stopień skomplikowania, a na ogromny zakres materiału, który trzeba przyswoić. Programować w C++ można bardzo szybko, trudno zostać ekspertem. Jeśli ktoś czuje się w nim naprawdę swobodnie, bez problemu porusza się po szablonach, to stanowi pewnie najlepsze 10% programistów C++. Dodatkowo C++ uczony był bez zachowania dobrych praktyk i z wykorzystaniem złych praktyk na uczelniach, więc ma otoczkę języka trudnego. Źle uczony rzeczywiście może być trudny.

Niektórzy spotykali się w pierwszej kolejności z językiem C i też C wyskakuje, co dziwne, w niektórych listach “łatwych języków”. Ja się z tym nie zgodzę. W C brakuje obiektowości i kod pisze się w zupełnie innym stylu. Moim zdaniem to utrudnia zrozumienie kodu.

W przeciwieństwie do Javy, JavaScript można uznać za język trudny, głównie przez swoją nieintuicyjność. Są pewne konteksty w języku, jak na przykład ewaluacja wartości, gdzie oczekuje się innego rezultatu, niż ten, który daje JavaScript. Do tego w JavaScript nie ma obiektowego paradygmatu, popularne jest za to programowanie funkcyjne, w którym łatwo się pogubić.

Dla osób, które zaczęły swoją przygodę z tym językiem nie będzie to problemem, ale osoby wcześniej obeznane z innymi językami programowania mogą uznać JavaScript za niekonsekwentny i dziwaczny pod względem zapisu i działania. Do tego te wszystkie frameworki. Nie wystarczy sama znajomość JSa. Musisz znać TypeScript, React, Angular, Vue i kto wie co jeszcze 🙂

Czy warto uczyć się trudnych języków programowania?

W przypadku C++ odpowiedź jest prosta: TAK! Oferty pracy w językach trudniejszych i mniej popularnych są dużo ciekawsze. Zwłaszcza, że C++ używany jest w takich rozwijających się branżach jak embedded czy gamedev. Trzeba jednak być nastawionym na dużo pracy i przyswojenie ogromu informacji.

Dlatego dobrym rozwiązaniem, dla osób początkujących będzie Python. Łatwy i przyjemny. Frontendowcy powinni zainteresować się znów pakietem JavaScript, HTML i CSS, co daje pakiet podstawowych narzędzi dobrego frontendowca.

ninjaletter

A może Ninjaletter?

Chcesz wiedzieć, co słychać w C++ i nie tylko? Zapisz się na Ninjaletter i otrzymuj od nas co miesiąc dawkę wartościowych treści o C++ i zadania rekrutacyjne. Do tego dorzucamy darmowe materiały, spoilery o nowych kursach, specjalne promocje dla ninjaletterowiczów i wiele, wiele innych. To co, skusisz się?

Łukasz Ziobroń

Łukasz Ziobroń

Zmieniam ludzi w prawdziwych programistów. W nauczaniu stosuję grywalizację, andragogikę i neurodydaktykę.

Najnowsze artykuły

good programming practices

Good programming practices – Coding Dojo

Training in a form of Coding Dojo. Participants start with a code review of a small application. They note down their comments. After that, the trainer presents bad and good programming practices. Participants discuss what can be applied in a reviewed code and start fixing it in a form of Coding Dojo.

Czytaj »

Popular C++ Idioms – Coding Dojo

The training starts with a code review of a small application (pre-work). Participants note their thought and discuss their findings in groups. Then popular C++ idioms are presented (the concept and some code) – about 15-20 minutes each. After that participants need to use some of the idioms in a reviewed application code.

Czytaj »
performance optimisations

Performance optimisations

This training is about writing more robust C++ code and algorithms with the help of CPU caches and a compiler. Benchmarking tools are used to show performance gains.

Czytaj »
C++ toolset

C++ toolset

Covers a lot of ground about C++ related tools: build systems, compilers, debuggers, static and dynamic binary analyzers. It is focused more on discovering useful tools, that can solve many software engineering problems.

Czytaj »

Templates – Advanced techniques

Basic usage of C++ templates may not be enough to utilize opportunities, which were introduced in the latest C++ standards. From C++11 we can use templates with any number of parameters and use a simplified mechanism for SFINAE, which is claimed to be a real C++ wizardry.

Czytaj »
templates – basics

Templates – Basics

Templates are pointed out to be the most difficult part of the C++ language. Difficult, but very useful. They allow writing very generic and universal code. Thanks to them, we can avoid code duplication, but also, make it incomprehensible for beginners. This session allows for gaining the necessary knowledge and good practices on using templates.

Czytaj »
STL algorithms in C++ 17

STL Algorithms in C++ 17

This training focuses on the effective use of C++ documentation to implement applications with the use of STL algorithms. First part is mainly theoretical, but there are many short exercises (in a paper form) to apply knowledge instantly and force participants to think and search for solutions in the documentation. The other part is a group activity – implementation of the cryptographic application with proper STL algorithms instead of raw loops.

Czytaj »
STL containers

STL Containers

This training focuses on the effective use of C++ documentation. Computational complexity issues are mentioned. There are many short exercises to apply knowledge instantly and force participants to think and search for solutions in the documentation.

Czytaj »
ninjaletter

Już uciekasz?

Zanim to zrobisz, zapisz się na Ninjaletter, aby wiedzieć, co piszczy w C++. 

Informujemy, iż w celu realizacji usług dostępnych w naszym serwisie, optymalizacji jej treści, dostosowania strony do Państwa indywidualnych potrzeb oraz wyświetlania, personalizacji i mierzenia skuteczności reklam w ramach zewnętrznych sieci reklamowych korzystamy z informacji zapisanych za pomocą plików cookies na urządzeniach końcowych użytkowników. Pliki cookies można kontrolować za pomocą ustawień swojej przeglądarki internetowej. Dalsze korzystanie z naszego serwisu, bez zmiany ustawień przeglądarki internetowej oznacza, iż użytkownik akceptuje stosowanie plików cookies. Więcej informacji zawartych jest w polityce prywatności serwisu.