Синтаксис, семантика, ошибки и комментарии¶
В прошлой статье мы разобрались с базовым объявлением новых акторов — объектов мира.
Перед тем, как идти дальше, необходимо упомянуть о понятиях синтаксиса и семантики, а также о комментариях, самой важной возможности в любом языке программирования.
Синтаксис и семантика кода¶
Часто эти два понятия употребляются рядом.
- Синтаксис — это формальные правила записи кода; то, как он должен выглядеть, чтобы компьютер в нём разобрался.
- Семантика — это переданный смысл, то есть то, как его на самом деле воспринимает человек и что в результате по нему делает компьютер.
Напомним, что итоговый код из предыдущей статьи выглядел примерно так:
class ImpulseFloorLamp: Actor replaces Zombieman {
Default {
+SOLID;
+BRIGHT;
Radius 8;
Height 48;
}
States {
Spawn:
TLP2 A 30;
TLP2 BCD 4;
Loop;
}
}
Синтаксис¶
В коде выше слова вроде States, class, числа, а также символы по типу { } и ; стоят в строго заданных местах друг относительно друга. Эти позиции определяются жёсткими формальными правилами записи, по которым строится язык программирования. Это — синтаксис.
Ошибка (или "баг") в правилах записи называется синтаксической ошибкой. Такие ошибки движок без труда определяет и, так как в этом месте возникает критическая неясность, просто отказывается запускаться вместе с проектом. Он просто не может распознать, что в этом месте от него требуется.
Синтаксические ошибки
Список ошибок такого типа, а также общие рекомендации по их разрешению, можно посмотреть в статье "Список ошибок компилятора".
Семантика¶
Вместе с тем, в коде выше намётанному глазу также сразу видны:
- Объявление нового актора и замена им другого;
- Логический блок свойств сверху, определяющей непроходимую декорацию;
- Блок стейтов, показывающий простую зацикленную анимацию.
Да, записывается это всё синтаксическими конструкциями, но передают смысл. Это — семантика.
Ошибка (баг) в логике называется семантической ошибкой. Они несравнимо сложнее для автоматического отлова, движок только в самых очевидных случаях может определить некорректность написанного. Зачастую такие ошибки проявляются непосредственно во время игры, а не при запуске проекта; иногда поначалу даже неясно, при каких условиях так или иная ошибка появилась.
Семантические ошибки
- Если игра вылетает в консоль, то общие методы решения можно посмотреть статье "Ошибки и вылеты при игре".
- Если движок намертво зависает — вероятнее всего, где-то бесконечный цикл. Обобщённый процесс отладки описан в ещё не созданной статье 2.7, а отладки в стейтах — в тоже пока не существующей статье раздела Actor.
- Если проект не запускается, то их, как и в случае с синтаксисом, можно поискать в статье "Список ошибок компилятора".
- Во всех остальных случаях ошибка где-то в логике, методы поиска описаны в пока отсутствующей статье 2.7.
- Крайне редко попадается что-то напрочь неотлаживаемое. Тогда можно попробовать найти соответствие в статье "Странные и специфические ошибки", но следует помнить, что обычно это излишне.
Процесс избавления от ошибок называется отладкой (дебагом). Зачастую, чем запутаннее код, тем сложнее в нём будет найти внезапно появившийся баг, и, соответственно, тем дольше впоследствии придётся заниматься отладкой.
Поддерживать порядок в коде и отлаживать подозрительные места помогут комментарии.
Комментарии¶
TODO
Комментарии в стиле C. Пока что они есть в разделе 3.
Теперь можно двигаться вперёд, к стейтам и созданию простого актора-противника!