Lua
- Aesthetic Geometry
- 7 out of 10
- Mathematical Elegance
- 5 out of 10
- Linguistic Clarity
- 6 out of 10
- Practitioner Happiness
- 6 out of 10
- Organic Habitability
- 7 out of 10
- Conceptual Integrity
- 7 out of 10
- Total
- 38 out of 60
Character
The compact Swiss army knife that fits in any pocket. Lua is so small and embeddable that it powers everything from World of Warcraft to nginx configs without anyone noticing.
Dimension Analysis
Φ Aesthetic Geometry
Lua's minimal syntax, function, end, local, tables, creates clean, visually proportional code. The lack of punctuation noise gives it a quiet, uncluttered feel. Small but well-composed.
Ω Mathematical Elegance
Lua is deliberately simple. Tables as the single data structure are elegant in concept, but the language doesn't provide tools for abstract mathematical expression. Practical economy rather than mathematical economy.
Λ Linguistic Clarity
Lua reads simply and directly for small scripts. The table-as-everything paradigm is clear once understood. Docked because the lack of distinct data structures (no arrays, no classes, just tables) can make larger codebases harder to read.
Ψ Practitioner Happiness
Appreciated by game developers and embedded systems programmers. The embedding experience is seamless. But as a standalone language, the ecosystem is thin and the community is niche.
Γ Organic Habitability
Lua's tiny footprint and simple embedding API make it exceptionally habitable in its niche, you can drop it into any C/C++ project. Metatables allow organic extension. Code accommodates change well within its scope.
Σ Conceptual Integrity
"Small, fast, embeddable." Lua knows exactly what it is and stays in its lane. The design is coherent and focused. Docked slightly because the minimalism is more pragmatic than philosophical — it's simple because it needs to be small, not because simplicity is the point.
How are these scores calculated? Read the methodology
Signature Code
Metatables
local Vector = {}Vector.__index = Vector
function Vector.new(x, y) return setmetatable({x = x, y = y}, Vector)end
function Vector:length() return math.sqrt(self.x^2 + self.y^2)end
function Vector.__add(a, b) return Vector.new(a.x + b.x, a.y + b.y)end