【CS.PL】Lua 编程之道: 简介与环境设置 - 进度8%

2024-06-12 00:20

本文主要是介绍【CS.PL】Lua 编程之道: 简介与环境设置 - 进度8%,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 初级阶段 —— 简介与环境设置

文章目录

  • 1 初级阶段 —— 简介与环境设置
    • 1.1 什么是 Lua?特点?
    • 1.2 Lua 的应用领域
    • 1.3 安装 Lua 解释器
      • 1.3.1 安装
      • 1.3.2 Lua解释器的结构
    • 1.4 Lua执行方式
      • 1.4.0 程序段
      • 1.4.1 使用 Lua REPL(Read-Eval-Print Loop)
      • 1.4.2 脚本执行文件(类似shell的.sh)
      • 1.4.3 用lua命令加载文件
      • 1.4.4 `luac`编译器

在这里插入图片描述

1.1 什么是 Lua?特点?

Lua 是一种轻量级、高效的脚本编程语言,由巴西计算机科学家 Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo 开发。它的设计目标是简单、可嵌入、可扩展,以及具有良好的性能。Lua 在很多领域都有广泛的应用,包括游戏开发、嵌入式系统、脚本编写等。

特点:

  • 高效利用 C 的性能: Lua 解释器用 C 编写,可以与 C 和 C++ 代码无缝集成,充分利用了 C 语言的高性能。它的运行环境在启动时会为 Lua 代码分配一个大的堆空间,从而提高执行效率。即c#和c++都兼容 => C进程开了一大块的堆空间, 用于跑lua代码
  • 解释性语言: Lua 是解释性语言,代码在执行时一行一行地编译和执行,这使得开发过程更加灵活和快速。即输入一行 -> 编译一行 -> 执行一行.
  • 动态类型: Lua 是动态类型语言,不需要显式声明变量类型,变量的类型由其值决定。相较于静态强类型(如 Java)和静态弱类型(如 C++)语言,Lua 在类型处理上更加灵活。
  • 垃圾回收机制: Lua 内置垃圾回收器,自动管理内存,防止内存泄漏。即GC机制.
  • 热更新: 由于其解释性和动态性,Lua 支持热更新,可以在运行时修改和更新代码,提高开发效率。即改了立马执行, 开发快, 热更新

1.2 Lua 的应用领域

Lua 在各种领域中都有丰富的应用:

  • 游戏开发: 许多游戏引擎(如 Unity、CryEngine)都支持使用 Lua 编写游戏逻辑和脚本,实现更灵活的游戏行为和交互。例如,2002 年《梦幻西游》和 2004 年《魔兽世界》都采用了 Lua 作为脚本语言,分别用于游戏逻辑和玩家插件。
  • 嵌入式系统: Lua 的轻量和易嵌入特性使其在嵌入式系统中广泛应用,用于配置、控制和脚本编写。
  • 脚本编程: Lua 可作为通用的脚本语言,用于编写自动化任务、工作流程和快速原型开发。
  • 科学计算: 一些科学计算领域使用 Lua 进行数据分析、建模和可视化。
  • 网络编程: Lua 也用于网络编程,例如在服务器端创建脚本化的网络应用。一个典型的应用是 Nginx 与 Lua 的结合(OpenResty),实现高效的服务器端开发。

e.g.客户端
2002 云风 <梦幻西游> Unreal 蓝图/lua层
2004 <魔兽世界> 脚本层 玩家侧用于修复报错的插件

e.g. 服务端:

  • nginx -> Openresty -> Lua(后端服务器开发框架): 因nginx = 1主进程 + 2进程 + 进程之间构建的线程池; 开发时通过改配置文件, 用c语言改模块
  • redis(remote distance) -> Lua原子操作
  • 生活中鼠标宏(罗技)

1.3 安装 Lua 解释器

1.3.1 安装

  • 官方 Lua: Lua 最新的官方版本是 5.4 及以上。访问 Lua 官方网站(https://www.lua.org/)下载最新版本,并按照说明进行安装。
  • LuaJIT: LuaJIT 是 Lua 的 Just-In-Time 编译版本,性能优于官方解释器,特别适用于服务端开发。它通过提前编译常用语句,提高了执行效率,运行时间越长,性能越接近 C++。即Lua JIT(**Just In Time**), 服务端, 效率比官方的高 => **把经常使用语句预编译好, 无须等到运行到语句处才编译, 运行越久与C++相比效率越接近** ==> java也有JIT机制!.
    • Windows 系统: 访问 Lua 官方网站下载 Windows 版本的 Lua 解释器(https://www.lua.org/)下载 Windows 版本的 Lua 解释器,并按照说明进行安装。,并按照说明进行安装。
    • Linux 系统: 大多数 Linux 发行版都提供 Lua 解释器的软件包。使用包管理器安装 Lua,例如:sudo apt-get install lua5.4
    • macOS 系统: 使用 Homebrew 等包管理器安装 Lua 解释器,例如:brew install lua

1.3.2 Lua解释器的结构

![[Pasted image 20230808134852.png]]

Lua 解释器的结构可以分为以下几个主要部分:

  1. 词法分析器(Lexer): 这个部分负责将源代码字符串分解为词法单元,也就是语言中的最小可识别单元,比如关键字、标识符、操作符等。词法分析器将源代码转换为一个个词法记号,以便后续的解析和执行。
  2. 语法分析器(Parser): 语法分析器接收词法记号流,将其组织成语法结构,构建一棵抽象语法树(AST)。这个树状结构表示了代码的层次结构,有助于理解代码的结构和含义。
  3. 编译器(Compiler): 编译器将抽象语法树转化为中间代码,通常是字节码。这个中间代码包含了对应的操作码以及操作数,它更接近计算机硬件执行的形式,但仍然比源代码更接近人类可读。
  4. 虚拟机(Virtual Machine): Lua 解释器的核心是虚拟机。虚拟机执行中间代码,将其翻译为实际的机器指令或者执行相关的操作。虚拟机还负责管理变量、堆栈和函数调用等运行时状态。跨平台的核心, 缺点是效率变低, 这也是类似java的, 像 c-- ==> java优化就是优化虚拟机
  5. 垃圾回收器(Garbage Collector): Lua 包含一个垃圾回收器,用于自动管理内存。它会识别不再使用的对象,释放其占用的内存,并确保没有内存泄漏。
  6. 标准库和扩展模块: Lua 附带了一套标准库,其中包含了许多常见的功能,如字符串处理、文件操作等。此外,Lua 还支持通过加载扩展模块来扩展其功能。

整个 Lua 解释器的流程大致如下:

  1. 词法分析器将源代码转换成词法记号。
  2. 语法分析器使用词法记号构建抽象语法树。
  3. 编译器将抽象语法树编译成中间代码(字节码)。
  4. 虚拟机执行中间代码,实现实际的功能。
  5. 垃圾回收器自动管理内存,防止内存泄漏。

1.4 Lua执行方式

1.4.0 程序段

Lua一个执行的基本单位叫chunk(程序段)

1.4.1 使用 Lua REPL(Read-Eval-Print Loop)

交互式解释器,读取﹣求值﹣输出循环

要启动 Lua REPL,只需打开终端并输入 lua 命令,然后按回车键。这将进入 Lua 的交互式模式,可以在其中输入 Lua 代码并按回车键执行。每次执行后,您将看到代码的输出结果。

> print("Hello, Lua!")
Hello, Lua!

1.4.2 脚本执行文件(类似shell的.sh)

hello.lua

$ !../lua表启动了lua.bin

# !/usr/local/bin/lua
print("Hello, Lua!")

执行chmod u+x hello.lua && ./hello.lua

1.4.3 用lua命令加载文件

hello.lua

print("Hello, Lua!")

==> lua hello.lua(类似python)

1.4.4 luac编译器

luac 编译器, 预编译

  • 提前编译好, 提高效率
  • 保护源代码
luac -o hello.luac hello.lua

CS.PL.1000.3-Lua
Created: 2023-08-08.Tuesday13:14

这篇关于【CS.PL】Lua 编程之道: 简介与环境设置 - 进度8%的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052669

相关文章

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变