Результат: ученик различает исходный код, программу, приложение, сборку и процесс и последовательно объясняет путь C#-кода от файла проекта до выполняемых машинных инструкций.

Содержание:

  1. Сформировать точный словарь основных понятий

    • инструкция, выражение, данные и вычисление;
    • исходный код как текстовое описание программы;
    • программа как формальная система команд;
    • приложение как поставляемый программный продукт;
    • процесс как запущенный экземпляр приложения с собственным состоянием.
  2. Разделить язык, платформу и инструменты

    • C# как язык со своими синтаксическими и семантическими правилами;
    • .NET как платформа выполнения и набор библиотек;
    • компилятор, среда выполнения, стандартная библиотека, SDK, IDE и отладчик;
    • API как доступный программный контракт, а не внутренняя реализация.
  3. Проследить путь от проекта до сборки

    • исходные файлы .cs и файл проекта .csproj;
    • восстановление зависимостей, компиляция и создание сборки;
    • промежуточный код IL и метаданные;
    • конфигурации Debug и Release и их назначение.
  4. Проследить путь от сборки до выполнения

    • поиск точки входа;
    • загрузка сборки и необходимых библиотек;
    • JIT-компиляция выполняемого кода;
    • переход к машинным инструкциям и началу процесса;
    • AOT и предварительная компиляция как обзорные альтернативы.
  5. Понять роль управляемого выполнения

    • среда выполнения как посредник между программой и операционной системой;
    • автоматическое управление памятью на обзорном уровне;
    • контроль типов и диагностируемые отказы;
    • различие исходного кода, промежуточного представления и машинного кода.
  6. Связать выполнение с воспроизводимостью

    • одинаковый алгоритм и одинаковые входные данные;
    • внутреннее изменяемое состояние программы;
    • внешние данные, текущее время и псевдослучайность как дополнительные входы;
    • причины, по которым два запуска могут дать разные результаты.