tutorial programacion lenguaje español lua language-design

español - lenguaje de programacion lua pdf



¿Lua se basa principalmente en ideas de lenguaje de programación bien establecidas? (5)

Lua ocupa un buen lugar en el espacio de idiomas que pueden integrarse. ¿Son las ideas principales detrás del diseño de Lua las nuevas ideas de los implementadores, o Lua es principalmente una combinación bien ejecutada de ideas bien establecidas?

La comparación de las propiedades y características de Lua con otros PL es particularmente apropiada.


Creo que esto se debe a que Lua es relativamente simple y pragmático. No intenta ser el lenguaje para construir el siguiente sistema operativo, Crysis 3 o un clon de SAP, pero lo que hace, lo hace bien, es decir, sirve como lenguaje de scripting.


Esta es una pregunta muy interesante. Mi trabajo diario es estudiar lenguajes de programación, y Lua pagará un estudio cuidadoso. Diría eso sobre muy pocos otros idiomas (quizás Icon y CLU). Tenga en cuenta que es el idioma en su conjunto , no las características individuales, lo que hace que Lua sea tan digno de estudio.

¿Es esto resultado de nuevas ideas interesantes que tuvieron los implementadores, o es el resultado de una buena ejecución de ideas bien establecidas?

Ambos. Para los detalles, su mejor fuente para una respuesta a esta pregunta es el documento The Evolution of Lua , que apareció en el Tercer Simposio de ACM sobre la Historia de los Lenguajes de Programación. Pero agregaré algunos comentarios.

  • El uso de tablas de Lua como el único tipo de datos mutable y no atómico fue inventado por el equipo de Lua. Se inspiraron en los desarrollos de CLU, y creo que estaban al tanto de trabajos similares en Awk e Icon, pero el refinamiento de este grado es una contribución importante del equipo de Lua.

    Las tablas también tienen una implementación muy eficiente, que fue inventada por el equipo de Lua.

  • Las características funcionales de Lua tienen la misma semántica que Scheme, pero Lua tiene una implementación única de funciones de primera clase, que creo que deberían enviar para su publicación en el Journal of Functional Programming .

  • La API para incrustación se ha refinado en gran medida a lo largo de los años. Su principal característica distintiva es que los tipos abstractos definidos por el usuario pueden participar plenamente en la incrustación. Esta es la propiedad que hace que la API Lua sea superior a la API Tcl, por ejemplo. La API de Lua ha sufrido una gran cantidad de refinamiento en los últimos años, incluso desde su primera publicación en la versión 2.5. Los diseñadores de Lua merecen un gran crédito aquí.

  • La tecnología de recolección de basura es estándar.

  • Las corutinas Lua representan una nueva versión de algunas ideas muy antiguas. La nueva toma fue considerada digna de publicación en ACM Transactions on Programming Languages ​​and Systems , así que de nuevo creo que el equipo de Lua obtiene crédito por su originalidad.

  • Los metatablas Lua están relacionados con el protocolo de metaobjetos Common Lisp.

Creo que el éxito de Lua se debe a una combinación única de fortalezas del equipo de Lua:

  • Si lees el documento de HOPL , verás que el equipo de Lua conocía muchos desarrollos en los lenguajes de programación y pudo elegir entre las mejores ideas. La mayoría de los diseñadores de lenguajes de scripting populares han sido aficionados y no han estado tan bien informados.

  • Lua está magníficamente diseñado para que las piezas se combinen muy bien, con una excelente relación potencia-peso. Este es el resultado de una gran cantidad de refinamiento en el tiempo, y PUC-Rio estaba dispuesta a que el equipo de Lua trabajara en el diseño del lenguaje y la implementación en lugar de preparar una gran cantidad de documentos. Este trabajo no pudo haber sido hecho en una universidad norteamericana.

  • Lua está magníficamente diseñado . La implementación es asombrosamente buena. Eso es en parte un gran trabajo de grandes ingenieros y en parte la oportunidad de seguir revisando el diseño durante un período de 15 años.

Cerraré pidiendo a los lectores que no subestimen la dificultad de elegir y refinar ideas bien establecidas para formar un todo coherente. Este es un trabajo extremadamente difícil y rara vez se reconoce como debería ser.


Hay una historia de Lambda the Ultimate, Small is Beautiful: el diseño de Lua , sobre la reciente charla de Robert Ierusalimschy en Stanford del mismo nombre. La discusión actualmente se enfoca en los méritos de tener tablas como la única estructura de datos del contenedor; hasta ahora, poco se ha dicho en la otra parte de la charla, que trata sobre la interfaz C de Lua.


Lua es pequeña, el código total es solo decenas de miles de líneas en ANSI C. (Python tiene líneas de código diez veces más).

Lua es muy estable, o digamos, el lenguaje está arreglado ahora.

Lua tiene buena ingeniería. Su código es fácil de leer y piratear. (también porque es pequeño)

Su licencia le permite hacer lo que quiera.

Escribir extensiones C en Lua es más fácil que en otros lenguajes, por ejemplo, Python.


Lua compatible con la programación funcional y se basa en el estilo de programación basado en Prototype-based , que es flexible y potente.

OMI es un lenguaje interesante.

Si quieres leer algunos pensamientos sobre la herencia del prototipo, te sugiero que
lea la publicación del blog The Universal Design Pattern de Steve Yegge.