学习Lua的意义

1.Lua简介

           

  (1) 1993年、巴西

(2) 小巧精致的脚本语言,大小只有200K

(3) 用标准C语言写成,能够在所有的平台上编译运行

(4) 发明的目标是嵌入在C/C++中,为应用程序提供灵活的扩展和定制功能

(5) 不适合用于开发独立的应用程序

2.Lua产生的原因

C/C++工程中有大量的业务逻辑,而业务逻辑经常发生改变,这就需要更改源代码。由于C/C++是编译型语言,源码一旦改变就需要重新编译整个工程,在面对代码量很大的工程时需要耗费大量的时间。因此产生了一种想法:将经常改动的业务逻辑层用无需编译的脚本语言编写,将解释器以代码级别集成到C/C++工程中,这样在发布软件时只需提供一份脚本即可,无需编译整个工程。

3.Lua的应用领域

—— 嵌入式开发 & 游戏开发

  • 嵌入式开发
(1) 嵌入式开发常面临资源受限的情况,而Lua解释器只有200K
 
(2) Lua解释器是速度最快的搜索引擎,与C/C++语言无缝衔接
  • 游戏开发

(1) 游戏的业务逻辑经常发生改变

(2) 游戏的核心库对硬件的要求很高,Lua偶很高的执行效率

(3) 游戏开发的首选语言是C/C++

(4) Lua易于扩展,由项目自定义核心库,如网络通信、图形界面等

4.Lua和Python的对比

 

5.Lua工程应用的模式

6.典型嵌入式系统架构

  Lua工作在业务逻辑层,可以很方便的更改业务逻辑。
 
 
 
注:本文整理于《狄泰12月提升计划》课程内容
 

第1课 - 学习Lua的意义的更多相关文章

  1. 第1课 - 学习 Lua 的意义

    第1课 - 学习 Lua 的意义 1.Lua 简介 (1) 1993年.巴西 (2) 小巧精致的脚本语言,大小只有 200K (3) 用标准C语言写成,能够在所有的平台上编译运行 (4) 发明的目标是 ...

  2. 第1课 学习 C++ 的意义

    1.  回顾历史 (1)UNIX操作系统诞生之初是直接用汇编语言写成的.随着UNIX的发展,汇编语言的开发效率成为一个瓶劲. (2)1971年,Ken Thompson和Denis Ritchie对B ...

  3. 第1课 学习C++的意义

    C++是C语言的加强,它们之间并不是对立的关系. 学习C++的优势: 现代软件产品的架构图: 操作系统抽象层:可有可无,但是作为一个移植性好的软件一定需要这一层.这一层的作用就是把操作系统提供的接口做 ...

  4. JavaEE精英进阶课学习笔记《博学谷》

    JavaEE精英进阶课学习笔记<博学谷> 第1章 亿可控系统分析与设计 学习目标 了解物联网应用领域及发展现状 能够说出亿可控的核心功能 能够画出亿可控的系统架构图 能够完成亿可控环境的准 ...

  5. Python第十课学习

    Python第十课学习 www.cnblogs.com/yuanchenqi/articles/5828233.html 函数: 1 减少代码的重复 2 更易扩展,弹性更强:便于日后文件功能的修改 3 ...

  6. Python第九课学习

    Python第九课学习 数据结构: 深浅拷贝 集合set 函数: 概念 创建 参数 return 定义域 www.cnblogs.com/yuanchenqi/articles/5782764.htm ...

  7. Python第八课学习

    Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...

  8. 学习C++的意义

    1,常见的观点: 1,并不是每个应届生都有机会写操作系统和驱动程序: 2,嵌入式系统也是软家系统,只不过是软件在出厂的时候已经被烧写到硬件中了,用户没有办法修改软件而已,因此嵌入式系统也是软件系统,C ...

  9. 第2课 - 搭建Lua开发环境

    第2课 - 搭建Lua开发环境 1. Lua 的优点 (1)Lua 使用标准的 ANSI C 进行开发,可以无缝集成到宿主程序,且几乎支持所有平台. (2)Lua 是开源且免费的软件,以源码的方式直接 ...

随机推荐

  1. mongodb c api编译

    1. autoconf-latest.tar.gz http://ftp.gnu.org/gnu/autoconf/ tar xzvf autoconf-latest.tar.gz ./configu ...

  2. 获取博客积分排名,存入数据库,读取数据进行绘图(python,selenium,matplotlib)

    该脚本的目的:获取博客的排名和积分,将抓取时间,排名,积分存入数据库,然后把最近的积分和排名信息进行绘图,查看积分或者排名的变化情况. 整个脚本的流程:是利用python3来编写,利用selnium获 ...

  3. echarts动态添加数据(饼图为例)

    $.ajax({type : "POST",async : false,url : '${ctx}/basic/bsAllPictureGuarantee/pictJson',da ...

  4. 浅析=======Struts2之==========valueStack

    今天刚学习了struts2的valueStack,在这里把自己学到的做个分享,说道valueStack就不得不提OGNL表达式=== struts2工作流程 1.OGNL(Object Graph N ...

  5. x86主机搭建家庭智能路由系统 ---- Proxmox虚拟化实现一机多用

    Proxmox VE简介 Proxmox VE(Proxmox Virtual Environment) 是一款完全开源虚拟化管理平台,可以管理QEMU/KVM虚拟机和LXC容器.事实上它只是一个前端 ...

  6. 给 Qt 添加模块

    添加 Qt 模块 QtCanvas3D 由于需要使用 Qt Quick 进行 3D 绘图,因此在网上找了一些资料. JS 绘制 3D 的有 ThreeJS 库,应该可以用于 QML.继续搜索,发现Qt ...

  7. Spring Boot启动过程(五):Springboot内嵌Tomcat对象的start

    标题和上一篇很像,所以特别强调一下,这个是Tomcat对象的. 从TomcatEmbeddedServletContainer的this.tomcat.start()开始,主要是利用Lifecycle ...

  8. STM32F103RC进入串口3接收中断产生HardFault_Hander问题解决!

    最近在以前的项目上添加串口3通讯后,程序一进入接收中断后就产生HardFault_Hander.串口3发送数据一切正常,当打开串口3接收功能时,程序就处于HardFault_Hander状态,而导致死 ...

  9. php函数的使用

    <?php header("Content-type:text/html; charset=utf-8"); //普通函数 echo "<br/>--- ...

  10. 通过hue提交oozie定时任务

    Oozie是什么? Oozie是一种Java Web应用程序,它运行在Java servlet容器——即Tomcat——中,并使用数据库来存储以下内容: 工作流定义 当前运行的工作流实例,包括实例的状 ...