| Indeed. That's why we have languages with functions now, because people didn't want to manually do a register dance in assembly. That's why we have name spaces, because naming conventions only take you so far. That's why we have map and filter (or equivalent) because that's what most loops are doing anyway. Generation after generation, we discover that we all use common abstractions. We name them design patterns, then we integrate them in the language, and now they are primitives. And the languages grow, grow, bigger and bigger. But they are better. More productive. Less error prone. And code bases become standardized, simple problems have known solutions, jumping to a new project doesn't mean relearning the entire paradigm of the system in place. Small languages either become big, or are replaced by things that are big, for the same reason most people prefer a car to a horse to go shopping. Not that horse ridding will totally disapear, but it will stay in their optimal niche, they are not "the future". |
It's been around a long time. It's not general purpose. It's considered the best option there is if your setup allows you to use it.