Автор24

Информация о работе

Подробнее о работе

Страница работы

ВКР Реализация основных функций высокоуровневого языка программирования с дальнейшим преобразованием их в язык Lua

  • 50 страниц
  • 2021 год
  • 1 просмотр
  • 0 покупок
Автор работы

user5741222

2000 ₽

Работа будет доступна в твоём личном кабинете после покупки

Гарантия сервиса Автор24

Уникальность не ниже 50%

Фрагменты работ

Lua - это скриптовый язык программирования, одной из ключевых

оссобенностей которого является его простота в обучении и небольшой размер, что позволяет даже начинающим программистам быстро научиться создавать собственные программы. Одно из самых популярных применений языка Lua – это его использование в создании видеоигр. Наиболее известные игровые онлайн-платформы, использующие Lua: Roblox и Garry’s Mod.

Например, Roblox – игровая платформа с более 200 миллионами активных пользователей [1], которая позволяет создавать свои собственные и играть в созданные другими пользователями игры. Игры в Roblox создаются в среде объектно-ориентированного программирования (ООП), использующей язык программирования Lua.

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

Подобные недостатки аналогичного языка JavaScript послужили причиной создания TypeScript [2] - статически типизированной версии с дополненными функциями синтаксиса.

Соответственно, актуальность дипломной работы заключается в востребованности улучшенной версии языка Lua для использования в разработке видеоигр среднего и большого размера.

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


Задачами дипломной работы в связи с указанной целью являются:

- Проанализировать недостатки Lua и выявить проблемы, которые

необходимо решить;

- Расширить стандартный функционал Lua, спроектировав новый

синтаксис, который позволит создать классы, статические типы, синтаксический сахар;

- Создать компилятор, который будет выполнять статическую проверку типов для классов и переменных, а также преобразовывать код прототипа в код Lua;

- Улучшить стандартную библиотеку, добавив туда новые модули,

основанные на классовой системе.

Введение ................................................................................................................... 2 1 Обзор Lua, его экосистемы и похожих решений ............................................... 4

1.1 История создания .......................................................................................... 4 1.2 Lua в разработке игр ..................................................................................... 5 1.3 Обзор похожих решений............................................................................... 9

2 Анализ недостатков Lua .................................................................................... 12 2.1 Анализ синтаксиса ...................................................................................... 13 2.2 Анализ семантики языка ............................................................................ 17 2.3 Анализ стандартной библиотеки и объектно ориентированного

программирования ............................................................................................ 19

3 Создание прототипа ........................................................................................... 26 3.1 Создание синтаксиса для прототипа ......................................................... 26 3.2 Компиляция кода прототипа ....................................................................... 36 3.2.1 Токенизация и создание синтаксического дерева ................................. 37 3.2.2 Система типизации .................................................................................. 40 3.2.3 Преобразование в код Lua ....................................................................... 43 3.3 Создание стандартной библиотеки для работы с таблицами ................. 49 Заключение ............................................................................................................. 53

Оригинальность по АП.Вуз на 11 февраля 2023 года более 70%.

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

1. DEFYING PREDICTIONS, ROBLOX MAU HITS ALL TIME HIGH AT 202

MILLION ESTIMATED USERS IN APRIL 2021, PICKING UP 10 MILLION USERS COMPARED TO THE MONTH BEFORE. – Текст : электронный // Rtrack : [сайт]. - URL: https://blog.rtrack.live/index.php/2021/05/04/defying-predictions-roblox-

mau-hits-all-time-high-at-202-million-estimated-users-in-april-2021-picking-up-10-million-users-compared-to-the-month-before (дата обращения 04.05.2021).

2. TypeScript : Typed JavaScript at Any Scale : сайт. - URL: https://www.typescriptlang.org (дата обращения 04.05.2021) – Текст : электронный.

3. Roberto I., L.H. de Figueiredo, Waldemar C. The evolution of Lua // HOPL III: Proceedings of the third ACM SIGPLAN conference on History of programming languages. San Diego, California 2007. – С. 2–1–2–26.

4. PEP 602 -- Annual Release Cycle for Python : Python Software Foundation : сайт. – URL: https://www.python.org/dev/peps/pep-0602 (дата обращения 04.05.2021) – Текст : электронный.

5. Java to Move to 6-Monthly Release Cadence : InfoQ. – URL: https://www.infoq.com/news/2017/09/Java6Month/ (дата обращения 04.05.2021) – Текст : электронный.

6. Mogilefsky, B. Lua in Grim Fandango. / B, Mogilefsky. - 1999. - URL: http://www.grimfandango.net/?page=articles&pagenumber=2 (дата обращения 04.05.2021) – Текст : электронный.

7. Announcing Game Developer magazine's 2011 Front Line Award winners : Gamasutra : сайт. - URL: https://www.gamasutra.com/view/news/129084/Announcing_Game_Develop er_magazines_2011_Front_Line_Award_winners.php. –Дата публикации: 13.01.2012. – Текст : электронный.

8. Jung K., Brown A. Beginning Lua Programming : Wrox, 2007. – ISBN 978-

0470069172 – Текст : непосредственный.

9. Manyen M., Schuytema P. Game Development with Lua : Delmar Thomson

Learning, 2005. - ISBN 978-1584504047. – Текст : непосредственный.

10. Kasuba M. Lua Game Development Cookbook: Over 70 recipes that will help

you master the elements and best practices required to build a modern game engine using Lua : Packt Publishing, 2015. – 360 с. - ISBN 978-1849515504 – Текст : непосредственный.

11. Young D. Learning Game AI Programming with Lua : Packt Publishing, 2014.

– 352 с. – ISBN 978-1783281336 – Текст : непосредственный.

12. Brumbaugh Z. Coding Roblox Games Made Easy: The ultimate guide to

creating games with Roblox Studio and Lua programming : Packt Publishing, 2021. – 238 с. – ISBN 978-1800561991 – Текст : непосредственный.

13. Игры, использующие язык Lua : Википедия. Свободная энциклопедия. -

URL:

https://ru.wikipedia.org/wiki/Категория:Игры,_использующие_язык_Lua (дата обращения 04.05.2021) – Текст : электронный.

14. Roblox’s 10 biggest games of all time — each with more than a billion plays : Venture Beat. - URL: https://venturebeat.com/2019/12/09/robloxs-10-biggest-games-of-all-time-each-with-more-than-a-billion-plays/ (дата обращения 04.05.2021) – Текст : электронный.

15. Pall, M. Re: Port bitop to 5.3?. – 2015. - URL: https://www.freelists.org/post/luajit/Port-bitop-to-53,1 (дата обращения 13.05.2021) – Текст : электронный.

16. Luacheck : Github : сайт. - URL: https://github.com/mpeterv/luacheck/ (дата

обращения 04.05.2021) – Текст : электронный.

17. Luanalysis (an EmmyLua fork) for IntelliJ IDEA : Github : сайт. - URL:

https://github.com/Benjamin-Dobell/IntelliJ-Luanalysis (дата обращения 04.05.2021) – Текст : электронный.

18. Metalua : Github : сайт. – URL: https://github.com/fab13n/metalua (дата

обращения 04.05.2021) – Текст : электронный.

19. Tidal Lock: optional static type checking and inference for Lua : lua-users :

сайт. - URL: http://lua-users.org/lists/lua-l/2013-02/msg00403.html (дата обращения 04.05.2021) – Текст : электронный.

20. Sol - Typesafe Lua : Github : сайт. – URL: https://github.com/emilk/sol (дата

обращения 04.05.2021) – Текст : электронный.

21. Typed Lua: An Optional Type System for Lua // Dyla'14: Proceedings of the

Workshop on Dynamic Languages and Applications. Edinburgh, United Kingdom, 2014. – С. 1-10.

22. Teal: Github : сайт. – URL: https://github.com/teal-language/tl (дата

обращения 04.05.2021) – Текст : электронный.

23. MoonScript : A programmer friendly language that compiles to Lua. : сайт. –

URL: https://moonscript.org (дата обращения 04.05.2021) – Текст : электронный.

24. Declaring Global Variables : Programming in Lua. : сайт. - URL: https://www.lua.org/pil/14.2.html (дата обращения 13.05.2021) – Текст : электронный.

25. Table Manipulation : Lua 5.1 Reference Manual : сайт. – URL: https://www.lua.org/manual/5.1/manual.html#5.5 (дата обращения 04.05.2021) – Текст : электронный.

26. Kim B. B. Foundations of Object-oriented Languages: Types and Semantics. :

MIT Press, 2002. - С. 17-21

27. The Packrat Parsing and Parsing Expression Grammars Page / B. Ford : сайт.

- URL: https://bford.info/packrat/ (дата обращения 13.05.2021) – Текст : электронный.

28. Jeremy G. S., Walid Taha. Gradual typing for objects. // In Proceedings of the

21st European Conference on Object-Oriented Programming. -С. 2–27

29. Jeremy G. S., Walid T. Gradual typing for functional languages. // In Scheme

and Functional Programming Workshop. - 2006. -С. 81–92

30. Benjamin C. P., David N. T. Local type inference // ACM Transactions on Programming Languages and Systems (TOPLAS). – Вып. 22. - 2000. -С. 1– 44.

Форма заказа новой работы

Не подошла эта работа?

Закажи новую работу, сделанную по твоим требованиям

Оставляя свои контактные данные и нажимая «Заказать Выпускную квалификационную работу», я соглашаюсь пройти процедуру регистрации на Платформе, принимаю условия Пользовательского соглашения и Политики конфиденциальности в целях заключения соглашения.

Фрагменты работ

Lua - это скриптовый язык программирования, одной из ключевых

оссобенностей которого является его простота в обучении и небольшой размер, что позволяет даже начинающим программистам быстро научиться создавать собственные программы. Одно из самых популярных применений языка Lua – это его использование в создании видеоигр. Наиболее известные игровые онлайн-платформы, использующие Lua: Roblox и Garry’s Mod.

Например, Roblox – игровая платформа с более 200 миллионами активных пользователей [1], которая позволяет создавать свои собственные и играть в созданные другими пользователями игры. Игры в Roblox создаются в среде объектно-ориентированного программирования (ООП), использующей язык программирования Lua.

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

Подобные недостатки аналогичного языка JavaScript послужили причиной создания TypeScript [2] - статически типизированной версии с дополненными функциями синтаксиса.

Соответственно, актуальность дипломной работы заключается в востребованности улучшенной версии языка Lua для использования в разработке видеоигр среднего и большого размера.

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


Задачами дипломной работы в связи с указанной целью являются:

- Проанализировать недостатки Lua и выявить проблемы, которые

необходимо решить;

- Расширить стандартный функционал Lua, спроектировав новый

синтаксис, который позволит создать классы, статические типы, синтаксический сахар;

- Создать компилятор, который будет выполнять статическую проверку типов для классов и переменных, а также преобразовывать код прототипа в код Lua;

- Улучшить стандартную библиотеку, добавив туда новые модули,

основанные на классовой системе.

Введение ................................................................................................................... 2 1 Обзор Lua, его экосистемы и похожих решений ............................................... 4

1.1 История создания .......................................................................................... 4 1.2 Lua в разработке игр ..................................................................................... 5 1.3 Обзор похожих решений............................................................................... 9

2 Анализ недостатков Lua .................................................................................... 12 2.1 Анализ синтаксиса ...................................................................................... 13 2.2 Анализ семантики языка ............................................................................ 17 2.3 Анализ стандартной библиотеки и объектно ориентированного

программирования ............................................................................................ 19

3 Создание прототипа ........................................................................................... 26 3.1 Создание синтаксиса для прототипа ......................................................... 26 3.2 Компиляция кода прототипа ....................................................................... 36 3.2.1 Токенизация и создание синтаксического дерева ................................. 37 3.2.2 Система типизации .................................................................................. 40 3.2.3 Преобразование в код Lua ....................................................................... 43 3.3 Создание стандартной библиотеки для работы с таблицами ................. 49 Заключение ............................................................................................................. 53

Оригинальность по АП.Вуз на 11 февраля 2023 года более 70%.

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

1. DEFYING PREDICTIONS, ROBLOX MAU HITS ALL TIME HIGH AT 202

MILLION ESTIMATED USERS IN APRIL 2021, PICKING UP 10 MILLION USERS COMPARED TO THE MONTH BEFORE. – Текст : электронный // Rtrack : [сайт]. - URL: https://blog.rtrack.live/index.php/2021/05/04/defying-predictions-roblox-

mau-hits-all-time-high-at-202-million-estimated-users-in-april-2021-picking-up-10-million-users-compared-to-the-month-before (дата обращения 04.05.2021).

2. TypeScript : Typed JavaScript at Any Scale : сайт. - URL: https://www.typescriptlang.org (дата обращения 04.05.2021) – Текст : электронный.

3. Roberto I., L.H. de Figueiredo, Waldemar C. The evolution of Lua // HOPL III: Proceedings of the third ACM SIGPLAN conference on History of programming languages. San Diego, California 2007. – С. 2–1–2–26.

4. PEP 602 -- Annual Release Cycle for Python : Python Software Foundation : сайт. – URL: https://www.python.org/dev/peps/pep-0602 (дата обращения 04.05.2021) – Текст : электронный.

5. Java to Move to 6-Monthly Release Cadence : InfoQ. – URL: https://www.infoq.com/news/2017/09/Java6Month/ (дата обращения 04.05.2021) – Текст : электронный.

6. Mogilefsky, B. Lua in Grim Fandango. / B, Mogilefsky. - 1999. - URL: http://www.grimfandango.net/?page=articles&pagenumber=2 (дата обращения 04.05.2021) – Текст : электронный.

7. Announcing Game Developer magazine's 2011 Front Line Award winners : Gamasutra : сайт. - URL: https://www.gamasutra.com/view/news/129084/Announcing_Game_Develop er_magazines_2011_Front_Line_Award_winners.php. –Дата публикации: 13.01.2012. – Текст : электронный.

8. Jung K., Brown A. Beginning Lua Programming : Wrox, 2007. – ISBN 978-

0470069172 – Текст : непосредственный.

9. Manyen M., Schuytema P. Game Development with Lua : Delmar Thomson

Learning, 2005. - ISBN 978-1584504047. – Текст : непосредственный.

10. Kasuba M. Lua Game Development Cookbook: Over 70 recipes that will help

you master the elements and best practices required to build a modern game engine using Lua : Packt Publishing, 2015. – 360 с. - ISBN 978-1849515504 – Текст : непосредственный.

11. Young D. Learning Game AI Programming with Lua : Packt Publishing, 2014.

– 352 с. – ISBN 978-1783281336 – Текст : непосредственный.

12. Brumbaugh Z. Coding Roblox Games Made Easy: The ultimate guide to

creating games with Roblox Studio and Lua programming : Packt Publishing, 2021. – 238 с. – ISBN 978-1800561991 – Текст : непосредственный.

13. Игры, использующие язык Lua : Википедия. Свободная энциклопедия. -

URL:

https://ru.wikipedia.org/wiki/Категория:Игры,_использующие_язык_Lua (дата обращения 04.05.2021) – Текст : электронный.

14. Roblox’s 10 biggest games of all time — each with more than a billion plays : Venture Beat. - URL: https://venturebeat.com/2019/12/09/robloxs-10-biggest-games-of-all-time-each-with-more-than-a-billion-plays/ (дата обращения 04.05.2021) – Текст : электронный.

15. Pall, M. Re: Port bitop to 5.3?. – 2015. - URL: https://www.freelists.org/post/luajit/Port-bitop-to-53,1 (дата обращения 13.05.2021) – Текст : электронный.

16. Luacheck : Github : сайт. - URL: https://github.com/mpeterv/luacheck/ (дата

обращения 04.05.2021) – Текст : электронный.

17. Luanalysis (an EmmyLua fork) for IntelliJ IDEA : Github : сайт. - URL:

https://github.com/Benjamin-Dobell/IntelliJ-Luanalysis (дата обращения 04.05.2021) – Текст : электронный.

18. Metalua : Github : сайт. – URL: https://github.com/fab13n/metalua (дата

обращения 04.05.2021) – Текст : электронный.

19. Tidal Lock: optional static type checking and inference for Lua : lua-users :

сайт. - URL: http://lua-users.org/lists/lua-l/2013-02/msg00403.html (дата обращения 04.05.2021) – Текст : электронный.

20. Sol - Typesafe Lua : Github : сайт. – URL: https://github.com/emilk/sol (дата

обращения 04.05.2021) – Текст : электронный.

21. Typed Lua: An Optional Type System for Lua // Dyla'14: Proceedings of the

Workshop on Dynamic Languages and Applications. Edinburgh, United Kingdom, 2014. – С. 1-10.

22. Teal: Github : сайт. – URL: https://github.com/teal-language/tl (дата

обращения 04.05.2021) – Текст : электронный.

23. MoonScript : A programmer friendly language that compiles to Lua. : сайт. –

URL: https://moonscript.org (дата обращения 04.05.2021) – Текст : электронный.

24. Declaring Global Variables : Programming in Lua. : сайт. - URL: https://www.lua.org/pil/14.2.html (дата обращения 13.05.2021) – Текст : электронный.

25. Table Manipulation : Lua 5.1 Reference Manual : сайт. – URL: https://www.lua.org/manual/5.1/manual.html#5.5 (дата обращения 04.05.2021) – Текст : электронный.

26. Kim B. B. Foundations of Object-oriented Languages: Types and Semantics. :

MIT Press, 2002. - С. 17-21

27. The Packrat Parsing and Parsing Expression Grammars Page / B. Ford : сайт.

- URL: https://bford.info/packrat/ (дата обращения 13.05.2021) – Текст : электронный.

28. Jeremy G. S., Walid Taha. Gradual typing for objects. // In Proceedings of the

21st European Conference on Object-Oriented Programming. -С. 2–27

29. Jeremy G. S., Walid T. Gradual typing for functional languages. // In Scheme

and Functional Programming Workshop. - 2006. -С. 81–92

30. Benjamin C. P., David N. T. Local type inference // ACM Transactions on Programming Languages and Systems (TOPLAS). – Вып. 22. - 2000. -С. 1– 44.

Купить эту работу

ВКР Реализация основных функций высокоуровневого языка программирования с дальнейшим преобразованием их в язык Lua

2000 ₽

или заказать новую

Лучшие эксперты сервиса ждут твоего задания

от 3000 ₽

Гарантии Автор24

Изображения работ

Страница работы
Страница работы
Страница работы

Понравилась эта работа?

или

11 февраля 2023 заказчик разместил работу

Выбранный эксперт:

Автор работы
user5741222
4
Купить эту работу vs Заказать новую
0 раз Куплено Выполняется индивидуально
Не менее 40%
Исполнитель, загружая работу в «Банк готовых работ» подтверждает, что уровень оригинальности работы составляет не менее 40%
Уникальность Выполняется индивидуально
Сразу в личном кабинете Доступность Срок 1—6 дней
2000 ₽ Цена от 3000 ₽

5 Похожих работ

Выпускная квалификационная работа

Операционные системы и платформы

Уникальность: от 40%
Доступность: сразу
3000 ₽
Выпускная квалификационная работа

Автоматизированная система для заказа медицинского оборудования

Уникальность: от 40%
Доступность: сразу
6000 ₽
Выпускная квалификационная работа

Автоматизация документооборота организации ООО ЧОП "Сайга"

Уникальность: от 40%
Доступность: сразу
990 ₽
Выпускная квалификационная работа

Пименение электронных образовательных ресурсов в обучении ВКР

Уникальность: от 40%
Доступность: сразу
2000 ₽
Выпускная квалификационная работа

АВТОМАТИЗИРОВАННОЕ РАБОЧЕЕ МЕСТО МЕНЕДЖЕРА

Уникальность: от 40%
Доступность: сразу
5000 ₽

другие учебные работы по предмету

Готовая работа

Веб-сервис для компании по производству и продаже фотополимерных 3D принтеров

Уникальность: от 40%
Доступность: сразу
1400 ₽
Готовая работа

вкр Модели блокировки прямой видимости в миллиметровом и терагерцовом диапазонах частот между самолетами и наземной базовой станцией

Уникальность: от 40%
Доступность: сразу
2000 ₽
Готовая работа

ВКР Применение технологий машинного обучения для решения обратной задачи финансов

Уникальность: от 40%
Доступность: сразу
2000 ₽
Готовая работа

ВКР Управление рыночным риском портфеля ценных бумаг при помощи машинного обучения

Уникальность: от 40%
Доступность: сразу
2000 ₽
Готовая работа

ВКР Генерация музыки по заданному контексту

Уникальность: от 40%
Доступность: сразу
2000 ₽
Готовая работа

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

Уникальность: от 40%
Доступность: сразу
1000 ₽
Готовая работа

«Оптимизация планирования доставки грузов на основе алгоритма k-means»

Уникальность: от 40%
Доступность: сразу
800 ₽
Готовая работа

Технологии защиты информационных систем в организации

Уникальность: от 40%
Доступность: сразу
650 ₽
Готовая работа

Разработка автоматизированной информационной системы

Уникальность: от 40%
Доступность: сразу
650 ₽
Готовая работа

Технологии защиты информационных систем в организации

Уникальность: от 40%
Доступность: сразу
500 ₽
Готовая работа

Выпцскная квалификационная работа Анализ данных

Уникальность: от 40%
Доступность: сразу
2000 ₽
Готовая работа

ВКР Разработка системы по управлению рисками информационной безопасности банка

Уникальность: от 40%
Доступность: сразу
2000 ₽