• Scala. Expressive, concise, can scale from simple to sophisticated. Sufficiently powerful - has metaprogramming, advanced types. Runs on a world-class runtime and takes advantage of a huge, mature package ecosystem that isn’t going anywhere.

      • Actually the language is quite small. The features, it has, are just quite powerful and have huge synergies so that it seems that you have a lot of complex features. It has a lot of weird corner case stuff, but most of that is because of the jvm and other languages have that too unfortunately.

        • That’s a good point about the synergies, something like eg. a type system that’s expressive enough to be Turing-complete is going to have some effects. You’re right that it might just feel like a “kitchen sink language” due to complexity of the features it has, but then again I suppose it’s sort of one and the same where a language’s complexity comes from.

          But it’s no Swift, at least; now that language really does have everything and the kitchen sink.