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

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

Проблем

Защо точно Java

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

Java е един от най-разпространените езици за програми, които работят дълго и без прекъсване:

  • сървърите на банки, онлайн магазини и резервационни системи: частта, която не виждаш, но която пази сметките и поръчките;
  • Android: дълго време това беше основният език за приложения за Android. Днес там често се пише на Kotlin, който върви върху същата основа и може да ползва Java код;
  • големи системи в компании и институции, които се развиват с години от много хора;
  • Minecraft: оригиналната версия на играта (Java Edition) е написана на Java.

Java е от 1995 г. Затова има огромно количество готови библиотеки, документация и отговори на въпроси, на които ще попадаш.

Идеята

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

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

Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Поръчка №1024 е приета.");
}
}
Изход
Поръчка №1024 е приета.

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

  1. Ти пишеш изходния код (source code) във файл Main.java.
  2. Компилаторът javac проверява текста за грешки и го превежда в байткод: файл Main.class. Байткодът не е за конкретен процесор.
  3. JVM (Java Virtual Machine) чете байткода и го изпълнява на твоя компютър.

JVM има за Windows, macOS и Linux. Затова един и същ Main.class върви на всички тях без промяна. Това се казва платформена независимост.

public class Main {
public static void main(String[] args) {
System.out.println("Поръчка №1024 е приета.");
}
}
Стъпка по стъпка, с думи
  1. Пишеш изходния код: обикновен текст във файла Main.java.
  2. Компилаторът javac чете текста и проверява за грешки.
  3. Излиза байткод, файлът Main.class. Той не е за конкретен процесор.
  4. Същият Main.class отива без промяна на Windows, macOS и Linux.
  5. JVM на всяка система изпълнява байткода. Изходът е еднакъв.
По-точно, за любопитните
  • JVM не превежда цялата програма предварително. Тя превежда части от нея в машинен код, докато програмата работи, и оптимизира по-силно тези, които се изпълняват най-често. Това се казва JIT компилация (just-in-time, „точно навреме“).
  • Паметта. Всяка програма заема памет за данните си. В езици като C програмистът сам освобождава паметта, която вече не му трябва, и ако забрави или сбърка, програмата започва да заема все повече памет или да се срива. Java правят това вместо теб: garbage collector („събирачът на боклук“) намира данните, до които програмата вече няма как да стигне, и освобождава паметта им.

Идеята

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

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

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

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

Двете особености на Java, които често се изтъкват, също са в курса. Нишките (няколко неща, които програмата върши едновременно) са в „Програми в истинския свят“. Reflection (програма, която разглежда собствените си класове, докато работи) идва в последните модули.

Идеята

Как се учи тук

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

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

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

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

Идеята

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

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

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

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

Накратко

Накратко

  • Java върви на сървъри, в Android, в големи системи и в Minecraft.
  • Изходният код (Main.java) се компилира от javac до байткод (Main.class), а JVM го изпълнява на всяка система.
  • Паметта се освобождава автоматично от garbage collector.
  • Курсът върви на модули, а урокът на карти. Упражненията са в твоя редактор.
  • Съобщението за грешка е помощ, не оценка.

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

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