O językach na poważnie

Ostatnio napisałem post o pytaniach. Co prawda skupiłem się na tym jak ja widzę zadawanie pytań i co mnie w tym razi ale czas najwyższy aby odpowiedzieć na pytanie postawione w tytule tamtego postu. Czyli porozmawiajmy o językach na poważnie.

Jaki język na początek?

Takie pytanie zadałem w tym poście tyle, że dotyczył on trochę innego tematu. Dlatego teraz odpowiem na to pytanie. Najważniejszym językiem dla programisty jest język angielski. Ameryki nie odkryłem prawda? Cóż dla ludzi, którzy chociaż trochę orientują się w temacie to rzeczywiście jest oczywiste. Wszystkie liczące się technologie mają dokumentacje w języku angielskim. Nie spotkałem się nigdy z dokumentacją w języku polskim. Kolejną rzeczą jest dostępność materiałów do nauki. Większość dobrych materiałów jest napisana lub przedstawiana w języku angielskim. Jest bardzo niewiele wartościowych kursów i tutoriali w naszym rodzimym języku. Dlatego polecam każdemu kto myśli o tym aby pracować jako programista zacząć od nauki angielskiego.

A język programowania?

Wokół programistów co chwilę pojawiają się nowe języki programowania. Serio… Wyrastają one jak grzyby po deszczu. Dlaczego tak się dzieje? Cytując klasyka:

„Nie wiem, choć się domyślam”.

Tadeusz Sznuk. Jeden z dziesięciu
Tadeusz Sznuk

Skoro jest tak dużo możliwości to łatwo coś wybrać dla siebie prawda? Otóż nie do końca. Nie jest to łatwy temat ponieważ każdy kto posiada jakiekolwiek doświadczenie uzna, że naprawdę łatwo jest znaleźć język który będzie pasował akuratnie jemu. Jeżeli jednak ktoś nie ma doświadczenia, a zakładam, że właśnie dla takich osób jest ten wpis, to odnalezienie się w gąszczu różnych technologii może być trudne.

Co chcesz robić?

Na samym początku swojej przygody z programowaniem musisz sobie odpowiedzieć na bardzo ważne pytanie. Co chcesz robić jako programista/ programistka? Czy interesuje Cię tworzenie stron lub zaawansowanych aplikacji internetowych? A może bardziej podpadnie Ci do gustu praca nad sporym systemem bankowym lub innym, który wymaga precyzyjnego operowania na liczbach? Albo może marzysz o pracy przy tworzeniu kontynuacji swojej ulubionej gry? Jasno sprecyzowany cel jest bardzo ważny ponieważ pozwala wytyczyć odpowiednią ścieżkę do osiągnięcia go. Gdy wiemy co chcemy robić za dwa lata to dążymy do tego żeby to robić. Trochę masło maślane ale obrazuje to o co mi chodzi.

To teraz o językach

Nie tak dawno przygotowywałem sobie listę języków i do każdego dopisywałem zastosowanie. Doszedłem do wniosku, że taka lista jest bez sensu i zmieniłem podejście. Stworzyłem listę możliwych zastosowań (tych najpopularniejszych) i dobrałem do nich języki. Taki styl przedstawię też tutaj bo moim zdaniem jest on czytelniejszy i pozwala od razu wybrać interesującą nas kategorię. 

Webdev

Ogólnie cały webdev można podzielić jeszcze na dwie kategorie i tak też uczynię. Mamy języki, które nadają się do pisania backendu oraz języki potrzebne w frontendzie.

O językach na poważnie
Frontend vs Backend

Backend

  • Java 
  • C#
  • Python
  • Ruby
  • PHP
  • JavaScript

Frontend

  • HTML
  • CSS
  • JavaScript
  • TypeScript

Języki frontendowe mają swoje odmiany lub preprocesory jak w przypadku CSSa ale na początek warto się zainteresować podstawami a dopiero później wybierać z różnych dodatków. W językach backendowych na pewno pominąłem jakieś, które w tym momencie nie przychodzą mi do głowy. Jeżeli uważasz, że jakiegoś języka brakuje a powinien on tutaj być to daj znać w komentarzu a na pewno go dodam jeżeli uznam, że pasuje do kategorii.

Aplikacje okienkowe

Jeżeli chodzi o aplikacje okienkowe to sprawa jest dosyć prosta. Mamy języki, które były w tym od zawsze i jakoś nie zamierzają ustępować miejsca młodszym.

  • C
  • C++
  • C#
  • Java
  • Objective C
  • Swift

Dwa ostatnie służą do pisania aplikacji pod systemy wydawane przez Apple. Możliwe jest jeszcze pisanie „okienek” w JavaScripcie ale do tego wymagany jest specjalny framework o którym na pewno napiszę osobny post.

Gry!

To jest temat, który mnie zawsze najbardziej interesował. Niestety jest on też bardzo trudny moim zdaniem. O ile do napisania prostej strony czy okienka nie potrzebujemy ogromnej ilości wiedzy to już stworzenie nawet prostej gry bez wykorzystania jakiegoś silnika to nie lada wyzwanie. Skoro w tym poście skupiam się na językach, pominę takie rzeczy jak silniki do tworzenia gier. O nich powstanie osobny post.

  • C/C++
  • C#
  • Java

Nie są to oczywiście wszystkie języki ale te najpopularniejsze. Pominąłem języki specyficzne dla danego silnika bo często są wykorzystywane i tworzone na potrzeby tylko tego jednego rozwiązania a więc dla nas trochę niepotrzebne.

AI / Big Data

Rynek, który ostatnio wystrzelił w górę i cały czas się rozwija. Niezwykle prężnie rozwija. Warto się zainteresować tymi tematami bo wielu ludzi uważa, że jest to przyszłość i to nie taka odległa. 

  • Python
  • Scala
  • R

Prawdopodobnie to nie wszystkie języki, które są do tych celów wykorzystane. Jednak ja jako osoba, która raczej nie interesuje się zgłębianiem tematu znam tylko te. Jeżeli znasz inne języki ważne w tych dziedzinach to dawaj znać w komentarzach a na pewno dodam je do listy.

Podsumowując

Przedstawiłem wam takie cztery moim zdaniem najważniejsze kategorie w programowaniu na rok 2018. Jeżeli to ulegnie zmianie to zmienię także ten post.

Uwaga!

Zwróć proszę uwagę na to, że nie piszę tutaj, który język jest moim zdaniem najlepszy. Nie robię tego ponieważ uważam, że każdy ma inne preferencje i to czy lepsza będzie dla Ciebie Java czy jednak Python zależy tylko i wyłącznie od Ciebie, Twojego bagażu doświadczeń oraz oczekiwań. Nie da się określić jaki język jest najlepszy. Każdy ma inne zastosowanie i każdy znalazł sobie jakąś niszę w której jest najlepszy. Dlatego też nie pytaj o to jaki język będzie najlepszy tylko sam przetestuj kilka i zobacz, który będzie pasował do Ciebie.

Podziel się wiedzą.

Jak już wielokrotnie tutaj pisałem. Jeżeli widzisz, że tutaj coś nie pasuje albo czegoś brakuje to pisz w komentarzu a na pewno podejmiemy dyskusję na ten temat i zaktualizujemy naszą wiedzę na ten temat.