Какво е език за програмиране
Език за програмиране е изкуствен език, на който човек описва задачите си към компютъра. Той е по-строг от естествените езици (български, английски), защото всяка инструкция трябва да има точно един смисъл — компютърът не може да „предполага" какво си имал предвид.
Защо не пишем направо на машинен код
Машинният код е поредица от 0 и 1 — практически нечетим за човек. Езиците за програмиране дават удобен начин да изразим същите неща с думи и символи. После специална програма ги превежда обратно в код, който процесорът разбира.
Поколения езици
| Поколение | Какво представлява | Пример |
|---|---|---|
| 1-во — машинен код | Самите 0 и 1 | 10110000 01100001 |
| 2-ро — асемблер | Кратки мнемоники за всяка инструкция на CPU | MOV AL, 61h |
| 3-то — високо ниво | Близък до английски и математика | C, C++, C#, Java, Python |
| 4-то — много високо ниво / декларативни | Казваш КАКВО искаш, не КАК | SQL, HTML |
В курса ще работим основно с C# (трето поколение) за модул 1 и със SQL (четвърто поколение) за модул 2.
Компилирани срещу интерпретирани езици
Има два основни начина изходният код да стигне до изпълнение от процесора.
| Компилирани (C, C++, Go) | Интерпретирани (Python, JavaScript) | |
|---|---|---|
| Кога се превежда | Веднъж — преди стартиране | На всяко стартиране, ред по ред |
| Скорост на изпълнение | Висока | По-ниска |
| Грешки в синтаксиса | Откриват се при компилация | Откриват се при изпълнение |
| Преносимост | Изпълнимият файл е за конкретна ОС/процесор | Кодът работи навсякъде, където има интерпретатор |
Къде е C# — хибриден подход
C# не е нито чисто компилиран, нито чисто интерпретиран. Microsoft го е направил така, че да съчетава предимствата на двете:
- Пишеш кода в
.csфайл. - При компилация той се превръща в IL код (Intermediate Language) — не машинен код, а универсален междинен език.
- Когато стартираш програмата, CLR (Common Language Runtime) и JIT компилаторът превеждат IL към машинен код за конкретния процесор — точно в момента, в който трябва да се изпълни.
- Така една и съща
.exe/.dllработи и на Windows, и на Linux, и на macOS — стига там да има .NET runtime.
Защо това е удобно
Получаваме почти скоростта на C++ (благодарение на JIT), но заедно с автоматично почистване на паметта (Garbage Collector), проверки за грешки и преносимост — неща, които правят писането на програми много по-приятно.
Първата програма на C#
Класическата „Hello, World!" програма на C# изглежда така:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Здравей, свят!");
}
}Какво се случва ред по ред:
using System;— казваме на компилатора, че ще използваме готови инструменти от пространствотоSystem(там еConsole).class Program— всеки C# код живее в клас. За сега приемаме това като задължителна обвивка.static void Main()— това е точката на влизане: оттук започва изпълнението, когато стартираш програмата.Console.WriteLine(...)— отпечатва ред на конзолата.- Фигурните скоби
{ }отделят блок код. Запетайката;е задължителна в края на всеки израз.
Среди за разработка (IDE)
IDE (Integrated Development Environment) е програма, в която пишеш, компилираш, изпълняваш и отстраняваш грешки в кода — всичко на едно място. За C# най-използваните са:
| Среда | За кого | Платформа |
|---|---|---|
| Visual Studio (Community) | Препоръчително за курса | Windows, macOS |
| Visual Studio Code + C# Dev Kit | По-леко, кросплатформено | Windows, macOS, Linux |
| JetBrains Rider | Професионално, платено | Всички ОС |
| dotnetfiddle.net | Бързи опити онлайн | В браузъра |
За тази система
В табa „Упражнения" имаш редактор с подсветка на синтаксиса, в който можеш да опиташ примерите. За да ги изпълниш и видиш резултата, ги копирай в Visual Studio или в dotnetfiddle.net.
Какво трябва да запомниш
- Език за програмиране = строг изкуствен език за описване на задачи към компютъра.
- Компилиран: превежда се веднъж в изпълним файл (по-бърз).
Интерпретиран: чете се и изпълнява ред по ред (по-гъвкав). - C# е хибриден: компилира се до IL, после се изпълнява от .NET CLR с JIT компилация.
- Всяка C# програма започва от метод
Mainв клас. Изразите завършват с;, блоковете — с{ }.