the only thing worse than supporting legacy software, is not supporting legacy software
I really really wish that programming languages could just change their entire design with each major version whenever it’s possible to make things more elegant - instead of adding features on top and supporting bad legacy decisions
but… that’s how you get the Python 2 → Python 3 transition problem. so I guess at a certain point, elegance has to take a back seat to practicality
I still don’t like it though lol
one of the reasons why I’m interested in Lisps is that in theory they don’t need to have this problem. they could have an extremely simplistic Lua-like core language with a minimal amount of ideas needed to conceptualize how the language works, and then have a modular standard library on top of that for extending it and making it really nice to use and full of modern features like classes, list comprehensions, etc.
and then when newer, better ideas are invented, those modular systems could be swapped out for new ones, while still keeping the core language compatible with The Old Ways
obviously Lua can kinda do this already, but the advantage that Lisp-like languages have is that they have macros, letting them do all kinds of weird shit
so anyway that’s why I’m so interested in Fennel - because it seems like the best of both worlds: the core language is as simple and easy-to-learn as Lua (because it basically is Lua) but on top of that, just enough Lisp has been added to allow macros to be created, theoretically letting it become just as expressive and nice-to-use as Python (minus the Lisp syntax)
I think my ideal language, though, would probably be Lua with its quirks ironed out (0-indexed tables, !=
, variables are local by default, etc.) and Rust’s macro system added on top