Кой език за програмиране трябва да научите първо през 2020 г.? ʇdıɹɔsɐʌɐɾ: ɹǝʍsuɐ

Пътуването на повечето хора към научаването на програми започва с едно търсене в Google късно през нощта.

Обикновено това е нещо като „Научете ______“

Но как решават кой език да търсят?

„Те винаги се шегуват с Java в Силициевата долина. Предполагам, че трябва да го науча. "

Или:

- Хаскел. Толкова горещо в момента. Хаскел. "

Или:

"Този Gopher е толкова сладък сладък."

И тогава има останалите от нас. Вероятно ще търсим нещо като:

„Кой език за програмиране трябва да науча първо?“

Малко въпроси се задават толкова често, че да получат пълната инфографична обработка. Но това е един от тях:

Решаването на първия език за програмиране може да бъде забавен процес - нещо като един от онези „Кой герой на Куентин Тарантино сте?“ викторини за личността.

Но преди да избягате, за да научите Руби, защото като дете ви харесваше да играете с Play-Doh, нека ви напомня: тук залогът е доста висок.

Ще ви отнеме стотици часове практика, за да станете дори дистанционно компетентни с първия си език за програмиране.

Така че трябва да вземете предвид следните фактори:

  • пазара на труда за езика
  • дългосрочните перспективи за езика
  • колко лесно се учи езикът
  • какви проекти можете да изграждате, докато учите (и споделяйте с приятели, за да останете мотивирани)

Всяка година носи нови езици за програмиране, а заедно с тях и нови академични статии. И нови уеб комикси.

Сериозно. Вижте този скъпоценен камък от миналия месец:

Що се отнася до избора на първи език за програмиране, няма недостиг на опции. За да го стесним малко, ето най-често срещаните търсения с Google, свързани с обучение по програмиране, през последните 12 години:

Java е имала своите възходи и падения.

Python постепенно се издигна до най-популярния избор.

Но скрит под тях е Малкият двигател, който би могъл, бавно набиращ популярност през последните няколко години. И този двигател е JavaScript.

Преди да говоря за тези езици за програмиране, нека поясня:

  • Не твърдя, че който и да е език е обективно по-добър от всеки друг
  • Съгласен съм, че разработчиците в крайна сметка трябва да научат повече от един език
  • Твърдя, че първо трябва да научат добре един език. И - както може би се досещате от обърнатия текст в заглавието ми - този език трябва да е JavaScript.

Нека започнем нещата, като изследваме как в момента се преподава програмиране в училище.

Компютърни науки 101

Университетите традиционно преподават програмиране под шапката на компютърните науки, което често се разглежда като разширение на математиката или обвързване с електроинженерска степен.

Разбира се, както вече сте чували:

„Образованието по компютърни науки не може да направи никого експерт програмист, както изучаването на четки и пигменти може да направи някой експерт художник.“ - Ерик С. Реймънд

Към 2016 г. много университети все още третират програмирането като компютърна наука, а компютърните науки - математика.

В резултат на това много въвеждащи курсове по програмиране се фокусират върху езици с ниско ниво на абстракция като C или математически фокусирани езици като MATLAB.

А председателите на отдели обикновено остават в курса, сочейки годишните класации за езици за програмиране като индекса TIOBE или този от IEEE:

Повечето от тези класации изглеждат почти идентични с преди 10 години.

Но промяната все пак се случва. Дори в академичните среди.

През 2014 г. Python изпревари Java като най-популярния език за обучение в най-добрите американски програми за компютърни науки.

И още една промяна е длъжна ... в крайна сметка ... да се случи.

Защото ако погледнете езиците, които действително се използват от работната сила, това рисува съвсем различна картина:

Повече от половината от всички разработчици използват JavaScript. Това е жизненоважно за уеб разработката отпред и все по-важно за развитието отзад. И бързо се разширява в области като разработването на игри и Интернет на нещата.

Обявите за работа също споменават JavaScript повече от всеки език за програмиране, различен от Java:

Не случайно създадохме учебната програма на нашата общност с отворен код около JavaScript. През последните две години над 5000 души са използвали Free Code Camp, за да получат първата си работа за разработчици.

Не защитавам JavaScript, защото го преподавам. Преподавам JavaScript, защото това е най-сигурният път към първата работа за разработчици.

Но дали JavaScript е подходящ за вас? Заслужава ли ви да бъде първият ви език за програмиране? Нека изследваме тези фактори, които споменах по-рано.

Фактор №1: Пазарът на труда

Ако се научавате да програмирате чисто от интелектуално любопитство, не се колебайте да пропуснете този фактор. Но ако вие - като по-голямата част от хората, които се учат да програмират - искате да използвате това умение, за да си намерите работа, това е важно съображение.

Както споменах по-рано, Java се споменава в повече обяви за работа, отколкото всеки друг език за програмиране. JavaScript е близо секунда.

Но това е нещото за JavaScript: въпреки че съществува от 20 години, той наскоро се превърна в сериозен инструмент, който компании като Netflix, Walmart и PayPal ще изграждат цели приложения наоколо.

В резултат на това много компании наемат разработчици на JavaScript, но на пазара на труда просто няма толкова много.

Има 2.7 Java разработчици, които се състезават за всяка отворена Java позиция. Конкуренцията за PHP и iOS работни места също е ожесточена.

Но за всяка отворена позиция на JavaScript има само 0,6 разработчици на JavaScript. Това е пазар на продавачи за разработчици с умения за JavaScript.

Фактор 2: Дългосрочните перспективи

Средният проект за JavaScript получава два пъти повече заявки за изтегляне от средния проект за Java, Python или Ruby. И на всичкото отгоре JavaScript се разраства по-бързо от всеки друг популярен език.

Екосистемата на JavaScript също се възползва от значителна инвестиция на пари и инженерни таланти от компании като Google, Microsoft, Facebook и Netflix.

Например TypeScript (статично напечена супермножество на JavaScript) има над 100 сътрудници с отворен код, много от които са служители на Microsoft и Google, на които им се плаща за работа.

Този тип междуфирмено сътрудничество е по-трудно да се намери с Java. Oracle - който ефективно притежава Java чрез придобиването на Sun Microsystems - често съди компании, които се опитват да я разширят.

Фактор # 3: Трудност за учене

Повечето програмисти биха се съгласили, че скриптовите езици на високо ниво са относително лесни за изучаване. JavaScript попада в тази категория, заедно с Python и Ruby.

Въпреки че университетите все още преподават езици като Java и C ++ като първи езици, те са значително по-трудни за учене.

Фактор # 4: Проекти, които можете да изграждате с него

Това е мястото, където JavaScript наистина блести. JavaScript работи на всяко устройство, което има браузър, точно там в браузъра. Можете да изградите основно всичко с JavaScript и да го споделите навсякъде.

Поради повсеместното разпространение на JavaScript, съоснователят на Stack Overflow Джеф Атууд измисли своя известен сега закон:

„Всяко приложение, което може да бъде написано на JavaScript, в крайна сметка ще бъде написано на JavaScript.“

И с всеки изминал месец законът на Атууд е силен.

Веднъж Java обеща да работи навсякъде. Може би си спомняте Java аплети. Oracle ги уби официално по-рано тази година.

Python страда от почти същите проблеми:

„Как мога да дам тази игра, която направих на моя приятел? Още по-добре, има ли начин да сложа това на телефона си, за да мога да го покажа на децата в училище, без да се налага да го инсталират? Хм. - Джеймс Хейг в пенсионирането на Python като език за преподаване

За разлика от тях, ето някои приложения, които членовете на нашата общност с отворен код са вградили в своите браузъри на CodePen. Можете да щракнете и да използвате тези в браузъра си:

Научете добре един език. След това научете втори.

Ако продължавате да скачате от език на език, няма да стигнете далеч.

За да преминете отвъд основите, трябва да научите добре своя първи език. Тогава вторият ви език ще бъде много, много по-лесен.

Оттам можете да се разклоните и да станете по-добре развит разработчик, като научите много езици:

  • C е чудесен начин да научите как всъщност работят компютрите по отношение на управлението на паметта и е полезен при високопроизводителни изчисления
  • C ++ е чудесен за разработване на игри.
  • Python е страхотен за науката и статистиката.
  • Java е важна, ако искате да работите в големи технологични компании.

Но първо научете JavaScript.

Добре, сега ще опитам невъзможното - ще се опитам да предусетя възражения от раздела за коментари.

Възражение №1: Но дали JavaScript не е бавен?

JavaScript е - за повечето практически цели - толкова бърз, колкото езиците с висока производителност.

JavaScript (Node.js) е с порядъци по-бърз от Python, Ruby и PHP.

Освен това е почти толкова бърз, колкото високоефективните езици като C ++, Java и Go.

Ето резултатите от най-изчерпателния скорошен критерий за различни езици:

Възражение №2: Но JavaScript не е статично въведен

Подобно на Python и Ruby, JavaScript се набира динамично, което е удобно. Но можете да си навлечете неприятности. Тук възнамерявам exampleArrayда бъде масив. Задавам стойностите му, след което проверявам дължината му - което означава броят на елементите, които съдържа.

exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2

Но тогава случайно го присвоявам като низ.

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

Този тип грешки се случват през цялото време на динамично въведени езици. Повечето разработчици просто поставят проверки, за да ги предотвратят, и пишат тестове по съответния начин.

Ако абсолютно трябва да имате статично писане на вашия първи език за програмиране, тогава все пак препоръчвам първо да научите JavaScript. След това можете бързо да вземете TypeScript.

„Typescript има крива на обучение, но ако вече знаете JavaScript, той ще бъде плавен.“ - Алекс Еверльоф на TypeScript

Възражение №3: Но аз наистина искам да създам мобилно приложение

Все още препоръчвам първо да научите JavaScript.

  1. JavaScript разполага с няколко инструмента за създаване на собствени мобилни приложения, като Angular Cordova и React Native.
  2. За да може вашето мобилно приложение всъщност да направи нещо интересно, то вероятно ще се нуждае от подходящ заден край, който ще искате да изградите с подходяща рамка за уеб разработка, като Node.js + Express.js.

Също така, струва си да се отбележи, че най-добрите дни на разработката на мобилни приложения може да са зад него.

Като начало, колкото и хората да използват мобилни приложения, почти половината от всички работни места за разработчици са уеб разработка. Сравнете това с едва 8% от работните места, които включват разработване на мобилни приложения.

Великата визия на „има приложение за това“ не се е осъществила. Вместо това повечето собственици на смартфони са спрели да изтеглят нови приложения.

Разбира се - те все още използват приложения. Най-вече Facebook, Google Maps и шепа други. Като такава, голяма част от търсенето на разработчици на мобилни приложения е съсредоточено в няколко големи работодатели.

Трудно е да се прогнозират перспективите за тези работни места за мобилно развитие. Много аспекти на разработването, поддържането и разпространението на мобилни приложения са по-лесни с JavaScript. Така че компании като Facebook и Google инвестират сериозно в по-добри инструменти за създаването им с помощта на JavaScript.

Към 2016 г. почти цялото развитие е уеб разработка. Всичко докосва онази голяма платформа, която е „мрежата“. И следващата вълна от устройства, с които ще говорите около дома си, и коли, които вземат децата ви от училище - всички те също ще бъдат свързани заедно, използвайки мрежата.

И това означава JavaScript.

Възражение №4: Не е ли JavaScript играчен език, написан за 10 дни?

JavaScript има странна история.

Несъмнено ще чуете как хората избиват шеги за негова сметка.

Е, хората също обичат да мразят C ++. И подобно на JavaScript, C ++ успя въпреки тази омраза и сега е почти навсякъде.

Така че, ако някой някога ви затруднява да научите JavaScript, вместо елитен език на седмицата, просто запомнете известните думи на човека, създал C ++:

„Има само два вида езици за програмиране: тези хора винаги са кучки и тези, които никой не използва.“ - Bjarne Stroustrup

Пиша само за програмиране и технологии. Ако ме следвате в Twitter, няма да ви губя времето. ?