Wybór pierwszego profesjonalnego języka programowania

Wybór pierwszego profesjonalnego języka programowania, którego chcemy się nauczyć jest często trudną decyzją. Nie bardzo mamy pojęcie co chcemy robić, ani tak naprawdę czym różnią się te języki. Problem jest na tyle skomplikowany, że nie da się wybrać czegoś najlepszego, każdy wybór będzie obarczony jakimiś wadami i zaletami. Wynika to po prostu z technologii i specyfikacji konkretnych języków.

 

Po pierwsze zastanówmy się, co chcemy robić? Spektrum możliwości jest bardzo szerokie. Gry i aplikacje na urządzenia mobilne, strony internetowe, aplikacje na komputery i laptopy, zaawansowane i skomplikowane algorytmy (np. sieci neuronowe, sztuczna inteligencja) i wiele, wiele więcej. Taki wybór ogranicza nam wybór technologii z kilkuset do kilku.

 

Po drugie zastanówmy się czy chcemy iść w stronę back-endu czy front-endu? Front-end (przód aplikacji, głównie to co widać czyli np. wygląd strony internetowej) to przede wszystkim języki skryptowe (np. JavaScript). Back-end to z kolei strona serwerowa danego projektu, czyli serwery gier, serwery obsługujące żądania na stronie (np. logowanie), skomplikowane algorytmy genetyczne, silniki graficzne czy obliczeniowe. W back-endzie używane są języki obiektowe (np. C#, Java).

 

Gdy już określimy nasze ogólne preferencje do tego co chcemy robić, możemy przejść do jednej z ważniejszych kwestii jaką są trendy rynkowe. To czy dana technologia / język programowania nie „umrze” w ciągu najbliższych kilku lat, a co za tym idzie, nasza umiejętność programowania w nim, może nie być już nic warta, decyduje bardzo wiele czynników. Są nimi: wielkość społeczności, która pisze w danym języku, popularność danego języka, czy język nadal jest rozwijany (jeśli tak, w jakim tempie?), zastosowanie danego języka (np. ile i jakich problemów można rozwiązać przy jego pomocy).

 

Poniżej ogólny opis kilku bardzo popularnych języków wraz z przykładowymi zastosowaniami:

C# - język wysokiego poziomu, wyręcza w wielu kwestiach programistę np. zarządzanie pamięcią, jest dobry na początek, kiedy to trzeba się głównie skupić na algorytmie, który rozwiązuje dany problem, a nie problematycznej implementacji. Wykorzystywany bardzo szeroko np. technologie web, serwery gier, serwisy.

Java - język wysokiego poziomu, konkuruje z językiem C#. Różnic między nimi jest kilka, np. Java ma możliwość wykonywania na wszystkich systemach operacyjnych. Wykorzystywany podobnie jak C#. Oba te języki pozwalają na szybkie budowanie aplikacji dzięki setkom tysięcy gotowych bibliotek, frameworków i rozwiązań.

C++ - język niższego poziomu niż C# i Java. C++ daje duże możliwości, ale także dużo „wymaga”. Wspomniane już wyżej zarządzanie pamięcią, rekompensowane jest dużą szybkością działania i bezpośrednim dostępem do zasobów sprzętowych. Stosowany jest w miejscach gdzie kładzie się duży nacisk na szybkość działania np. systemy operacyjne, silniki analityczne itp., ale także w firmach które zajmują się rozwiązaniami elektronicznymi, mikrokontrolerami oraz komunikacja.

Zostały jeszcze języki skryptowe jak JavaScript czy PHP. Brakuje w nich kilku zaawansowanych mechanizmów oraz silnego typowania. Mimo tego nauka podstaw (zmienne, tablice, pętle, instrukcje warunkowe, funkcje) jest możliwa. Ciekawą „nakładką” na JavaScript jest TypeScript, który umożliwia programowanie obiektowe.

 

Musimy jednak pamiętać, iż nie ważne co wybierzemy, nauka programowana na pewno zaowocuje i przyniesie nam korzyści w przyszłości. Podstawowe mechanizmy w każdym języku są takie same i gdy je poznamy, będziemy mogli używać dowolnego języka, najlepszego w danej sytuacji.