Към съдържанието
wannacode

Езикът, който учиш

Проблем

Защо точно JavaScript

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

JavaScript е езикът на уеб браузъра. Всеки браузър го изпълнява, без нищо да се инсталира:

  • сайтовете: бутоните, менютата, формулярите и всичко, което се променя на страницата, без да я презареждаш;
  • сървърите: с Node.js същият език върви и извън браузъра, на сървъра и на твоя компютър;
  • приложения за компютър и телефон: например редакторът Visual Studio Code е написан на TypeScript (JavaScript с типове) и върви като програма на JavaScript;
  • инструментите на уеб програмистите: почти всичко, с което се строи един сайт, е писано на JavaScript.

JavaScript е от 1995 г. Името прилича на Java, но двата езика нямат общо помежду си, освен че синтаксисът им е сходен.

Идеята

От текст до програма

Програмата, която пишеш, е обикновен текст във файл. Ето една цяла програма:

shop.js
console.log("Поръчка №1024 е приета.");
Изход
Поръчка №1024 е приета.

Да, това е цялата програма: един ред. Думите в него ще разберем в урока „Първата програма“. Важното е друго: процесорът на компютъра не разбира този текст. Нещо трябва да го преведе.

  1. Ти пишеш изходния код (source code) във файл shop.js.
  2. Пускаш го с командата node shop.js. Node.js проверява записа на целия файл и го превежда в байткод. Това става в паметта, при всяко пускане: отделна стъпка за компилиране, която да пускаш ти, няма.
  3. Node.js изпълнява байткода, а частите, които се изпълняват често, превежда и в машинен код, за да вървят по-бързо.

Node.js има за Windows, macOS и Linux, а браузърите изпълняват същия език сами. Затова на друг компютър пренасяш самия shop.js и той върви без промяна. Това се казва платформена независимост.

console.log("Поръчка №1024 е приета.");
Стъпка по стъпка, с думи
  1. Пишеш изходния код: обикновен текст във файла shop.js.
  2. Отделен компилатор, който да пускаш, няма: Node.js ще чете самия файл.
  3. Затова на друг компютър отива самият shop.js, а не компилиран файл.
  4. Същият shop.js отива без промяна на Windows, macOS и Linux.
  5. Node.js на всяка система проверява файла, превежда го и го изпълнява. Изходът е еднакъв.
По-точно, за любопитните
  • Проверката е за целия файл. Ако на втория ред липсва скоба, програмата не печата нищо, дори първия ред: Node.js спира със SyntaxError, преди да е изпълнил каквото и да е. Друго е, ако сбъркаш име (totl вместо total). Тази грешка (ReferenceError) излиза чак когато програмата стигне до своя ред, а редовете над него вече са се изпълнили.
  • Node.js е построен върху V8, двигателя на JavaScript в браузъра Chrome. V8 превежда части от програмата в машинен код, докато тя работи, и оптимизира по-силно тези, които се изпълняват най-често. Това се казва JIT компилация (just-in-time, „точно навреме“).
  • Паметта. Всяка програма заема памет за данните си. В езици като C програмистът сам освобождава паметта, която вече не му трябва, и ако забрави или сбърка, програмата започва да заема все повече памет или да се срива. JavaScript прави това вместо теб: garbage collector („събирачът на боклук“) намира данните, до които програмата вече няма как да стигне, и освобождава паметта им.

Идеята

Какво ще научиш

Курсът върви на модули. Всеки модул ползва само неща от предишните:

  1. Основи на езика: променливи, вход и изход, сметки, условия, цикли, масиви, текст.
  2. Функции: код, който пишеш веднъж и викаш много пъти.
  3. Класове и обекти: твоите собствени типове, например Order или Student.
  4. Наследяване и полиморфизъм: общото на няколко типа на едно място.
  5. Грешки и изключения: какво прави програмата, когато нещо се обърка.
  6. Текст и файлове: работа с низове, шаблони за търсене (regex) и файлове.
  7. Колекции: масиви, стек, опашка, Map, Set.
  8. Модерен JavaScript: стрелкови функции, обработка на данни на стъпки и новите възможности на езика.
  9. Програми в истинския свят: тестове, едновременна работа, мрежа, бази данни.

Встрани от основния път има игри и проекти: цели програми, които правиш стъпка по стъпка.

В курса JavaScript върви с Node.js, в терминала, а не в страница на браузъра. Така се учи самият език, без HTML и CSS около него. Работата със страница в браузъра идва лесно след това, защото езикът е същият.

Идеята

Как се учи тук

Всеки урок е поредица от карти, по една идея на карта. Обикновено започва с проблем от практиката, после идва какво става всъщност, често с анимация до кода. След това има малка задачка: предвиди изхода, попълни липсващото, намери грешката. Накрая има упражнение, което решаваш в редактора си, и кратък тест.

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

Картата на целия курс е на началната страница на курса.

Упражненията не ги пропускай. Да четеш код и да пишеш код са различни умения, а второто идва само с писане.

Идеята

Грешките са част от работата

Първите ти програми често няма да тръгнат. Ще забравиш кавичка или скоба, и Node.js ще откаже да пусне файла.

Това не е оценка за теб. Съобщението за грешка е помощ: то казва на кой ред е проблемът и какъв е. Опитните програмисти също виждат такива съобщения всеки ден. Разликата е, че са се научили да ги четат спокойно. Ще започнем да ги четем още в първия урок с код.

Ако нещо не тръгва дълго време, остави го и се върни след малко. Често грешката се вижда веднага, щом погледнеш наново.

Накратко

Накратко

  • JavaScript върви във всеки браузър, а с Node.js и на сървъра и на твоя компютър.
  • Изходният код (shop.js) се пуска с node shop.js: Node.js проверява файла, превежда го и го изпълнява. Същият файл върви на всяка система.
  • Паметта се освобождава автоматично от garbage collector.
  • Курсът върви на модули, а урокът на карти. Упражненията са в твоя редактор.
  • Съобщението за грешка е помощ, не оценка.

Следва подготовката на компютъра: какво да инсталираш, за да пуснеш първата си програма.

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·