Езикът, който учиш
Проблем
Защо точно C#
Езиците за програмиране са стотици. Всеки става за нещо, но не за всичко еднакво добре. Преди да отделиш месеци на един от тях, честно е да знаеш къде ще го ползваш.
C# (чете се „си шарп“) е езикът на платформата .NET на Microsoft:
- игри с Unity: скриптовете в Unity се пишат на C#, от малки игри за телефон до големи заглавия;
- уеб сайтове и услуги с ASP.NET Core;
- приложения за Windows: от счетоводни програми до инструменти в офиса;
- облачни услуги, особено в Azure, облака на Microsoft.
C# е от 2000 г. и се развива бързо: почти всяка година излиза нова версия с нови възможности.
Идеята
От текст до програма
Програмата, която пишеш, е обикновен текст във файл. Ето една цяла програма:
class Program{ static void Main() { Console.WriteLine("Поръчка №1024 е приета."); }}Поръчка №1024 е приета.Засега не се спирай на думите в нея. Ще ги разберем в урока „Първата програма“. Важното е друго: процесорът на компютъра не разбира този текст. Нещо трябва да го преведе.
- Ти пишеш изходния код (source code) във файл
Program.cs. - Компилаторът на C# проверява текста за грешки и го превежда в IL (Intermediate Language, „междинен език“): файл с разширение
.dll. IL не е за конкретен процесор. - .NET (по-точно частта му, която изпълнява програмите, CLR) чете IL и го изпълнява на твоя компютър.
.NET има за Windows, macOS и Linux. Затова една и съща компилирана програма върви на всички тях. Това се казва платформена независимост.
class Program{ static void Main() { Console.WriteLine("Поръчка №1024 е приета."); }}Стъпка по стъпка, с думи
- Пишеш изходния код: обикновен текст във файла Program.cs.
- Компилаторът на C# чете текста и проверява за грешки.
- Излиза IL, файл с разширение .dll. Той не е за конкретен процесор.
- Същият .dll отива без промяна на Windows, macOS и Linux.
- CLR на всяка система изпълнява IL. Изходът е еднакъв.
По-точно, за любопитните
- CLR не превежда цялата програма предварително. Тя превежда части от нея в машинен код, докато програмата работи, и оптимизира по-силно тези, които се изпълняват най-често. Това се казва JIT компилация (just-in-time, „точно навреме“).
- Паметта. Всяка програма заема памет за данните си. В езици като C програмистът сам освобождава паметта, която вече не му трябва, и ако забрави или сбърка, програмата започва да заема все повече памет или да се срива. C# правят това вместо теб: garbage collector („събирачът на боклук“) намира данните, до които програмата вече няма как да стигне, и освобождава паметта им.
- Старият .NET Framework работеше само под Windows. Днешният .NET (от .NET Core нататък) е отделна платформа, която върви навсякъде. Ако в интернет попаднеш на съвет за .NET Framework, той може да не важи за теб.
Идеята
Какво ще научиш
Курсът върви на модули. Всеки модул ползва само неща от предишните:
- Основи на езика: променливи, вход и изход, сметки, условия, цикли, масиви, текст.
- Методи: код, който пишеш веднъж и викаш много пъти.
- Класове и обекти: твоите собствени типове, например
OrderилиStudent. - Наследяване и полиморфизъм: общото на няколко типа на едно място.
- Грешки и изключения: какво прави програмата, когато нещо се обърка.
- Уеб: как работи интернет, сайтове с ASP.NET MVC, услуги с WebAPI и настолни приложения с WPF.
Встрани от основния път има игри и проекти: цели програми, които правиш стъпка по стъпка.
Две неща, с които C# е известен, остават извън този курс: LINQ (заявки към данни направо в кода, например „поръчките над 100 €, подредени по дата“) и нишките (няколко неща, които програмата върши едновременно). След курса ще имаш всичко нужно, за да ги научиш сам.
Идеята
Как се учи тук
Всеки урок е поредица от карти, по една идея на карта. Обикновено започва с проблем от практиката, после идва какво става всъщност, често с анимация до кода. След това има малка задачка: предвиди изхода, попълни липсващото, намери грешката. Накрая има упражнение, което решаваш в редактора си, и кратък тест.
Напредъкът ти се пази в браузъра: урокът продължава от картата, до която си стигнал.
Картата на целия курс е на началната страница на курса.
Упражненията не ги пропускай. Да четеш код и да пишеш код са различни умения, а второто идва само с писане.
Идеята
Грешките са част от работата
Първите ти програми често няма да се компилират. Ще забравиш точка и запетая, кавичка или скоба, и компилаторът ще откаже.
Това не е оценка за теб. Съобщението за грешка е помощ: то казва на кой ред е проблемът и какъв е. Опитните програмисти също виждат такива съобщения всеки ден. Разликата е, че са се научили да ги четат спокойно. Ще започнем да ги четем още в първия урок с код.
Ако нещо не тръгва дълго време, остави го и се върни след малко. Често грешката се вижда веднага, щом погледнеш наново.
Накратко
Накратко
- C# се ползва за игри с Unity, уеб с ASP.NET Core, приложения за Windows и облака.
- Изходният код (
Program.cs) се компилира до IL (.dll), а .NET го изпълнява на всяка система. - Паметта се освобождава автоматично от garbage collector.
- Курсът върви на модули, а урокът на карти. Упражненията са в твоя редактор.
- Съобщението за грешка е помощ, не оценка.
Следва подготовката на компютъра: какво да инсталираш, за да пуснеш първата си програма.