Thread Rating:
  • 2 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Курс Squirrel | Часть 1
#1
[Image: WHAJCyB.png]

Добро пожаловать на курс посвященный языку программирования Squirrel. Хочу Вас предупредить о том, что при написании данного курса автор ориентировался на аудиторию людей которые не имеют базового представления об программировании. Предполагается что читатель уже владеет необходимым программным обеспечением для написания исходного кода.

Краткое введение
В первую очередь следует отметить что Squirrel является интерпретируемым языком программирования. В отличии от компиляции наша программа транслируется в процессе выполнения - это будет приносить нам неудобства. Данный язык схож с его родственником Lua, но говорить что эти языки идентичны разумеется не правильно. Самое удивительное что данный язык поддерживает классы и наследование, что действительно сыграет нам на руку. Язык программирования Squirrel применяют в качестве инструмента в мире разработчиков игровой индустрии.

Чему Вы научитесь
  • Проектировать и оптимизировать существующий алгоритм для решения задачи.
  • С уверенностью использовать язык программирования Squirrel для решения прикладных задач.
  • Взаимодействовать с памятью на уровне бит.
  • Разрабатывать структуру классов для решений различных задач.
  • Структурировать и использовать многофайловую структуру проекта.
  • Использовать API Gothic Online для разработки игровой модификации.
От автора
Я желаю вам удачного обучения в этом нелегком деле - программировании. Уверен что на пути у вас возникнет куча вопросов и загадок на которые вы захотите получить ответ. Если у вас возникнет чувство усталости или лени продолжать дальше - не мучайте себя. Постарайтесь отложить этот материал на следующий день. Данный метод поможет вам накопить сил для перехода на более высшую ступень в программировании. Хочу вас удивить, но даже если вы научитесь программировать - это не сделает из вас профессионала. Программирование входит в концепцию информатики, информатика как правило это что-то больше чем программирование. Профессионал должен иметь достаточно богатый багаж математических знаний начиная с школьной алгебры до математического анализа. Конечно для разработки игровой модификации Gothic Online не обязательно так глубоко знать математику, но это не означает что вы не должны это знать. Поверьте, пройдет несколько лет и вы захотите двигаться дальше. Чем дальше вы двигаетесь - тем умней вы становитесь - тем быстрей меняется ваше мировоззрение.

Я старался воплотить все свои знания из программирования в этот курс. Для меня самая интересная тема - это работа на уровне бит. Когда я только начинал изучать программирование я всегда боялся эти страшные слова и формулировки, но прошел ровно год и мои страхи исчезли. Надеюсь что вы тоже как и я найдете ответы на свои вопросы. Удачи!
 
[Image: tNTU2qK.png]

Переменные и типы данных
В процессе программирования мы постоянно взаимодействуем с данными, а ведь эти данные нужно где-то хранить. Существует несколько способов хранения данных, но в этой теме мы познакомимся с переменными. Переменные служат нам неким контейнером который дает нам возможность положить в него некоторое значение. Объявлением переменной является указание интерпретатору на существование данной переменной. Инициализация переменной является задание ей первоначального значения. Присвоение значения переменной - изменение уже хранящего значения. Значение может представлять собой как обычное число, либо-же результат какой-либо арифметической операции. В памяти компьютера переменные представляются следующим способом (изображение).
 
[Image: iB4SO0E.png]

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


Объем памяти выделяемой для переменной определяется по типу данных которому принадлежит данная переменная. Исходя из синтаксических правил языка Squirrel нам не нужно указывать тип данных вручную. Так-же язык Squirrel не является строго типизированным языком программирования, следовательно у нас есть возможность изменять тип переменной процессе выполнения программы.


Типы данных
  • Null | Неопределенный тип данных | Эквивалентна удалению переменной
  • Integer | Целочисленный тип данных | Выделение 4 байта памяти
  • Float | Вещественный тип данных | Выделение 4 байта памяти
  • Bool | Логический тип данных | Выделение 1 байта памяти
  • String | Строковый тип данных | Выделение 1 (ASCII) или 2 (unicode) байта памяти (в зависимости от кодировки)
  • Table | Таблица | Последовательность слотов представленные парами ключ/значение
  • Array | Массив | Последовательность однотипных элементов индексирующиеся от 0 до N-1 (где N - размер массива)

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

Но и этого не достаточно для того, что бы научиться разделять локальные и глобальные переменные. Локальные переменные в отличии от глобальных переменные существуют только в определенном блоке инструкций (блок инструкций заключается в { }). Глобальные-же переменные объявляются вне блоков инструкций и существуют всегда (если не удалить их вручную).

Ниже представлен листинг кода показывающий правила объявления / инициализации глобальных и локальных переменных.

[Исходный код] Перейти
[Результат]

[Image: ohZwJNW.png]


Комментарии 
Комментарии в языке программирования Squirrel бывают однострочные и многострочные. Они игнорируются транслятором и служат программисту как заметки в коде. Однострочный комментарий начинается с двух символов слэш // после которых идет комментарий. Стоит заметить что если мы перейдем на следующую строку и попытаемся ввести код - то наш код уже не будет являться комментарием. Многострочный комментарий выглядит таким образом /* текст */. Вы можете использовать этот тип комментариев для комментирования большого объема кода.
 
 
Блок инструкций 
Под инструкциями подразумевается команда которая оканчивается символом ( ; ). Если привести пример из реальной жизни, то блок инструкций { это некоторая коробка в которой идет последовательность инструкций или команд. Как вы уже знаете, если объявить локальную переменную внутри блока - то она будет существовать только в этом блоке, и при вызове её из другого части кода мы получим ошибку.
 
 
Функции 
Функции в программировании называют по разному [функция / процедура / подпрограмма / метод]. Каждый из этих терминов употребляется в зависимости от случая использования. Например принято считать функцию в классе - методом.

Функция это именованная последовательность конструкций или инструкций которые определены в блоке. Это очень большая тема, по этому про функции мы поговорим в следующих уроках.

Функция onInit() является авто вызываемой функцией. Она вызывается тогда, когда происходит запуск сервера.
Функция print() служит нам как инструмент для вывода сообщения на консольное окно. Это необходимо для анализа нашей программы. В качестве аргументов мы передаем строковую константу с использованием конкатенации строк. Для того что бы на консольном окне показать содержимое глобальной переменной glob_var - необходимо просто указать её имя. Как правило каждая инструкция оканчивается точкой с запятой ( ; ).

 

Когда я начинал изучать программирование, моей целью стояло заказать правдивость авторских слов на примере. Давайте попробуем объявить и инициализировать несколько переменных различных типов, и заставим компьютер вывести их тип.

[Исходный код] Перейти
[Результат]
 
[Image: yeZYECB.png]

 
Ключевое слово typeof 
Благодаря ключевому слову typeof мы можем вывести на экран тип значения идущего после данного ключевого слова. Этим мы показали что мы значения хранящейся в наших переменных имеют определенный тип.
 
 
Стиль программирования 
Вы наверно заметили что способ объявления и инициализации переменных был слегка изменен. Это никак не влияет на оптимизацию, поскольку в конечном итоге преобразует данный код в другой формат.
 

Заключение
Этот урок был неким введением в язык программирования Squirrel, именно по этому материал не был насыщен практическими примерами. В следующем уроке мы подробно разберем каждый тип данных на примере решения прикладных задач. На мой взгляд самой интересной частью будет тема посвященная побитовым операциям (работа на уровне бит).
- Sequel RolePlay | Link
- GUI Editor | Link
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  КАК ПОНЯТЬ? - Часть 2: Конфиг файл Osmith 0 4,547 14.03.2018, 15:23
Last Post: Osmith
  КАК ПОНЯТЬ? - Часть 1: Пакеты Osmith 0 3,066 29.10.2017, 16:42
Last Post: Osmith

Forum Jump:


Users browsing this thread: 1 Guest(s)