Программирование на языке Lua
Покупка
Издательство:
ДМК Пресс
Автор:
Иерузалимски Роберту
Перевод:
Боресков Алексей Викторович
Год издания: 2023
Кол-во страниц: 383
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-317-2
Артикул: 487729.04.99
Книга посвящена одному из самых популярных встраиваемых языков — Lua. Этот язык использовался во многих играх и большом количестве различных приложений. Язык сочетает небольшой объем занимаемый памяти, высокое быстродействие, простоту использования и большую гибкость. Книга рассматривает практически все аспекты использования Lua, начиная с основ языка и заканчивая тонкостями расширения языка и взаимодействия с С.
Важной особенностью книги является огромный спектр охватываемых тем — практически все, что может понадобиться при использовании Lua. Также к каждой главе дается несколько упражнений, позволяющих проверить свои знания. Книга будет полезна широкому кругу программистов и разработчиков игр. Для понимания последних глав книги необходимо знание языка С, но для большинства остальных глав достаточно базовых знаний о программировании.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование
- Программирование и алгоритмизация
- Разработка игр
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Роберту Иерузалимски Программирование на языке Lua
Programming in Lua Third Edition ROBERTO IERUSALIMSCHY PUC-RIO, BRAZIL RIO DE JANEIRO
Москва, 2023 РОБЕРТУ ИЕРУЗАЛИМСКИ Программирование на языке Lua 4-е издание, электронное
УДК 004.432.42Lua ББК 32.973.28-018.1 И30 И30 Иерузалимски, Роберту. Программирование на языке Lua / Р. Иерузалимски ; пер. с англ. А. В. Борескова. — 4-е изд., эл. — 1 файл pdf : 384 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-317-2 Книга посвящена одному из самых популярных встраиваемых языков — Lua. Этот язык использовался во многих играх и большом количестве различных приложений. Язык сочетает небольшой объем занимаемый памяти, высокое быстродействие, простоту использования и большую гибкость. Книга рассматривает практически все аспекты использования Lua, начиная с основ языка и заканчивая тонкостями расширения языка и взаимодействия с С. Важной особенностью книги является огромный спектр охватываемых тем — практически все, что может понадобиться при использовании Lua. Также к каждой главе дается несколько упражнений, позволяющих проверить свои знания. Книга будет полезна широкому кругу программистов и разработчиков игр. Для понимания последних глав книги необходимо знание языка С, но для большинства остальных глав достаточно базовых знаний о программировании. УДК 004.432.42Lua ББК 32.973.28-018.1 Электронное издание на основе печатного издания: Программирование на языке Lua / Р. Иерузалимски ; пер. с англ. А. В. Борескова. — 3-е изд. — Москва : ДМК Пресс, 2014. — 382 с. — ISBN 978-5-94074-767-3. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-317-2 © 2013, 2003 by Roberto Ierusalimschy © Оформление, перевод на русский язык ДМК Пресс, 2014
ОГЛАВЛЕНИЕ Введение ........................................................ 12 Аудитория ............................................................................... 14 О третьем издании .................................................................. 15 Другие ресурсы ....................................................................... 16 Некоторые типографские соглашения ..................................... 17 Запуск примеров ..................................................................... 17 Благодарности ........................................................................ 18 ЧАСТЬ I Язык ............................................................... 19 Глава 1. Начинаем ............................................ 20 1.1. Блоки ................................................................................ 20 1.2. Некоторые лексические соглашения ................................. 22 1.3. Глобальные переменные ................................................... 24 1.4. Отдельный интерпретатор ................................................ 24 Упражнения ............................................................................. 26 Глава 2. Типы и значения .................................... 27 2.1. Nil ..................................................................................... 28 2.2. Boolean (логические значения) ......................................... 28 2.3. Числа ................................................................................ 28 2.4. Строки .............................................................................. 30 Литералы .....................................................................................30 Длинные строки ...........................................................................32 Приведения типов ........................................................................33 2.5. Таблицы ............................................................................ 34 2.6. Функции ............................................................................ 38 2.7. userdata и нити .................................................................. 38 Упражнения ............................................................................. 39 Глава 3. Выражения .......................................... 40 3.1. Арифметические операторы ............................................. 40 3.2. Операторы сравнения ....................................................... 41 3.3. Логические операторы ...................................................... 42
Оглавление 3.4. Конкатенация .................................................................... 43 3.5. Оператор длины ................................................................ 43 3.6. Приоритеты операторов ................................................... 45 3.7. Конструкторы таблиц ........................................................ 46 Упражнения ............................................................................. 48 Глава 4. Операторы ........................................... 49 4.1. Операторы присваивания ................................................. 49 4.2. Локальные переменные и блоки ........................................ 50 4.3. Управляющие конструкции ............................................... 52 if then else .....................................................................................53 while .............................................................................................53 repeat ...........................................................................................54 Числовой оператор for ..................................................................54 Оператор for общего вида ............................................................55 4.4. break, return и goto ............................................................ 57 Упражнения ............................................................................. 60 Глава 5. Функции .............................................. 62 5.1. Множественные результаты .............................................. 64 5.2. Функции с переменным числом аргументов ...................... 68 5.3. Именованные аргументы .................................................. 70 Упражнения ............................................................................. 72 Глава 6. Еще о функциях .................................... 73 6.1. Замыкания ........................................................................ 75 6.2. Неглобальные функции ..................................................... 79 6.3. Оптимизация хвостовых вызовов ...................................... 82 Упражнения ............................................................................. 83 Глава 7. Итераторы и обобщенный for .................. 85 7.1. Итераторы и замыкания .................................................... 85 7.2. Семантика обобщенного for .............................................. 87 7.3. Итераторы без состояния ................................................. 89 7.4. Итераторы со сложным состоянием .................................. 91 7.5. Подлинные итераторы (true iterarators) .............................. 93 Упражнения ............................................................................. 94 Глава 8. Компиляция, выполнение и ошибки ......... 96 8.1. Компиляция ...................................................................... 96 8.2. Предкомпилированный код ............................................. 100 8.3. Код на С .......................................................................... 102 8.4. Ошибки ........................................................................... 103 8.5. Обработка ошибок и исключений .................................... 105
Оглавление 8.6. Сообщения об ошибках и стек вызовов ........................... 106 Упражнения ........................................................................... 108 Глава 9. Сопрограммы ..................................... 110 9.1. Основы сопрограмм ....................................................... 110 9.2. Каналы и фильтры ........................................................... 113 9.3. Сопрограммы как итераторы .......................................... 117 9.4. Невытесняющая многонитевость .................................... 119 Упражнения ........................................................................... 124 Глава 10. Законченные примеры ....................... 125 10.1. Задача о восьми королевах ........................................... 125 10.2. Самые часто встречающиеся слова .............................. 127 10.3. Цепь Маркова ............................................................... 129 Упражнения ........................................................................... 131 ЧАСТЬ II Таблицы и объекты.......................................... 133 Глава 11. Структуры данных ............................. 134 11.1. Массивы ....................................................................... 134 11.2. Матрицы и многомерные массивы ................................ 135 11.3. Связанные списки ......................................................... 137 11.4. Очереди и двойные очереди ......................................... 138 11.5. Множества и наборы ..................................................... 139 11.6. Строчные буферы ......................................................... 141 11.7. Графы ........................................................................... 142 Упражнения ........................................................................... 144 Глава 12. Файлы данных и персистентность ........ 146 12.1. Файлы с данными .......................................................... 146 12.2. Сериализация ............................................................... 148 Сохранение таблиц без циклов .................................................151 Сохранение таблиц с циклами ..................................................152 Упражнения ........................................................................... 155 Глава 13. Метатаблицы и метаметоды ............... 156 13.1. Арифметические метаметоды ....................................... 157 13.2. Метаметоды сравнения................................................. 160 13.3. Библиотечные метаметоды ........................................... 161 13.4. Метаметоды для доступа к таблице ............................... 162 Метаметод __index ...................................................................163 Метаметод __newindex .............................................................164 Таблицы со значениями по умолчанию .....................................165
Оглавление Отслеживание доступа к таблице .............................................166 Таблицы, доступные только для чтения .....................................168 Упражнения ........................................................................... 169 Глава 14. Окружение ....................................... 170 14.1. Глобальные переменные с динамическими именами..... 170 14.2. Описания глобальных переменных ................................ 172 14.3. Неглобальные окружения .............................................. 174 14.4. Использование _ENV ..................................................... 176 14.5. _ENV и load .................................................................... 179 Упражнения ........................................................................... 181 Глава 15. Модули и пакеты ............................... 182 15.1. Функция require ............................................................. 184 Переименовывание модуля ......................................................185 Поиск по пути ...........................................................................186 Искатели файлов ......................................................................187 15.2. Стандартный подход для написания модулей на Lua ..... 188 15.3. Использование окружений ............................................ 190 15.4. Подмодули и пакеты ...................................................... 192 Упражнения ........................................................................... 193 Глава 16. Объектно-ориентированное программирование ......................................... 195 16.1. Классы .......................................................................... 197 16.2. Наследование ............................................................... 199 16.3. Множественное наследование ...................................... 201 16.4. Скрытие ........................................................................ 203 16.5. Подход с единственным методом ................................. 205 Упражнения ........................................................................... 206 Глава 17. Слабые таблицы и финализаторы ........ 208 17.1. Слабые таблицы ............................................................ 208 17.2. Функции с кэшированием ............................................. 210 17.3. Атрибуты объекта .......................................................... 212 17.4. Опять таблицы со значениями по умолчанию ................ 213 17.5. Эфемерные таблицы ..................................................... 215 17.6. Финализаторы .............................................................. 216 Упражнения ..............................................................................220 ЧАСТЬ III Стандартные библиотеки ................................. 221 Глава 18. Математическая библиотека ............... 222
Оглавление Упражнения ........................................................................... 223 Глава 19. Библиотека для побитовых операций ... 224 Упражнения ........................................................................... 227 Глава 20. Библиотека для работы с таблицами .... 228 20.1. Функции insert и remove ................................................ 228 20.2. Сортировка ................................................................... 229 20.3. Конкатенация ................................................................ 230 Упражнения ........................................................................... 231 Глава 21. Библиотека для работы со строками ..... 232 21.1. Основные функции для работы со строками .................. 232 21.2. Функции для работы с шаблонами ................................ 235 Функция string.find ...................................................................235 Функция string.match ................................................................236 Функция string.gsub ..................................................................236 Функция string.gmatch ..............................................................237 21.3. Шаблоны ....................................................................... 238 21.4. Захваты ......................................................................... 242 21.5. Замены ......................................................................... 245 Кодировка URL .........................................................................246 Замена табов ...........................................................................248 21.6. Хитрые приемы ............................................................. 249 21.7. Юникод ......................................................................... 252 Упражнения ........................................................................... 255 Глава 22. Библиотека ввода/вывода .................. 256 22.1. Простая модель ввода/вывода ...................................... 256 22.2. Полная модель ввода/вывода ....................................... 260 Небольшой прием для увеличения быстродействия .................261 Бинарные файлы ......................................................................262 22.3. Другие операции над файлами ..................................... 264 Упражнения ........................................................................... 266 Глава 23. Библиотека функций операционной системы ........................................................ 267 23.1. Дата и время ................................................................. 267 23.2. Другие вызовы системы ................................................ 270 Упражнения ........................................................................... 271 Глава 24. Отладочная библиотека ...................... 272 24.1. Возможности по доступу (интроспекции) ...................... 272 Доступ к локальным переменным .............................................275 Доступ к нелокальным переменным .........................................276
Оглавление Доступ к другим сопрограммам ...............................................277 24.2. Ловушки (hooks) ............................................................ 278 24.3. Профилирование .......................................................... 279 Упражнения ........................................................................... 282 ЧАСТЬ IV С АPI ............................................................. 283 Глава 25. Обзор C API ...................................... 284 25.1. Первый пример ............................................................. 286 25.2. Стек .............................................................................. 288 Помещение элементов на стек .................................................290 Обращение к элементам ..........................................................291 Другие операции со стеком ......................................................294 25.3. Обработка ошибок в C API ............................................. 295 Обработка ошибок в коде приложения .....................................296 Обработка ошибок в коде библиотек ........................................296 Упражнения ........................................................................... 297 Глава 26. Расширение вашего приложения ......... 298 26.1. Основы ......................................................................... 298 26.2. Работа с таблицами ...................................................... 300 26.3. Вызовы функций на Lua ................................................. 305 26.4. Обобщенный вызов функции ......................................... 307 Упражнения ........................................................................... 309 Глава 27. Вызываем С из Lua ............................ 310 27.1. Функции на С ................................................................ 310 27.2. Продолжения ................................................................ 313 27.3. Модули на С .................................................................. 316 Упражнения ........................................................................... 318 Глава 28. Приемы написания функций на С ......... 320 28.1. Работа с массивами ...................................................... 320 28.2. Работа со строками ....................................................... 322 28.3. Сохранение состояния в функциях на С ......................... 326 Реестр ......................................................................................326 Значения, связанные с функцией .............................................329 Значения, связанные с функцией, используемые несколькими функциями ..........................................................332 Упражнения ........................................................................... 333 Глава 29. Задаваемые пользователем типы в С ... 334 29.1. Пользовательские данные (userdata) ............................. 335 29.2. Метатаблицы ................................................................ 337