lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On Tue, Jun 17, 2014 at 5:26 PM, Tim Hill <> wrote:

On Jun 17, 2014, at 10:04 AM, Leinen, Rick <> wrote:

> Thanks for your reply Sean.
> Yes, I know Lua typically starts arrays with a 1.  Old habits die hard. :-)  I put the nil assignment there as a flag.  Maybe that's not necessary.  I'll explore that.
> Yes, creating the table in C is more work.  I have a couple of reasons for exploring this option.
>       1) Lua is new to our company.  We are hoping that it will allow us to place the functionality of the product in a Lua script rather than hardcoded in C/C++. This will make it much easier to change or add functionality, even in the field.  As a result, there may be occasion where our field service engineers may make modifications.  Since none of the staff are coding experts, I want to hide as much of the nitty-gritty stuff as possible.  That is the reason I would like to lock the members of the table.  Less chance for mistakes.
>       2) The Kinetis microcontroller I am targeting has 1MB of internal flash and 256KB of internal SRAM.  Neither is a lot, but I have much more flash.  By defining the table in C, I am hoping that I will be using less RAM since the Lua script will be smaller.  This may prove out to be negligible, but that is the thinking at the time.
> I'll have to study your suggestions a bit, as I am fairly new to Lua, especially the C side.
> Thanks again,
> Rick Leinen
> Engineering Manager, R&D Projects
> Lighting and Energy Solutions
> T: 503 404-5561 F: 503 404-5661 C: 503 860-6305

Couple of things to note. Byte-for-byte, compiler Lua code is very compact. You might find the Lua code to build the table is smaller than the equivalent C code. As others have noted, you might be better served by validating the table when passed to a C function, rather than trying to lock it down proactively (again, probably less code overall to do this).


I understand the sentiment of the OP. When we started to write our first Lua C-API code, we wrote way too much in C. As time has gone on, we've replaced all of that. It's much easier to build up models and abstractions in Lua and it does not make any difference, for speed. 

It is hard to let go. It was also hard for our C++/C guy to really *get* the dynamic stuff. He would error when I set an unexpected value on a table, for example. 

We've fallen into a nice routine where he is working in C and I'm in Lua and we both end up learning valuable things about the interactions between the two.