Езикът, който учиш
Проблем
Защо точно JavaScript
Езиците за програмиране са стотици. Всеки става за нещо, но не за всичко еднакво добре. Преди да отделиш месеци на един от тях, честно е да знаеш къде ще го ползваш.
JavaScript е езикът на уеб браузъра. Всеки браузър го изпълнява, без нищо да се инсталира:
- сайтовете: бутоните, менютата, формулярите и всичко, което се променя на страницата, без да я презареждаш;
- сървърите: с Node.js същият език върви и извън браузъра, на сървъра и на твоя компютър;
- приложения за компютър и телефон: например редакторът Visual Studio Code е написан на TypeScript (JavaScript с типове) и върви като програма на JavaScript;
- инструментите на уеб програмистите: почти всичко, с което се строи един сайт, е писано на JavaScript.
JavaScript е от 1995 г. Името прилича на Java, но двата езика нямат общо помежду си, освен че синтаксисът им е сходен.
Идеята
От текст до програма
Програмата, която пишеш, е обикновен текст във файл. Ето една цяла програма:
console.log("Поръчка №1024 е приета.");Поръчка №1024 е приета.Да, това е цялата програма: един ред. Думите в него ще разберем в урока „Първата програма“. Важното е друго: процесорът на компютъра не разбира този текст. Нещо трябва да го преведе.
- Ти пишеш изходния код (source code) във файл
shop.js. - Пускаш го с командата
node shop.js. Node.js проверява записа на целия файл и го превежда в байткод. Това става в паметта, при всяко пускане: отделна стъпка за компилиране, която да пускаш ти, няма. - Node.js изпълнява байткода, а частите, които се изпълняват често, превежда и в машинен код, за да вървят по-бързо.
Node.js има за Windows, macOS и Linux, а браузърите изпълняват същия език сами. Затова на друг компютър пренасяш самия shop.js и той върви без промяна. Това се казва платформена независимост.
console.log("Поръчка №1024 е приета.");Стъпка по стъпка, с думи
- Пишеш изходния код: обикновен текст във файла shop.js.
- Отделен компилатор, който да пускаш, няма: Node.js ще чете самия файл.
- Затова на друг компютър отива самият shop.js, а не компилиран файл.
- Същият shop.js отива без промяна на Windows, macOS и Linux.
- Node.js на всяка система проверява файла, превежда го и го изпълнява. Изходът е еднакъв.
По-точно, за любопитните
- Проверката е за целия файл. Ако на втория ред липсва скоба, програмата не печата нищо, дори първия ред: Node.js спира със
SyntaxError, преди да е изпълнил каквото и да е. Друго е, ако сбъркаш име (totlвместоtotal). Тази грешка (ReferenceError) излиза чак когато програмата стигне до своя ред, а редовете над него вече са се изпълнили. - Node.js е построен върху V8, двигателя на JavaScript в браузъра Chrome. V8 превежда части от програмата в машинен код, докато тя работи, и оптимизира по-силно тези, които се изпълняват най-често. Това се казва JIT компилация (just-in-time, „точно навреме“).
- Паметта. Всяка програма заема памет за данните си. В езици като C програмистът сам освобождава паметта, която вече не му трябва, и ако забрави или сбърка, програмата започва да заема все повече памет или да се срива. JavaScript прави това вместо теб: garbage collector („събирачът на боклук“) намира данните, до които програмата вече няма как да стигне, и освобождава паметта им.
Идеята
Какво ще научиш
Курсът върви на модули. Всеки модул ползва само неща от предишните:
- Основи на езика: променливи, вход и изход, сметки, условия, цикли, масиви, текст.
- Функции: код, който пишеш веднъж и викаш много пъти.
- Класове и обекти: твоите собствени типове, например
OrderилиStudent. - Наследяване и полиморфизъм: общото на няколко типа на едно място.
- Грешки и изключения: какво прави програмата, когато нещо се обърка.
- Текст и файлове: работа с низове, шаблони за търсене (regex) и файлове.
- Колекции: масиви, стек, опашка,
Map,Set. - Модерен JavaScript: стрелкови функции, обработка на данни на стъпки и новите възможности на езика.
- Програми в истинския свят: тестове, едновременна работа, мрежа, бази данни.
Встрани от основния път има игри и проекти: цели програми, които правиш стъпка по стъпка.
В курса JavaScript върви с Node.js, в терминала, а не в страница на браузъра. Така се учи самият език, без HTML и CSS около него. Работата със страница в браузъра идва лесно след това, защото езикът е същият.
Идеята
Как се учи тук
Всеки урок е поредица от карти, по една идея на карта. Обикновено започва с проблем от практиката, после идва какво става всъщност, често с анимация до кода. След това има малка задачка: предвиди изхода, попълни липсващото, намери грешката. Накрая има упражнение, което решаваш в редактора си, и кратък тест.
Напредъкът ти се пази в браузъра: урокът продължава от картата, до която си стигнал.
Картата на целия курс е на началната страница на курса.
Упражненията не ги пропускай. Да четеш код и да пишеш код са различни умения, а второто идва само с писане.
Идеята
Грешките са част от работата
Първите ти програми често няма да тръгнат. Ще забравиш кавичка или скоба, и Node.js ще откаже да пусне файла.
Това не е оценка за теб. Съобщението за грешка е помощ: то казва на кой ред е проблемът и какъв е. Опитните програмисти също виждат такива съобщения всеки ден. Разликата е, че са се научили да ги четат спокойно. Ще започнем да ги четем още в първия урок с код.
Ако нещо не тръгва дълго време, остави го и се върни след малко. Често грешката се вижда веднага, щом погледнеш наново.
Накратко
Накратко
- JavaScript върви във всеки браузър, а с Node.js и на сървъра и на твоя компютър.
- Изходният код (
shop.js) се пуска сnode shop.js: Node.js проверява файла, превежда го и го изпълнява. Същият файл върви на всяка система. - Паметта се освобождава автоматично от garbage collector.
- Курсът върви на модули, а урокът на карти. Упражненията са в твоя редактор.
- Съобщението за грешка е помощ, не оценка.
Следва подготовката на компютъра: какво да инсталираш, за да пуснеш първата си програма.