Lua is crazily good, and one of my favourite games, Tales of Maj'Eyal (
http://te4.org/), is written almost entirely in Lua. The tables are amazing concept for data representation, and syntax is so flexible, you'll probably find yourself twisting it sooner or later. Obviously, it has some dark corners, like the "local" word (why not the other way around? Why?), but all in all, it's pretty fun and fast, thanks to JIT.
PatriotBob wrote:Name something that is new to programming languages from the last decade.
For the record: C was invented
four decades ago. Time flies fast. Amazingly, it wasn't that much of an innovation, but a child of its ancestor, BCPL. C was, I think, the first one to bring complex types to the table, but that's about the only innovation it got. It is still widely used (as a reference point, too) thanks to UNIX, and C calling convention which is simple to interface with.
Dynamic typing was pretty innovating, although you can say that LISP got it. The whole object-oriented buzz (originated in Smalltalk, 1970s, after C) was pretty big deal. Modules, which allow to organize code, originated in Modula-2, late 1970s. Portability, originated somewhere in 1990s, and still present in most popular PLs in one or another form. Haskell, The Revolutional Language that raised rapid interest to functional programming, of which all modern languages reap benefits: first-class functions, closures, templates, lambdas, released in 1985. Just-in-time compilation, which bloomed on the corpse on Self and in the Java Virtual Machine, saving our disk space
and our time, in 1999. Read-eval-print loop, the glory of which will penetrate the centuries, as will the shame of languages who still don't have them (cannot pinpoint its birth, but probably Haskell). LINQ, an amazing concept by Microsoft, and its blood brother, list expressions, for non-.NET languages. Coroutines, and concurrency support in general, a solution to many deadlock and stall situation. Generators, which allow saving the state for later without any fuss. Transactional memory, which is yet to bloom, but is already firmly standing on its legs. Laziness, introduced back in 1976. Distributed programming and its angel, Erlang. If it's still not enough, tell me, I'll come with more.
The last decade brought us:
- further development of functional programming, metaprogramming, concurrency and distributed programming. Yes, development is "something new";
- reflection, reification and metaprogramming at its finest;
- researches on massive parallelism;
- breakthroughs in JIT and aforementioned transactional memory;
- Unicode;
- Rust, with its hardcore type inference, the notion of variable lifetime, and unique types.
That's ones Im presonally intereseted in.