JavaRush /Курсы /C# SELF /Компилятор и комментарии

Компилятор и комментарии

C# SELF
1 уровень , 5 лекция
Открыта

1. C#-компилятор

Компьютер не понимает человеческий язык. Компьютер не понимает даже языки программирования. Он понимает только программы, написанные в машинных кодах — состоящие из нулей и единичек.

Для собак есть команды «Рядом», «Лапу» и другие, слыша которую собака делает что-то важное. У компьютера роль таких команд выполняют числа: каждая команда закодирована некоторым числом (его еще называют машинным кодом).

Писать программу в виде чисел очень сложно, поэтому люди придумали языки программирования и компиляторы. Такой язык, с одной стороны, понятен человеку, с другой — компилятору. Компилятор — это специальная программа, которая переводит текст программы, написанный на языке программирования, в набор машинных кодов.

Обычно программист пишет программу на языке программирования, а затем запускает компилятор, который на основе написанных программистом файлов с кодом программы делает один файл с машинным кодом — окончательную (скомпилированную) программу.

  • Программа на языке C++
  • Компилятор
  • Программа, состоящая из машинных кодов
Этапы компиляции для языка C++

Получившаяся в итоге программа сразу может выполняться на компьютере. Минус такого подхода в том, что код полученной программы сильно зависит от процессора и операционной системы. Программа, скомпилированная под Windows, не будет работать на телефоне с Android.

Если вы написали программу под Android, то на операционной системе Windows она не запустится!

Но у C# гораздо более инновационный подход.

  • Программа на языке C#
  • C#‑компилятор
  • Программа, состоящаяиз специальных IL-кодов (байт‑код)
  • CLR
  • Программа, состоящая из машинных кодов
Этапы компиляции для языка C#

Компилятор C# не компилирует все классы в одну программу из машинных кодов. Вместо этого он компилирует ваш код не в машинные коды, а в специальный промежуточный IL-код (байт-код). Компиляция в машинный код выполняется при запуске программы.

А кто же компилирует программу в машинный код при ее запуске?

Для этого есть специальная программа под названием CLR (Common Language Runtime) — виртуальная машина C#. Сначала запускают ее, а затем — программу, состоящую из байт-кода. А уже CLR перед выполнением нужной программы компилирует ее в машинный код.

Если у вас крутой процессор, который поддерживает больший набор машинных команд, то во время "второй компиляции" сгенерируется машинный код с учетом именно вашего процессора и ОС. Именно поэтому C# иногда быстрее С++, который сразу компилируется в машинный код и может использовать только самые распространение команды процессора.

2. Типовые ошибки при компиляции

Скорость и оптимизация кода нам пока что не сильно важна, а вот что важно, так это то, что компилятор проверяет вашу программу на ошибки. Он проверяет код на корректность и не пустит его дальше, если нашёл даже маленькую ошибку.

Пример ошибки:

Вы пытаетесь присвоить число переменной, которая может хранить только текст.

string userName = 42; // Ой! Нельзя так.

Компилятор сразу выдаст ошибку, что типы не соответствуют: "Cannot implicitly convert type 'int' to 'string'".

Другой пример — опечатка в команде WriteLine():

Console.WriteLin("Привет!"); // Ошибка в названии метода

Компилятор скажет: "Нет такого метода — проверяй синтаксис!"

Как читать ошибки?

Большинство компиляторов подсказывают, где в коде ошибка, и даже иногда предлагают варианты исправления. Не бойтесь ошибок: каждая из них — это шаг к просветлению и прохождению вашего внутреннего "босса".

3. Комментарии

Итак, представьте: вы пишете сложную программу. Все работает, вы — гений! Но через месяц вы открываете тот самый код и... ничего не понимаете. Пару строчек кода тут, странная переменная там. В голове только: «Это явно писал кто угодно, но не я!». Вот тут-то и спасают комментарии.

Комментарии — это как записки на полях учебника или подписи на холодильнике ("Пиво. Не пить. На утро!"). Компилятор их игнорирует, а люди — наоборот. Комментарии позволяют объяснить смысл кода, помечать важные детали и даже «выключать» куски программ, не удаляя их.

Важно: Ни один компилятор не читает ваши комментарии, они полностью игнорируются!

Однострочные комментарии

В C# есть два вида комментариев — однострочные и многострочные. Однострочные начинаются с двойного слэша // и идут до конца строки. Всё, что находится после // считается комментарием и абсолютно игнорируется компилятором.

Пример:

Console.WriteLine("Привет, мир!"); 	// Это выводит приветствие на экран

Вот тут // Это выводит приветствие на экран — комментарий. Если в коде кажется непонятным, зачем нужна строка, вот так и пишите!

Еще пример:

int x = 42; 	// Значение возраста программиста

Можно писать однострочные комментарии и на отдельных строках:

// Инициализация переменной с именем пользователя
string userName = "Вася";

Почти как реплики в сценарии: комментарий объясняет, зачем и почему.

Многострочные комментарии

Что, если у вас много всего накопилось? Настоящая история? Для этого есть многострочные комментарии, которые начинаются с /* и заканчиваются на */. Всё между этими символами игнорируется компилятором, даже если это несколько строк.

Пример:

/*
  Здесь мы выводим имя пользователя на экран.
  Если имя отсутствует, напишем "Гость".
*/
Console.WriteLine("Введите ваше имя:");

Или так:

int age = 18; /* Начальное значение возраста
                 для нового пользователя */

Внимание: нельзя вложить одни многострочные комментарии в другие. Не пытайтесь быть хитрее компилятора — это не сработает.

Иллюстрация:

Вид Синтаксис Пример
Однострочный // комментарий int x = 1; // объяснение
Многострочный /* всякое тут */ /* тут можно объяснить все, что хотите */

4. Примеры из жизни

«Отключение» строки кода:

Бывает, что вы временно хотите не выполнять какой-то фрагмент кода. Комментарии тут как раз к месту:

// Console.WriteLine("Текст, который временно не нужен");

Строчка осталась, но компилятор её не «видит».

Пометки TODO и FIXME

Программисты — тоже люди, и иногда нужно самому себе напомнить, что код ещё не доделан, или что тут есть баг. Для этого часто пишут:


// TODO: сделать проверку на пустой ввод
// FIXME: эта функция неверно считает сумму

Многие редакторы и IDE даже выделяют такие слова!

Программисты шутят

Ну и, конечно, иногда, в коде попадаются очень интересные комментарии:

// Я не отвечаю за этот код. Меня заставили написать его против моего желания.
// Дорогой, я_из_будущего! Пожалуйста, прости меня за этот код.
// Если я еще раз увижу такое, мне придется начать носить на работу оружие.
// Если это условие когда-нибудь выполнится, пожалуйста, сообщите мне по тел. ххх-ххх-ххх за вознаграждение.
// Дорогой программист:
//
// Когда ты закончишь «оптимизировать» эту подпрограмму
// и поймешь, насколько большой ошибкой было делать это,
// пожалуйста, увеличь счетчик внизу как предупреждение
// для следующего парня:
//
// количество_часов_потраченных_здесь = 42
// Когда я начинал это писать, только Бог и я понимали, что я делаю.
// Сейчас остался только Бог
// иногда мне кажется, что компилятор игнорирует все мои комментарии
// Я посвящаю весь свой код, всю работу своей жене Дарлин, которой
// придётся содержать меня, наших троих детей и собаку, когда
// это пойдет в продакшн.

Да, комментарии могут быть очень смешными. Ведь их пишут живые люди.

2
Задача
C# SELF, 1 уровень, 5 лекция
Недоступна
Программа с однострочным комментарием
Программа с однострочным комментарием
2
Задача
C# SELF, 1 уровень, 5 лекция
Недоступна
Использование многострочного комментария
Использование многострочного комментария
1
Опрос
Команды и первая программа, 1 уровень, 5 лекция
Недоступен
Команды и первая программа
Команды и первая программа
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
24 декабря 2025
Опечатка в конце раздела 1: может использовать только самые распространение команды процессора. Правильно: распространенные
25 июля 2025
Очень легко))
Artemiy Уровень 32
16 июля 2025
Пока никаких вопросов