Lua se destaca por encima de otras opciones.
... mejor soporte de manipulación de cadenas mientras que es fácil de integrar?
Lua es diseñado para incrustarse en C; la API es clara y fácil de usar; la documentación es excelente
Algunas otras respuestas han denigrado las capacidades de cadena de Lua. Creo que están subestimando a Lua. Las capacidades de cadena de Lua realmente encuentran un punto ideal entre "solo concatenación" y la completa complejidad de las expresiones regulares. La capacidad de formateo de cadenas es muy fuerte, y la acumulación de cadenas a través de "búferes" o tablas es simple y eficiente.
La exploración de cadenas es, en mi opinión, una de las mejores partes del diseño. No tiene "o" patrones, pero de lo contrario le da una gran fracción de lo que obtiene de las expresiones regulares, incluida una función de "captura" muy poderosa y elegante. Por ejemplo, puedo convertir una cadena en hexadecimal mediante la captura de cada personaje y la aplicación de una función a la misma:
s:gsub('.', function(c) return string.format("%02x", string.byte(c)) end)
O puedo escapar no alfanuméricos, los caracteres no-espaciales en octal:
s:gsub('[^%w%s]', function(c) return string.format([[\%03o]], string.byte(c)) end)
Algunas de las características que se exhiben aquí:
El carácter de escape para la exploración cadena es %
, que es diferente del carácter de escape para comillas de cadena, que es \
. Esta decisión es brillante y debe ganar un premio por sí mismo :-)
Existen varios mecanismos para citar las cadenas literales, incluyendo [[...]] en la que hay personajes tienen que ser escapado. Si quieres generar o unir cadenas con barras invertidas en ellas (como LaTeX, por ejemplo), esto es un regalo del cielo.
Si usted quiere todo el poder de un programa de análisis independiente del contexto, siempre se puede utilizar LPEG, una biblioteca escrita por uno de los diseñadores de Lua.
rendimiento es bastante importante (sobre todo el tiempo de inicio)
Lua constantemente gana premios por rendimiento. El inicio es muy rápido: todo el sistema (incluidos el compilador, la biblioteca, el recolector de basura y el sistema de tiempo de ejecución) se ajusta a 150 KB. Para evitar tiempos de pausa, Lua proporciona una recolección de basura incremental. Ver también la pregunta SO Why is Lua faster than other scripting languages?
Usted puede hacer que el inicio más rápido de la precompilación de las secuencias de comandos, pero nunca he encontrado que es necesario hacer este código — y debido compilado (en contraposición al código fuente) no es portátil, la compilación previa generalmente crea más dolor de cabeza de lo que resuelve.
Necesidades fácilmente ser compilados en múltiples plataformas
Lua compila utilizando pura ANSI C y ni siquiera requiere POSIX. Tengo una versión ejecutándose en mi PalmOS PDA.
Tiene que ser un idioma que seguirá existiendo dentro de 5 años.
Lua existe desde 1993. Además, los dos miembros del equipo que brindan más apoyo son profesores titulares de PUC-Rio. Lua es su sustento. Finalmente, todo el sistema es solo 17,000 líneas de código. Si Rio se cayó del mapa mañana, cualquiera con un buen curso de compilación de pregrado podría elegir el sistema y mantenerlo. Habría muchos voluntarios.
He mirado un poco a Python y Lua, pero realmente no sé lo suficiente sobre ellos
ver que cuestionan Which game scripting language is better to use: Lua or Python?.
Pero no es para nada fácil de integrar dentro de un programa C por lo que entiendo. ¿Sabes diferente? –
Nunca lo intenté, personalmente no he usado C/C++ mucho más allá de "Hello World". Sí, conozco al menos un proyecto de código abierto (creo que C++) que sí lo integra, si quieres explorar y ver cómo se hace. –
Sí, ¿cómo se llama? –