Введение в программирование на SourcePawn. Часть 1.

Сообщения
207
Реакции
420
Помог
10 раз(а)
Введение в программирование на SourcePawn. О работе языков в целом.
Перед тем, как начать писать именно о самом программировании на SourcePawn, имеет смысл немного написать о том, как в целом работает компьютер.
Самая главная часть компьютера (процессор), которая обрабатывает и выполняет весь код, знает только один язык - машинный. "Язык" даже в данном случае громко сказано, т.к. "машинный код" представляет собой просто набор цифр, которые в себе скрывают некоторые инструкции. Существует несколько разновидностей "машинного кода", но в целом все они попадают под единое определение "архитектуры процессора". Самые известные - x86_64, i386 и ARM. У Вас в домашнем компьютере, я более чем уверен, стоит процессор с архитектурой x86_64 (ОС Windows называет эту архитектуру просто "64-разрядной").
РИСУНОК 1.png

Запоминать и писать цифры вместо нормальных инструкций людям было сложно, не удобно, не читабельно, и итоговый код не имел мало общего с человеческими представлениями о логике и мыслях. И так появился на свет Assembler - первый язык программирования, который использовал вместо цифр т.н. "сокращения нормальных названий инструкций". Компилятор, конечно же, всё то, что человек писал, преобразовывал в "машинный код". Разновидностей Ассемблера тоже много, опять из-за различий в наборе инструкций каждой архитектуры процессора.
Именно впервые в Ассемблере вместо прямого указания адресов в памяти стало возможным указывать переменные и константы своими именами (например, вместо ввода адреса некой переменной, мы просто записываем её название, и это, мать его, работает). Ассемблер стал первым языком низкого уровня.

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

Конкретно SourcePawn (как и Павн в AMX Mod X, и в SAMP) использует JIT-компиляцию (Just In Time).
Код сначала компилируется из привычного языка в байт-код, который так же именуется оп-кодом (OP-Code, opcode), а уже в дальнейшем интерпретируется виртуальной машиной SourcePawn в машинный, и исполняется. При этом, хочется отметить, что функции из опкода попадают в виртуальную машину только один раз - прямо во время первого вызова. То есть, если функция нигде не вызывается, то она не компилируется, и расходы виртуальная машина никакие не несёт.
Мы об этом чуть позже, возможно, ещё поговорим.

Пара интересных фактов о SourcePawn:
  • SourcePawn является дополненным форком Павна, который, в свою очередь, является более упрощённым вариантом Си без указателей.
  • Имеет "псевдо-классы", как в С++, но без возможности делать приватные методы/проперти. Называется это здесь Methodmaps (Методмапы).
 
Последнее редактирование:

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу