25 comments

[ 2.9 ms ] story [ 65.7 ms ] thread
What's the point of posting this? Pointing out how small and elegant a real world language implementation can be?
Yes and the design of the source code browsing (by column).
What's a "real world language"?
A language that gets widespread usage in projects other than academic.
Another definition I could see working: a language that is used in projects bigger/more complicated that its own compiler or standard library.
Hahaha! You got me!
What's an example of a "not real language" then? I'm feeling a little hard pressed to find an academic language that is not used in industry. I always thought of Lua as academic because I associated it with Torch, but Facebook and Google are both heavy users of Torch, besides Lua has been heavily used in gaming as an embedded scripting language outside of machine learning applications.
Idris. Really interesting language exploring dependent types for practical programming, but not yet production ready.
Neovim is also working on replacing VimL with Lua (by translating VimL to Lua). I think that'll be pretty cool (you will be able to match the emacs people on having all of your configuration in a full programming language).
I'm happy with anything that gives Lua more exposure. It's a pretty language and it is so damn small, fast and embeddable.

Too many developers are using Javascript in places where Lua would be a far more appropriate option. Embedding, especially.

Why is embedding Javascript inappropriate? Duktape has a similar codesize to Lua 5.3

http://duktape.org/index.html

In my opinion, Lua is better-designed language. JavaScript has horrible parts.
I've been developing game scripts with Lua and I've professional Javascript experience so I'm familiar with both. I actually find Javascript way more readable and easier to work with in general, especially with the new additions. I mean, it's yet another anecdote but just wanted to share.
Why do you say Lua is better designed? And are you comparing classic JS or ES6 JS? I like Lua but there are some things that just annoy me like indexing an array with 1, smaller standard library, etc. I find JS implementation of inheritance, objects, and prototyping better than Lua due to its simplicity.
1. Indexing an array with 1 is unfortunate but not a bad design decision in a vacuum, eg for i=1,#size is a very easy to understand loop over valid array indexes. I'll agree that it causes cognitive load in practice.

2. JS has a somewhat broken notion of objects and Lua's implementation is far cleaner while being as powerful. How do you use a JavaScript object as a hashmap? The default try is a potential security hole.

I agree. Both JS and Lua have a pretty limited standard library, but Lua is a dead simple language with a few simple mechanics that can be used to achieve complicated concepts.

I haven't got major experience in either language, but I find it much easier to read/understand/modify a moderately sized Lua project vs real world JavaScript code.

When running Lua, always consider running it on the LuaJIT (http://luajit.org/). It's extremely fast, portable and lightweight JIT compiler for Lua, although it only supports Lua 5.1.

The performance improvements are incredible, and it allows you to write inline C code thanks to the FFI library (declaring it like this https://github.com/Mashape/kong/blob/master/kong/plugins/fil..., and invoking it like this https://github.com/Mashape/kong/blob/master/kong/plugins/fil...)

Seconded. LuaJIT FFI is just awesome. Check out the motivating examples: http://luajit.org/ext_ffi.html

BTW, does anyone have recent benchmarks comparing LuaJIT against new versions of the Javascript JITs?

You are restricted to making C declarations. You can't write inline C code. You can however can create and use C types in Lua.