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:
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:
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ą:
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.
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.
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
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:
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.
- JavaScript posiada kilka narzędzi do tworzenia natywnych aplikacji mobilnych, takich jak Angular Cordova i React Native.
- 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.
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. ?