
Definimos LUA como un lenguaje de scripting embebido (o empotrado), poderoso, rápido y ligero. Lua posee tipado dinámico, se ejecuta interpretándolo a bytecode para una máquina virtual, y tiene manejo automático de la memoria con “recolector de basura” incremental, haciéndolo ideal para configuraciones, scripting, y prototipo rápido.
Lua es un lenguaje de programación imperativo y estructurado, bastante ligero que fue diseñado como lenguaje de script con una semántica extendible. En portugués y en gallego, Lua significa luna.
Lua fue creado en 1993 por Roberto Ierusalimschy, Luis Henrique de Figueiredo y Waldemar Celes, miembros del Grupo de Tecnología en Computación Gráfica (Tecgraf) en la Pontificia Universidad Católica de Río de Janeiro . Las versiones de Lua anteriores a la 5.0 fueron distribuidas bajo una licencia similar a la BSD, de la versión 5.0 en adelante se utiliza la licencia MIT, compatible con la GPL.
Lua ha sido usado en muchas aplicaciones comerciales y no comerciales, las cuales incrementan cada año.
Un concepto fundamental en el diseño de Lua, es proveer un meta-mecanismo para implementar características, en vez de acogerlas directamente en el lenguaje. Por ejemplo, aunque Lua no es un lenguaje puro orientado a objetos, provee meta-mecanismos para la implementación de clases y herencia. Los meta-mecanismos de lúa, trae una economía de conceptos, y conserva un lenguaje pequeño, mientras permite que la semántica sea extensible de maneras no convencionales.
Es un lenguaje imperativo y estructurado, que fue diseñado bajo las premisas de la simpleza y la eficiencia, con el objetivo de extender aplicaciones (hoy en día es muy usado como lenguaje de scripting dentro de las aplicaciones). Al ser creado, se lo pensó para ser integrado al lenguaje C, por lo que se trata de no reescribir lo que es posible realizar mediante este lenguaje. Se incorpora a C mediante una librería 100% ANSI compatible, por lo que funciona en prácticamente todas las plataformas actuales.
Las variables no tienen tipo, por lo que es un lenguaje tipado dinámicamente. Hay una única estructura de datos, que es la tabla, que puede ser usada para definir matrices, conjuntos, tablas hash, listas, etc. Es frecuentemente utilizado como un lenguaje de uso genérico, ya combina programación procedural (con sintaxis semejante a la de Pascal) con construcciones poderosas para la descripción de datos basadas en tablas asociativas y en semántica extensible. Es interpretado a partir de bytecodes y posee recolección automática de basura.
Lua es un lenguaje dinámicamente tipado. Esto significa que las variables no tienen tipos; sólo tienen tipo los valores. No existen definiciones de tipo en el lenguaje. Todos los valores almacenan su propio tipo.
Todos los valores en Lua son valores de primera clase. Esto significa que todos ellos pueden ser almacenados en variables, pueden ser pasados como argumentos de funciones, y también ser devueltos como resultados.
Lua, es un lenguaje robusto más que probado, rápido, portable, empotrable (como me duele esta palabra), potente pero simple, pequeño (ligero), y libre (as speech, not as a beer).
Referente a lo portable, la verdad es que el código fuente de LUA, ocupa 200KB, y es compilable en cualquier sitio donde haya un compilador ANSI C (móviles, windows y todos los sabores UNIX, etc.…), y ligero, pues, mi carpeta de pruebas con LUA, con los binarios, la documentación, ejemplos y demás, 1,78MB. Obviamente, no podemos hacer de todo, ya que, ese 1,78MB es el conjunto del intérprete y librerías base.
En su web, nos ponen un resumen de lo que digamos, son los proyectos más importantes o conocidos que usen LUA, entre los que caben destacar por ejemplo World Of Warcraf, y Warhammer Online, en el que es usado para construir la interfaz, Adobe PhotoShop Lightroom, donde dicen que el 40% está desarrollado en LUA, o un servidor web empotrado llamado Barracuda, entre otros muchos proyectos, algunos bastante conocidos.
Siendo un lenguaje de extensión, Lua no tiene noción de programa principal (main): sólo funciona embebido en un cliente anfitrión, denominado programa contenedor o simplemente anfitrión (host). Éste puede invocar funciones para ejecutar un trozo de código Lua, puede escribir y leer variables de Lua y puede registrar funciones C para que sean llamadas por el código Lua. A través del uso de funciones C, Lua puede ser aumentado para abarcar un amplio rango de diferentes dominios, creando entonces lenguajes de programación personalizados que comparten el mismo marco sintáctico. La distribución de Lua incluye un programa anfitrión de muestra denominado lua, que usa la biblioteca de Lua para ofrecer un intérprete de Lua completo e independiente.
Lua es software libre, y se proporciona, como es usual, sin garantías, como se establece en su licencia. La implementación descrita en este manual está disponible en el sitio web oficial de Lua
Existen ocho tipos básicos en Lua: nil, boolean, number, string, function, userdata, thread y table. Nil es el tipo del valor nil, cuya principal propiedad es ser diferente de cualquier otro valor; normalmente representa la ausencia de un valor útil. Boolean es el tipo de los valores false (falso) y true (verdadero). Tanto nil como false hacen una condición falsa; cualquier otro valor la hace verdadera. Number representa números reales (en coma flotante y doble precisión). (Es fácil construir intérpretes de Lua que usen otra representación interna para los números, ya sea en coma flotante con precisión simple o enteros largos. String representa una tira de caracteres. Lua trabaja con 8 bits: los strings pueden contener cualquier carácter de 8 bits, incluyendo el carácter cero ('\0') .
Los nombres (también llamados identificadores) en Lua pueden ser cualquier tira de caracteres (string) sólo con letras, dígitos y caracteres de subrayado (underscore), no comenzando por un dígito. Esto coincide con la definición de los nombres en la mayoría de los lenguajes. (La definición de letra depende de la implementación local actual a través del sistema locale: cualquier carácter considerado alfabético en el sistema local puede ser usado en un identificador.) Los identificadores se usan para nombrar variables y campos de tablas.
Las siguientes palabras clave (keywords) están reservadas y no pueden usarse como nombres:
and break do else elseif
end false for function if
in local nil not or
repeat return then true until while
En Lua las letras mayúsculas y las minúsculas se consideran diferentes: and es una palabra reservada, pero And y AND son dos nombres diferentes válidos. Como convención, los nombres que comienzan por un subrayado seguido por letras en mayúsculas (como _VERSION) están reservados para uso como variables globales internas de Lua.
Los strings literales pueden ser delimitados por comillas simples (apóstrofes) o dobles, y pueden contener las siguientes secuencias de escape de C: '\a' (pitido, bell) '\b' (retroceso, backspace), '\f' (salto de página, form feed), '\n' (nueva línea, newline), '\r' (retorno de carro, carriage return), '\t' (tabulador horizontal, horizontal tab), '\v' (tabulador vertical, vertical tab), '\\' (barra inversa, backslash), '\"' (comilla doble, quotation mark o double quote) y '\'' (apóstrofe, apostrophe o single quote). Además, una '\newline' (esto es, una barra inversa seguida por un salto de línea real) produce un salto de línea en el string. Un carácter en un string puede también especificarse por su valor numérico usando la secuencia de escape '\ddd', donde ddd es una secuencia de tres dígitos decimales. (Tenga presente que si la secuencia numérica de escape está seguida de un dígito debe ser expresada usando exactamente tres dígitos.) Los strings en Lua pueden contener cualquier valor de 8 bits, incluyendo el carácter cero, el cual puede ser especificado mediante '\0'.
Para poner una comilla (simple) doble, una barra inversa, un retorno de carro o un carácter cero dentro de un string literal encerrado por comillas (simples) dobles se debe usar una secuencia de escape. Cualquier otro carácter puede ser incluido en el literal. (Algunos caracteres de control pueden causar problemas con el sistema de ficheros, pero Lua no tiene problemas con ellos.)
Características
Lua se describe comúnmente como una "multi-paradigma" el idioma, la prestación de un pequeño conjunto de características generales que se puede extender para adaptarse a diferentes tipos de problema, en lugar de ofrecer una más compleja y rígida especificación de un partido único paradigma. Lua, for instance, does not contain explicit support for inheritance , but allows it to be implemented relatively easily with metatables. Lua, por ejemplo, no contiene un apoyo explícito a la herencia, pero le permite ser aplicado con relativa facilidad con metatablas. Similarly, Lua allows programmers to implement namespaces , classes , and other related features using its single table implementation; first-class functions allow the employment of many powerful techniques from functional programming ; and full lexical scoping allows fine-grained information hiding to enforce the principle of least privilege . Del mismo modo, Lua permite a los programadores aplicar de nombres, clases, y otras características relacionadas con el uso de su única tabla de aplicación; de primera clase funciones permiten el empleo de técnicas de muchos poderosos de la programación funcional y completo léxico de alcance permite de grano fino ocultar información para hacer cumplir el principio menos de privilegio.
In general, Lua strives to provide flexible meta-features that can be extended as needed, rather than supply a feature-set specific to one programming paradigm. En general, Lua se esfuerza por proporcionar flexible meta-funciones que puede ampliarse según sea necesario, en lugar de la oferta un juego de características específicas de un paradigma de programación. As a result, the base language is light —in fact, the full reference interpreter is only about 150 kB compiled— and easily adaptable to a broad range of applications. Como resultado, la base de la lengua es la luz-de hecho, la referencia completa intérprete sólo está a unos 150 kB compilado y fácilmente adaptables a una amplia gama de aplicaciones.
Lua is a dynamically typed language intended for use as an extension or scripting language , and is compact enough to fit on a variety of host platforms. Lua es un lenguaje escrito dinámicamente destinados a ser utilizados como una extensión o lenguaje de scripting, y es lo suficientemente compacto como para caber en una variedad de plataformas de acogida. It supports only a small number of atomic data structures such as boolean values, numbers (double-precision floating point by default), and strings . Tan sólo un pequeño número de estructuras de datos atómicos, tales como valores booleanos, números (de doble precisión de punto flotante por defecto), y cuerdas. Typical data structures such as arrays , sets , hash tables , lists , and records can be represented using Lua’s single native data structure, the table, which is essentially a heterogeneous map . Típica estructuras de datos tales como arreglos, conjuntos, tablas hash, listas y registros pueden ser representados utilizando Lua la única estructura de datos nativa, la mesa, que es esencialmente un heterogéneo mapa.
Lua has no built-in support for namespaces and object-oriented programming. Lua no tiene un apoyo de nombres y de programación orientado a objetos. Instead, metatable and metamethods are used to extend the language to support both programming paradigms in an elegant and straight-forward manner. En lugar de ello, metatabla y metamethods se utilizan para extender la lengua para apoyar a ambos paradigmas de programación en un elegante y recto hacia adelante de forma.
Lua implements a small set of advanced features such as first-class functions , garbage collection , closures , proper tail calls , coercion (automatic conversion between string and number values at run time), coroutines (cooperative multitasking) and dynamic module loading. Lua lleva a cabo un pequeño conjunto de características avanzadas tales como tratamiento de primera clase de funciones, la recolección de basura, los cierres, una cola de llamadas, la coacción (conversión automática entre la cadena y número de valores en tiempo de ejecución), coroutines (multitarea cooperativa) y la carga de módulos dinámicos.
By including only a minimum set of data types, Lua attempts to strike a balance between power and size. Al incluir sólo un conjunto mínimo de tipos de datos, Lua intentos de lograr un equilibrio entre el poder y tamaño.
Lua es un lenguaje de extensión, suficientemente compacto para usarse en diferentes plataformas. En lua las variables no tienen tipo, sólo los datos y pueden ser lógicos, enteros, números con punto flotante o cadenas. Estructuras de datos como matrices, conjuntos, tablas hash, listas y registros pueden ser representadas utilizando la única estructura de datos de Lua: la tabla.
La semántica de Lua puede ser extendida y modificada redefiniendo funciones de las estructuras de datos utilizando metatablas. Lua ofrece soporte para funciones de orden superior, colector de basura. Combinando todo lo anterior, es posible utilizar Lua en programación orientada a objetos.
Algunas de sus características más sobresalientes son:
Extensibilidad: Lua fue concebido para ser extendido. Su núcleo es muy pequeño y crear librerías para él es muy sencillo.
Simplicidad: Lua es simple y pequeño. La librería de enlace dinámico de Lua 5 ocupa aproximadamente solo 50 Kb.
Eficiencia: Su motor es muy eficiente y rápido, más rápido que el de muchos otros lenguajes.
Portabilidad: Al estar programado en ANSI C, se puede compilar en prácticamente cualquier plataforma.
Funcionamiento interno
Los programas en Lua no son interpretados directamente, sino compilados a código bytecode, que es ejecutado en la máquina virtual de Lua. El proceso de compilación es normalmente transparente al usuario y se realiza en tiempo de ejecución, pero puede hacerse con anticipación para aumentar el rendimiento y reducir el uso de memoria al prescindir del compilador. También es posible la Compilación JIT utilizado LuaJIT
9 comentarios:
Excelente tu página web Dario y bien guapo en tu foto chao.
Prof. Jose Tejeira
Muy bien. A prepararse para la presentacion del miércoles 26 de noviembre.
me encanto tu pagina, buena informacion ademas que saliste muy guapo en la foto.
hola mi rey buena, hay que acerle unos pequeños ajustes, pero buena.. te felicito.
Esta bien el blog.., pero arrega letra que combine con fondo ... que casi alguna funciones no se puede apreciar.... sigue asi mejorando la pagina web
el mismo bid dario respet............
hola soy de la latina de penonome
esta chevere tu blog
ponle mas imagenes
chauuuu :)
tiene bastante información y esta bastante decente, pero... lo veo algo monotono (ULAT)
dario tu bog esta muy raro ese color q le pusistes es como de satanismo, pero la imformaciòn esta cool le faltan mas imagenes sobre el tema.(consejo cmbia ese color antes q todos se asusten)...........???????
"tatatiiiiiiiiiii"
u.latina
Publicar un comentario