Why would you have a language that is not theoretically exciting? Because it's very useful.
Rule 1. You can't tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is
There's no such thing as a simple cache bug.
There's nothing in computing that can't be broken by another level of indirection.
Languages that try to disallow idiocy become themselves idiotic.
Procedure names should reflect what they do; function names should reflect what they return