Jakiego języka programowania powinienem się najpierw nauczyć w 2021 roku? ʇdıɹɔsɐʌɐɾ :ɹǝʍsuɐ

Podróż większości ludzi w kierunku nauki programowania zaczyna się od jednego, późnonocnego wyszukiwania w Google.

Zwykle jest to coś w stylu „Learn ______”

Ale jak decydują, którego języka szukać?

„W Dolinie Krzemowej zawsze żartują o Javie. Chyba powinienem się tego nauczyć.”

Albo:

„Haskell. So hot right now. Haskell.”

Or:

„Ten Go gopher jest po prostu tak gosh-darn cute.”

A potem jest reszta z nas. Prawdopodobnie będziemy szukać czegoś takiego jak:

„Którego języka programowania powinienem się najpierw nauczyć?”

Niewiele pytań jest tak często zadawanych, że dostają pełne leczenie infograficzne. Ale to jest jedno z nich:

Image credit

Decydowanie o swoim pierwszym języku programowania może być zabawnym procesem – coś jak jeden z tych „Którą postacią Quentina Tarantino jesteś?”

Ale zanim zaczniesz się uczyć Rubiego, bo w dzieciństwie lubiłeś bawić się Play-Doh, pozwól, że ci przypomnę: stawka jest bardzo wysoka.

Potrzeba setek godzin praktyki, aby stać się choćby odrobinę kompetentnym w swoim pierwszym języku programowania.

Więc powinieneś rozważyć następujące czynniki:

  • rynek pracy dla danego języka
  • długoterminowe perspektywy dla danego języka
  • jak łatwo jest się go nauczyć
  • jakie projekty możesz budować podczas nauki (i dzielić się nimi z przyjaciółmi, aby nie stracić motywacji)

Każdy rok przynosi nowe języki programowania, a wraz z nimi nowe prace naukowe. I nowe komiksy internetowe.

Poważnie. Sprawdźcie tę perełkę z zeszłego miesiąca:

Jeśli chodzi o wybór pierwszego języka programowania, opcji nie brakuje. Aby je nieco zawęzić, oto najczęstsze wyszukiwania w Google związane z nauką programowania, w ciągu ostatnich 12 lat:

Java miała swoje wzloty i upadki.

Python stopniowo stawał się najbardziej popularnym wyborem.

Ale pod nimi ukryty jest Mały Silnik, który Mógłby, powoli zyskujący na popularności w ciągu ostatnich kilku lat. A tym silnikiem jest JavaScript.

Zanim zacznę mówić o tych językach programowania, pozwólcie, że wyjaśnię:

  • Nie twierdzę, że jakikolwiek jeden język jest obiektywnie lepszy od innych
  • Zgadzam się, że programiści powinni w końcu nauczyć się więcej niż jednego języka
  • Twierdzę, że najpierw powinni dobrze nauczyć się jednego języka. I – jak zapewne domyślacie się po odwróconym do góry nogami tekście w moim nagłówku – tym językiem powinien być JavaScript.

Zacznijmy od zbadania, jak programowanie jest obecnie nauczane w szkole.

Komputer Science 101

Uniwersytety tradycyjnie nauczają programowania pod parasolem informatyki, która sama w sobie jest często postrzegana jako rozszerzenie matematyki, lub powiązanie z dyplomem inżyniera elektryka.

Oczywiście, jak być może już słyszeliście:

„Edukacja w zakresie informatyki nie może uczynić nikogo ekspertem programistą tak samo jak studiowanie pędzli i pigmentu może uczynić kogoś ekspertem malarzem.” – Eric S. Raymond

Od 2016 roku wiele uczelni nadal traktuje programowanie jak informatykę, a informatykę jak matematykę.

W rezultacie wiele wprowadzających kursów programowania skupia się na językach o niskim poziomie abstrakcji, takich jak C, lub językach skoncentrowanych na matematyce, takich jak MATLAB.

I przewodniczący wydziałów generalnie trzymają się tego kursu, wskazując na coroczne rankingi języków programowania, takie jak TIOBE Index, lub ten z IEEE:

Większość z tych rankingów wygląda praktycznie identycznie jak 10 lat temu.

Ale zmiany się zdarzają. Nawet w środowisku akademickim.

W 2014 roku Python wyprzedził Javę jako najpopularniejszy język wykładowy w najlepszych amerykańskich programach informatycznych.

I jeszcze jedna zmiana musi… w końcu… nastąpić.

Bo jeśli spojrzeć na języki faktycznie używane przez pracowników, to obraz jest zupełnie inny:

JavaScript jest zdecydowanie najpopularniejszym językiem używanym przez 49 397 programistów, którzy odpowiedzieli na ankietę Stack Overflow z 2016 roku.

Ponad połowa wszystkich programistów używa JavaScript. Jest on niezbędny do tworzenia front-endowych stron internetowych i coraz bardziej istotny dla rozwoju back-end. I szybko rozszerza się na takie obszary jak tworzenie gier i Internet Rzeczy.

W ogłoszeniach o pracę wspomina się o JavaScripcie częściej niż o jakimkolwiek innym języku programowania poza Javą:

Dane z największego na świecie agregatora ogłoszeń o pracę, Indeed.com

To nie przypadek, że zbudowaliśmy program nauczania naszej społeczności open source wokół JavaScript. W ciągu ostatnich dwóch lat, ponad 5000 osób skorzystało z Free Code Camp, aby zdobyć swoją pierwszą pracę programisty.

Nie jestem zwolennikiem JavaScript, ponieważ go uczę. Uczę JavaScript, ponieważ jest to najpewniejsza droga do pierwszej pracy programisty.

Ale czy JavaScript jest dla Ciebie odpowiedni? Czy jest godny bycia Twoim pierwszym językiem programowania? Zbadajmy te czynniki, o których wspomniałem wcześniej.

Faktor #1: Rynek pracy

Jeśli uczysz się programować wyłącznie z intelektualnej ciekawości, nie krępuj się pominąć tego czynnika. Ale jeśli – podobnie jak większość ludzi uczących się programowania – chcesz wykorzystać tę umiejętność do zdobycia pracy, jest to ważny czynnik.

Jak wspomniałem wcześniej, Java jest wymieniana w większej ilości ofert pracy niż jakikolwiek inny język programowania. JavaScript jest na drugim miejscu.

Ale chodzi o JavaScript: mimo, że istnieje od 20 lat, dopiero niedawno stał się poważnym narzędziem, wokół którego firmy takie jak Netflix, Walmart i PayPal budowały całe aplikacje.

W rezultacie, wiele firm zatrudnia programistów JavaScript, ale na rynku pracy nie ma ich aż tak wielu.

Dane z Indeed.com

Na każde wolne stanowisko w Javie przypada 2.7 programistów Java. Konkurencja o pracę w PHP i iOS jest podobnie zacięta.

Ale na każde wolne stanowisko w JavaScript przypada tylko 0,6 programisty JavaScript. Jest to rynek sprzedawcy dla programistów z umiejętnościami JavaScript.

Faktor #2: Długoterminowe perspektywy

Przeciętny projekt JavaScript otrzymuje dwa razy więcej pull requestów niż przeciętny projekt Java, Python czy Ruby. A na dodatek, JavaScript rozwija się szybciej niż jakikolwiek inny popularny język.

Źródło: GitHub’s 2016 State of the Octoverse

Ekosystem JavaScriptu korzysta również z dużych inwestycji pieniędzy i talentów inżynierskich od firm takich jak Google, Microsoft, Facebook i Netflix.

Na przykład, TypeScript (statycznie typowany superset JavaScriptu) ma ponad 100 współtwórców open source, z których wielu jest pracownikami Microsoftu i Google, którym płaci się za pracę nad nim.

Tego typu współpraca między firmami jest trudniejsza do znalezienia w przypadku Javy. Oracle – który efektywnie posiada Javę dzięki przejęciu Sun Microsystems – często pozywa firmy, które próbują ją rozwijać.

Faktor #3: Trudność w nauce

To jest parodia komiksu XKCD.

Większość programistów zgodziłaby się, że języki skryptowe wysokiego poziomu są stosunkowo łatwe do nauczenia. JavaScript zalicza się do tej kategorii, wraz z Pythonem i Ruby.

Mimo, że uniwersytety wciąż uczą języków takich jak Java i C++ jako pierwszych, są one znacznie trudniejsze do nauczenia.

Faktor #4: Projekty, które możesz z nim zbudować

To jest miejsce, gdzie JavaScript naprawdę błyszczy. JavaScript działa na każdym urządzeniu, które ma przeglądarkę, dokładnie w przeglądarce. Z JavaScriptem można zbudować w zasadzie wszystko i udostępnić to gdziekolwiek.

Z powodu wszechobecności JavaScript, założyciel Stack Overflow Jeff Atwood ukuł swoje słynne prawo:

„Każda aplikacja, która może być napisana w JavaScript, w końcu zostanie napisana w JavaScript.”

I z każdym mijającym miesiącem prawo Atwooda trzyma się mocno.

Java też kiedyś obiecywała, że będzie działać wszędzie. Być może pamiętacie aplety Java. Oracle oficjalnie zabił je na początku tego roku.

Python cierpi z powodu tych samych problemów:

„Jak mogę dać tę grę, którą zrobiłem mojemu przyjacielowi? Jeszcze lepiej, czy istnieje sposób, w jaki mogę umieścić to na moim telefonie, abym mógł pokazać to dzieciom w szkole bez konieczności instalowania go? Um.” – James Hague w Retiring Python as a Teaching Language

Dla kontrastu, oto kilka aplikacji, które członkowie naszej społeczności open source zbudowali w swoich przeglądarkach na CodePen. Możesz kliknąć i użyć ich bezpośrednio w swojej przeglądarce:

Gra Simon w stylu lat 70-tych
Conway’s Game of Life
Gra w Gwiezdne Wojnytematyczne przeszukiwanie Wikipedii
Gra roguelike dungeon crawler

Naucz się dobrze jednego języka. Potem naucz się drugiego.

Jeśli będziesz skakać z języka na język, daleko nie zajdziesz.

Aby wyjść poza podstawy, musisz dobrze nauczyć się pierwszego języka. Wtedy twój drugi język będzie o wiele, wiele łatwiejszy.

Możesz się stamtąd wydostać i stać się bardziej wszechstronnym programistą, ucząc się wielu języków:

  • C jest świetnym sposobem, aby dowiedzieć się, jak komputery faktycznie działają pod względem zarządzania pamięcią i jest przydatny w obliczeniach o wysokiej wydajności
  • C++ jest świetny do tworzenia gier.
  • Python jest świetny dla nauki i statystyki.
  • Java jest ważna, jeśli chcesz pracować w dużych firmach technologicznych.

Ale najpierw naucz się JavaScript.

OK, teraz spróbuję dokonać niemożliwego – spróbuję przewidzieć zastrzeżenia z sekcji komentarzy.

Orzeczenie #1: Ale czy JavaScript nie jest powolny?

JavaScript jest – dla większości praktycznych celów – tak szybki jak języki o wysokiej wydajności.

JavaScript (Node.js) jest o rzędy wielkości szybszy niż Python, Ruby i PHP.

Jest również prawie tak szybki jak języki o wysokiej wydajności takie jak C++, Java i Go.

Oto wyniki najnowszego, najbardziej wszechstronnego, międzyjęzykowego benchmarku:

Zastrzeżenie #2: Ale JavaScript nie jest statycznie typowany

Podobnie jak Python i Ruby, JavaScript jest dynamicznie typowany, co jest wygodne. Ale możesz wpaść w kłopoty. Tutaj zamierzam, aby exampleArray był tablicą. Ustawiam jej wartości, a następnie sprawdzam jej długość – czyli liczbę elementów, które zawiera.

exampleArray = -> exampleArray.length-> 2

Ale potem przypadkowo przypisuję ją do łańcucha znaków.

exampleArray = "text”-> "text”exampleArray.length-> 4

Tego typu błędy zdarzają się cały czas w dynamicznie wpisywanych językach. Większość programistów po prostu umieszcza kontrole, aby im zapobiec, i odpowiednio pisze testy.

Jeśli absolutnie musisz mieć statyczne typowanie w swoim pierwszym języku programowania, to nadal polecam najpierw nauczyć się JavaScript. Następnie możesz szybko podnieść TypeScript.

„Typescript ma krzywą uczenia się, ale jeśli znasz już JavaScript, będzie to gładka krzywa.” – Alex Ewerlöf o TypeScript

Orzeczenie #3: Ale ja naprawdę chcę zrobić aplikację mobilną

Wciąż polecam najpierw naukę JavaScript.

  1. JavaScript posiada kilka narzędzi do tworzenia natywnych aplikacji mobilnych, takich jak Angular Cordova i React Native.
  2. Aby twoja aplikacja mobilna mogła robić cokolwiek interesującego, prawdopodobnie będzie potrzebowała odpowiedniego back-endu, który będziesz chciał zbudować za pomocą odpowiedniego frameworka, takiego jak Node.js + Express.js.

Warto również zaznaczyć, że najlepsze dni rozwoju aplikacji mobilnych mogą być już za nią.

Na początek, tak bardzo jak ludzie używają aplikacji mobilnych, prawie połowa wszystkich miejsc pracy dla deweloperów to rozwój stron internetowych. Porównaj to z zaledwie 8% miejsc pracy, które obejmują rozwój aplikacji mobilnych.

Zawody 49 525 deweloperów, na podstawie odpowiedzi na ankietę Stack Overflow z 2016 roku.

Wielka wizja „jest na to aplikacja” nie spełniła się. Zamiast tego, większość posiadaczy smartfonów przestała pobierać nowe aplikacje.

Pewnie – nadal korzystają z aplikacji. Głównie Facebook, Google Maps, i garstka innych. W związku z tym, zapotrzebowanie na programistów aplikacji mobilnych jest skoncentrowane w kilku dużych firmach.

Perspektywy zatrudnienia w branży są trudne do przewidzenia. Wiele aspektów rozwoju, utrzymania i dystrybucji aplikacji mobilnych jest łatwiejszych dzięki JavaScriptowi. Dlatego firmy takie jak Facebook i Google inwestują w lepsze narzędzia do budowania tychże przy użyciu JavaScript.

Od 2016 roku, prawie cały rozwój to rozwój stron internetowych. Wszystko dotyka tej wielkiej platformy, jaką jest „sieć”. A następna fala urządzeń, z którymi będziesz rozmawiał w swoim domu, i samochodów, które odbierają twoje dzieci ze szkoły – wszystkie one będą połączone razem przy użyciu sieci, również.

A to oznacza JavaScript.

Orzeczenie #4: Czy JavaScript nie jest językiem-zabawką, który został napisany w 10 dni?

JavaScript ma dziwną historię.

Niewątpliwie usłyszycie jak ludzie żartują na jego temat.

Ludzie uwielbiają nienawidzić C++, również. I tak jak JavaScript, C++ odniósł sukces pomimo tej nienawiści, a teraz jest również dość powszechny.

Więc jeśli ktokolwiek kiedykolwiek da ci w kość za naukę JavaScript zamiast elitarnego języka tygodnia, po prostu pamiętaj o słynnych słowach faceta, który stworzył C++:

„Są tylko dwa rodzaje języków programowania: te, o których ludzie zawsze narzekają i te, których nikt nie używa.” – Bjarne Stroustrup

Piszę tylko o programowaniu i technologii. Jeśli śledzisz mnie na Twitterze, nie będę marnował Twojego czasu. ?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *