
- •1 Концепция структурного программирования. Причины появления концепции. Модульность и функции. Ограничения на логические конструкции. Использование оператора goto.
- •Теорема о структурном программировании (Теорема Бёма — Якопини)
- •3 Платформа .Net Framework. Многоязыковое программирование. Кроссплатформенность по. Web-ориентированные приложения.
- •Преимущества технологии динамической компиляции
- •5 Построение приложения Windows в интегрированной среде программирования
- •6 Основные типы данных
- •7 Символы и строки. Символы, строки и массивы строк. Операции над строками
- •8 Структура программы на языке c#. Понятие пространства имен. Иерархия пространств имен. Видимость имен.
- •9 Операторы. Основные языка с#. Арифметические и логические операторы. Бинарные и унарные операторы. Составные операторы. Понятие перегрузки операторов.
- •10 Выражения. Приоритет и ассоциативность операторов. Порядок вычисления выражения.
- •11 Преобразования типов. Иерархия численных типов. Явное и неявное преобразование типов. Возможные ошибки.
- •12 Тема: Модификаторы доступа языка c#. Необходимые знания: Назначение и функции модификаторов private, public, protected, internal, protected internal, private protected.
- •13 Выбор вариантов.
- •If (Условие)
- •14 Циклы.
- •15 Классы памяти
- •16 Функции в языке с#
- •17 Массивы. Создание и инициализация. Ссылки на массив. Двухмерные и многомерные массивы. Инициализация массивов. Невыровненные массивы.
- •18 Понятие класса. Определение класса и экземпляр класса. Данные и методы. Ключевое слово partial.
- •19 Создание объекта класса.
- •20 Деструкторы и «сборка мусора». Оператор «new». Резервирование и освобождение памяти. Деструкторы и «сборка мусора».
- •21 Полиморфизм и перегрузка операторов. Перегрузка унарных и бинарных операторов. Семантика перегрузки операторов в с#.
- •Понятие полиморфизма и шаблоны. Назначение и преимущества использования шаблонов. Параметры универсального типа.
- •23 Свойства c# (Понятие инкапсуляции и свойства в c#. Использование ключевых слов «get» и «set». Преимущества использования свойств.)
- •24 Механизм исключений (Назначение исключений. Основные категории исключений. Ключевые слова try, catch и finally, throw.)
- •25 Наследование в c#. Понятие наследования в c#. Механизм наследования. Базовый и производный классы. Наследование и модификаторы доступа.
Преимущества технологии динамической компиляции
• Относительная лёгкость освоения и работы с языками, так как большинство .Net языков – языки высшего уровня.
• Быстрота выполнения конечных исполняемых файлов.
• Исполняющая среда может собирать статистику о работающей программе и производить оптимизации с учётом этой информации.
• Исполняющая среда может контролировать выполнение байт-кода после компиляции, поэтому приложение может быть запущено в «песочнице»
• Приложения, написанные на .net сами чистят себя в оперативной памяти, благодаря автоматическому «сборщику мусора».
• Приложение нужно собрать всего один раз, и оно будет работать на всех платформах процессоров и операционных системах семейства Windows. При этом приложение будет показывать весь свой потенциал скорости, который возможен на определённых процессорах.
Песочница (sandbox) — специально выделенная (изолированная) среда для безопасного исполнения компьютерных программ. Обычно представляет собой жёстко контролируемый набор ресурсов для исполнения гостевой программы — например, место на диске или в памяти. Доступ к сети, возможность сообщаться с главной операционной системой или считывать информацию с устройств ввода обычно либо частично эмулируют, либо сильно ограничивают.
Сборка мусора (garbage collection) — одна из форм автоматического управления памятью. Специальный процесс, называемый сборщиком мусора (garbage collector), периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложениями.
Common Intermediate Language (сокращённо CIL) — «высокоуровневый ассемблер» виртуальной машины .NET. Промежуточный язык, разработанный фирмой Microsoft для платформы .NET Framework.
Прежнее название MSIL (Microsoft Intermediate Language) JIT-компилятор CIL является частью CLR (common language runtime) — общей среды выполнения программ, написанных на языках .NET.
Все компиляторы, поддерживающие платформу .NET, должны транслировать код с языков высокого уровня платформы на язык CIL.
Общеязыковая исполняющая среда
Common Language Runtime (CLR — общеязыковая исполняющая среда) — исполняющая среда для байт-кода CIL, в который компилируются программы, написанные на .NET-совместимых языках программирования (C#, Managed C++, Visual Basic .NET, F# и прочие).
CLR компилирует код приложения на языке CIL во время его исполнения, а также предоставляет CIL-программам (а следовательно, и программам, написанным на языках высокого уровня, поддерживающих .NET Framework) доступ к библиотеке классов .NET Framework, (Framework Class Library).
JIT-компиляция (Just-In-Time compilation, компиляция «на лету»), динамическая компиляция — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы программы.
Сборка .NET
Сборка в терминологии .NET ( assembly) — двоичный файл (exe или dll), содержащий номер версии информационного продукта, метаданные и инструкции для виртуальной машины .NET.
Файл с исходным кодом, написанном на любом языке поддерживаемой .NET платформой (C#, VB.NET...), с помощью соответствующего компилятора компилируется в сборку.
Манифест - имя сборки, номер версии, список всех файлов сборки (для многофайловых сборок), ссылки на файлы с определением типов, ссылки на используемые сборки.
Метаданные типов - описывают все классы и члены классов, определённые в сборке, а также классы и члены классов, которые текущая сборка вызывает из другой сборки.
CIL-код (байт-код) – программный код на промежуточном языке.
Ресурсы - любые неисполняемые данные, которые логически развертываются вместе с приложением.
Код компилируется в приложения или сборки с расширениями exe или dll на языке CIL. Далее при запуске на выполнение подобного приложения происходит JIT-компиляция (Just-In-Time) в машинный код, который затем выполняется. При этом, поскольку наше приложение может быть большим и содержать кучу инструкций, в текущий момент времени будет компилироваться лишь та часть приложения, к которой непосредственно идет обращение. Если мы обратимся к другой части кода, то она будет скомпилирована из CIL в машинный код. При том уже скомпилированная часть приложения сохраняется до завершения работы программы. В итоге это повышает производительность.