Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 1 · Урок 2

Езици за програмиране

Какво е език за програмиране, разлика между машинен код, компилиран и интерпретиран код. Защо C# и как се изпълнява.

Какво е език за програмиране

Език за програмиране е изкуствен език, на който човек описва задачите си към компютъра. Той е по-строг от естествените езици (български, английски), защото всяка инструкция трябва да има точно един смисъл — компютърът не може да „предполага" какво си имал предвид.

Защо не пишем направо на машинен код

Машинният код е поредица от 0 и 1 — практически нечетим за човек. Езиците за програмиране дават удобен начин да изразим същите неща с думи и символи. После специална програма ги превежда обратно в код, който процесорът разбира.

Поколения езици

ПоколениеКакво представляваПример
1-во — машинен кодСамите 0 и 110110000 01100001
2-ро — асемблерКратки мнемоники за всяка инструкция на CPUMOV AL, 61h
3-то — високо нивоБлизък до английски и математикаC, C++, C#, Java, Python
4-то — много високо ниво / декларативниКазваш КАКВО искаш, не КАКSQL, HTML

В курса ще работим основно с C# (трето поколение) за модул 1 и със SQL (четвърто поколение) за модул 2.

Компилирани срещу интерпретирани езици

Има два основни начина изходният код да стигне до изпълнение от процесора.

КомпилиранеИзходен кодКомпилаторИзпълним файл↓ изпълнява се директно от CPUИнтерпретиранеИзходен кодИнтерпретаторИзпълнениечете и изпълнява ред по ред
Фиг. 1 — При компилирането получаваме готов файл; при интерпретирането кодът се превежда наживо при всяко стартиране.
Компилирани (C, C++, Go)Интерпретирани (Python, JavaScript)
Кога се превеждаВеднъж — преди стартиранеНа всяко стартиране, ред по ред
Скорост на изпълнениеВисокаПо-ниска
Грешки в синтаксисаОткриват се при компилацияОткриват се при изпълнение
ПреносимостИзпълнимият файл е за конкретна ОС/процесорКодът работи навсякъде, където има интерпретатор

Къде е C# — хибриден подход

C# не е нито чисто компилиран, нито чисто интерпретиран. Microsoft го е направил така, че да съчетава предимствата на двете:

.cs файлC# кодC# компилаторRoslynIL код (.dll/.exe)междиненCLR / JIT→ машинен.NET платформата
Фиг. 2 — C# се компилира в IL (междинен език), който .NET CLR превежда в машинен код при нужда (JIT — Just-In-Time)
  1. Пишеш кода в .cs файл.
  2. При компилация той се превръща в IL код (Intermediate Language) — не машинен код, а универсален междинен език.
  3. Когато стартираш програмата, CLR (Common Language Runtime) и JIT компилаторът превеждат IL към машинен код за конкретния процесор — точно в момента, в който трябва да се изпълни.
  4. Така една и съща .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 в клас. Изразите завършват с ;, блоковете — с { }.