Разработка компилятора. Оптимизатор

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

Основные способы оптимизации производительности

Для real-time приложений производительность очень важна, а если приложение еще и критично по времени исполнения, то производительность является ключевым фактором. Вопросам оптимизации производительности должно уделять достаточно времени. При разработке скриптового языка s4g мы не раз сталкивались с низкой производительностью. И каждый раз нам приходилось решать задачи по ускорению исполнения кода. Речь идет именно о повышении производительности C++ кода. Однако, не всегда, казалось бы очевидные приемы оптимизации, действительно ведут к оптимизации.

Типизация в языках программирования

Типизация языка программирования в некоторых случаях может оказаться достаточно важным фактором при его выборе. Не ради сравнения, а лишь только с целью показать различия языковых возможностей стоит сказать: в языке lua намного проще выполнить некоторые действия, нежели на C++. На первый взгляд достаточно глупый пример, но с другой стороны, где лучше описывать логику на C++ или на lua? Риторический вопрос на который, каждый сам находит ответ))

Что такое API?

Казалось бы, написал программу, и весь ее код и есть API, однако не все так просто, как кажется) Предоставляя лишний код в программный интерфейс создаются дополнительные проблемы использования, что за код, куда его девать и как с ним быть? Какой код вычленить для использования? В данной статье рассмотрим что такое API (программный интерфейс/интерфейс программирования) и его значимость.

Разработка компилятора. Синтаксический анализатор

В первой версии нашего языка s4g синтаксический анализ не был полностью отдельным процессом, и был совмещен с лексическим анализом. Разбор осуществлялся без каких либо четких правил, он работал, но внести какие-то изменения или дополнения без риска сломать все было несколько проблематично. Понятно, что так продолжаться долго не может, и к версии 0.9.2 синтаксический анализатор был полностью переработан.

Разработка компилятора. Контекст исполнения

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

Разработка компилятора. Стековая виртуальная машина. Состав

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

Разработка компилятора. Стековая виртуальная машина. Основы

Виртуальная машина, как некоторая идеализированная имитация процессора, является достаточно интересной темой для изучения. Стековая виртуальная машина проше для понимания процесса исполнения байт-кода. Виртуальная машина s4g переделывалась не раз, переписывалась с нуля, в одной и той же версии видоизменялась, и все для того чтобы найти наиболее подходящий вариант. В данной статье рассмотрим понятие виртуальной машины, ее функционал и возможности.

Разработка компилятора. Сборщик мусора

Сборка мусора не маловажная часть управления памятью, оперативная память не бесконечна. Говоря «сборщик мусора» обычно подразумевается объект сборщика мусора, который сам соберет все что наделал программист))

AI в играх. Алгоритмы поиска пути

Поиск пути достаточно важная часть всего AI сочетающая в себе как сложность задачи, так и простоту алгоритма. Особенно поиск кратчайшего пути. В статье рассмотрим алгоритмы поиска пути (с которыми я знаком). При описании алгоритмов не учтены все нюансы, а лишь дано краткое описание, для полного описания каждого алгоритма нужна отдельная статья))