Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Example usage where Lua fits much better than C/C++ [closed]

Tags:

c++

c

lua

I'm currently embedding Lua and using it as a glorified intelligent config file. However, I think I'm missing something since people rave about the uses of Lua.

For example, I can easily explain why you might use shell scripting instead of C by showing this example (admittedly , boost regexp is overkill):

#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);

and compare it to:

for foo in *.cpp; do echo $foo; done;

Are there any examples that you can give in Lua which can make it 'click' for me?

EDIT: Maybe my problem is that I don't know Lua well enough yet to use it fluently as I'm finding it easier to write C code.

EDIT2:

One example is a toy factorial program in C++ and 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))

Here, the programs look alike, but there's clearly some cruft in the include, namespace and main() declarations you can get rid of. Also remove variable declarations and strong typing.

Now are people saying this is the advantage which adds up over a larger program, or is there more to it? This doesn't stand out in the same way as the bash example.

like image 998
bugmenot77 Avatar asked Jun 02 '09 17:06

bugmenot77


People also ask

Is Lua faster than C?

As documented here, Lua is implmented in C. It can only be as fast as C, but is more likely to be slower. It can't be faster than the language of its own implementation. As long as the C code is fully optimized and uses the most appropriate algorithms.

Is Lua close to C?

Lua is implemented as a library, written in clean C, the common subset of Standard C and C++.

What is Lua best for?

As the primary focus on Lua is for scripting, it is rarely used as a standalone programming language. Instead, it is used as a scripting language that can be integrated (embedded) into other programs written in mainly C and C++. It also supports other programming languages via third-party plugins (NLua/KeraLua for .

Does anyone use Lua anymore?

While Lua is still used fairly often in gaming and web service, it performed poorly in terms of community engagement and job market prospects. That being said, in spite of its age, Lua's growth has flat-lined rather than declined, which means that although it's not popular, it's not dying either.


1 Answers

Using a scripting language such as Lua has many other benefits.

A couple of advantages to Lua vs. C++:

  • It's often shorter in terms of development time due to the high-level nature, as in your example.
  • It doesn't require recompilation to change behavior.
  • Behavior can be changed on non-development machines.
  • Prototyping is very fast and easy, since you can just tweak logic at runtime.
like image 117
Reed Copsey Avatar answered Sep 30 '22 21:09

Reed Copsey