Lua 是怎样一门语言?
Lua是一个简洁、轻量、可扩展的脚本语言。Lua有着相对简单的C?API而很容易嵌入应用中。很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。
Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。
它用ANSI C语言编写,并以源代码形式开放,编译后的完整参考解释器只有大约247kB,到5.4.3版本,该体积变成283kB(Linux,amd64),依然非常小巧,可以很方便的嵌入别的程序里。和许多“大而全”的语言不一样,网络通信、图形界面等都没有默认提供。
但是Lua可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。事实上,现在已经有很多成熟的扩展模块可供选用。
Lua是一个动态类型语言,支持增量式垃圾收集策略。有内建的,与操作系统无关的协作式多线程支持。Lua原生支持的数据类型很少,只提供了数值(默认是双精度浮点数,可配置)、布尔量、字符串、表格、函数、线程以及用户自定义数据这几种。
但是其处理表和字符串的效率非常之高,加上元表的支持,开发者可以高效的模拟出需要的复杂数据类型(比如集合、数组等)。
Lua是一种多重编程范型的程序设计语言:它只提供了很小的一个特性集合来满足不同编程范型的需要,而不是为某种特定的编程范型提供繁杂的特性支持。
例如,Lua并不提供继承这个特性,但是你可以用元表格来模拟它。诸如名字空间、类这些概念都没有在语言基本特性中实现,但是我们可以用表格结构(Lua唯一提供的复杂数据结构)轻易模拟。正是提供了这些基本的元特性,我们可以任意的对语言进行自需的改造。
Lua实现了少量的高级特征比如头等函数、垃圾回收、闭包、正当尾调用、强制(于运行时间在字符串和数值之间自动转换)、协程(协作多任务)和动态模块装载。
实现
Lua程序不是从文本式的Lua文件直接解释的,而是编译成字节码,接着把它运行在Lua虚拟机上。编译过程典型的对于用户是不可见并且是在运行时间进行的,但是它可以离线完成用来增加装载性能或通过排除编译器来减少对宿主环境的内存占用。
Lua字节码还可以在Lua之内产生和执行,使用来自字符串库的dump函数和load/loadstring/loadfile函数。Lua版本5.3.4是用大约24,000行C代码实现的。
像大多数CPU,而不像多数虚拟机(它们是基于堆栈的),Lua VM是基于寄存器的,因此更加类似真实的硬件设计。寄存器架构既避免了过多的值复制又减少了每函数的指令的总数。Lua 5的虚拟机是第一个广泛使用的基于寄存器的纯VM。
Parrot和Android的Dalvik是另外两个周知的基于寄存器的VM。PCScheme的VM也是基于寄存器的。
“你玩游戏吗?”“玩”“星际还是魔兽?”“连连看”。
“你会写程序吗?”“会”“C还是Java?”易语言。
当然上面只是一个段子,不过可以看出答案了吧。当然是C!
我们先来看看各类编程语言的发展史:
C++和C#的发明人都是丹麦人,母语是丹麦语。
Python的发明人是荷兰人,母语是荷兰语。
Ruby的发明人是日本人,母语是日本语。
Lua的发明人是巴西人,母语是葡萄牙语。
Pascal的发明人是瑞士人,母语估计是德语
Erlang的发明人是瑞典人。
而这些编程语言都以英语为关键字。为什么呢?
我们来看看什么是「易语言」,下面是一段来自维基百科的描述:
易语言是一门计算机程序设计语言,早期称为E语言,其最大特点是易用性和通过汉字作为程序代码进行编程。语法风格类似于VisualBasic。易语言的创始人是吴涛,他曾表示,创造易语言的初衷是进行用中文来编写程序的实践。易语言最早的版本的发布可追溯至2000年。
每一种语言的出现,都是为了解决某一典型问题!
C语言当初发明的原因是为了解决系统程序的可移植性问题,现在很多的操作系统底层都选用C来开发;
C++出现的初衷是为了满足图形界面需求,同时将面向对象思想进行各种发挥;
Java火爆是因为赶上各类中小大型企业的信息化浪潮,大量复杂任务需要更多的时间来完成。
PHP前些年的流行是因为行业需要快速的编写Web服务端程序,各类CMS层出不穷。
而Android,OC等编程语言的火爆也是站在了移动开发浪潮这一风口。
反观易语言呢?是为了解决英文障碍。显然,都已经2020年了,英文再也不可能成为绝大多数人编程道路的绊脚石,再不济我们还有各种翻译词典可用。他的出发点也许一开始就注定了他的失败。
因此,在C语言面前,我并不看好易语言。
那么易语言是不是一无是处呢?现在在哪些方向用的比较多呢?
其实经常接触按键精灵,外挂之类软件的朋友应该对易语言比较熟悉。我们可以看看致力于软件安全与病毒分析的非营利性技术论坛吾爱破解(LCG),在其编程语言版块,发帖数最活跃的居然是易语言。
所以说,对一个计算机科班出身的人来说,C语言更加的根正苗红,前景更加的广阔,而易语言,最多的只是些工具吧,商业化软件开发使用它还是很少的。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!