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

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

Проблем

Защо точно C#

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

C# (чете се „си шарп“) е езикът на платформата .NET на Microsoft:

  • игри с Unity: скриптовете в Unity се пишат на C#, от малки игри за телефон до големи заглавия;
  • уеб сайтове и услуги с ASP.NET Core;
  • приложения за Windows: от счетоводни програми до инструменти в офиса;
  • облачни услуги, особено в Azure, облака на Microsoft.

C# е от 2000 г. и се развива бързо: почти всяка година излиза нова версия с нови възможности.

Идеята

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

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

Program.cs
class Program
{
static void Main()
{
Console.WriteLine("Поръчка №1024 е приета.");
}
}
Изход
Поръчка №1024 е приета.

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

  1. Ти пишеш изходния код (source code) във файл Program.cs.
  2. Компилаторът на C# проверява текста за грешки и го превежда в IL (Intermediate Language, „междинен език“): файл с разширение .dll. IL не е за конкретен процесор.
  3. .NET (по-точно частта му, която изпълнява програмите, CLR) чете IL и го изпълнява на твоя компютър.

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

class Program
{
static void Main()
{
Console.WriteLine("Поръчка №1024 е приета.");
}
}
Стъпка по стъпка, с думи
  1. Пишеш изходния код: обикновен текст във файла Program.cs.
  2. Компилаторът на C# чете текста и проверява за грешки.
  3. Излиза IL, файл с разширение .dll. Той не е за конкретен процесор.
  4. Същият .dll отива без промяна на Windows, macOS и Linux.
  5. CLR на всяка система изпълнява IL. Изходът е еднакъв.
По-точно, за любопитните
  • CLR не превежда цялата програма предварително. Тя превежда части от нея в машинен код, докато програмата работи, и оптимизира по-силно тези, които се изпълняват най-често. Това се казва JIT компилация (just-in-time, „точно навреме“).
  • Паметта. Всяка програма заема памет за данните си. В езици като C програмистът сам освобождава паметта, която вече не му трябва, и ако забрави или сбърка, програмата започва да заема все повече памет или да се срива. C# правят това вместо теб: garbage collector („събирачът на боклук“) намира данните, до които програмата вече няма как да стигне, и освобождава паметта им.
  • Старият .NET Framework работеше само под Windows. Днешният .NET (от .NET Core нататък) е отделна платформа, която върви навсякъде. Ако в интернет попаднеш на съвет за .NET Framework, той може да не важи за теб.

Идеята

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

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

  1. Основи на езика: променливи, вход и изход, сметки, условия, цикли, масиви, текст.
  2. Методи: код, който пишеш веднъж и викаш много пъти.
  3. Класове и обекти: твоите собствени типове, например Order или Student.
  4. Наследяване и полиморфизъм: общото на няколко типа на едно място.
  5. Грешки и изключения: какво прави програмата, когато нещо се обърка.
  6. Уеб: как работи интернет, сайтове с ASP.NET MVC, услуги с WebAPI и настолни приложения с WPF.

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

Две неща, с които C# е известен, остават извън този курс: LINQ (заявки към данни направо в кода, например „поръчките над 100 €, подредени по дата“) и нишките (няколко неща, които програмата върши едновременно). След курса ще имаш всичко нужно, за да ги научиш сам.

Идеята

Как се учи тук

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

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

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

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

Идеята

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

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

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

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

Накратко

Накратко

  • C# се ползва за игри с Unity, уеб с ASP.NET Core, приложения за Windows и облака.
  • Изходният код (Program.cs) се компилира до IL (.dll), а .NET го изпълнява на всяка система.
  • Паметта се освобождава автоматично от garbage collector.
  • Курсът върви на модули, а урокът на карти. Упражненията са в твоя редактор.
  • Съобщението за грешка е помощ, не оценка.

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

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