Actualmente estoy incorporando Lua y usándolo como un archivo de configuración inteligente glorificado. Sin embargo, creo que me falta algo, ya que la gente se entusiasma con los usos de Lua.Ejemplo de uso donde Lua se adapta mucho mejor que C/C++
Por ejemplo, puedo explicar fácilmente por qué es posible utilizar secuencias de comandos shell en lugar de C, mostrando este ejemplo (la verdad, impulso expresión regular es una exageración):
#include <dirent.h>
#include <stdio.h>
#include <boost/regex.hpp>
int main(int argc, char * argv[]) {
DIR *d;
struct dirent *dir;
boost::regex re(".*\\.cpp$");
if (argc==2) d = opendir(argv[1]); else d = opendir(".");
if (d) {
while ((dir = readdir(d)) != NULL) {
if (boost::regex_match(dir->d_name, re)) printf("%s\n", dir->d_name);
}
closedir(d);
}
return(0);
y compararlo con:
for foo in *.cpp; do echo $foo; done;
¿Hay algún ejemplo que puedas dar en Lua que pueda hacer que 'haga clic' en mi nombre?
EDIT: Quizás mi problema es que aún no conozco a Lua lo suficiente como para utilizarlo con fluidez ya que me es más fácil escribir el código C.
Edit2:
Un ejemplo es un programa factorial juguete en C++ y Lua:
#include <iostream>
int fact (int n){
if (n==0) return 1; else
return (n*fact(n-1));
}
int main(){
int input;
using namespace std;
cout << "Enter a number: " ;
cin >> input;
cout << "factorial: " << fact(input) << endl;
return 0;
}
Lua:
function fact (n)
if n==0 then
return 1
else
return n * (fact(n-1))
end
end
print ("enter a number")
a = io.read("*number")
print ("Factorial: ",fact(a))
Aquí, los programas se parecen, pero hay claramente algunas cruft en las declaraciones include, namespace y main() de las que puede deshacerse. También elimine declaraciones de variables y tipeo fuerte.
¿Ahora las personas dicen que esta es la ventaja que se suma a un programa más grande, o hay más que eso? Esto no se destaca de la misma manera que el ejemplo de bash.
Duplicado de http://stackoverflow.com/questions/591523/when-is-it-good-to-use-embedded-script-language-like-lua? –
Aprender otros lenguajes de programación te hará un mejor programador. Aprende a pensar diferente, incluso en C. – 0x6adb015
El duplicado cercano se está acercando al mismo tipo de pregunta desde una dirección diferente. Los enlaces cruzados son buenos, pero yo no veo esto como un duplicado "exacto". – RBerteig