It's fascinating to me to watch experimental and niche languages blaze trails and then have the designers of the big compiled languages see the success of certain features almost as proofs of viability.
It's fascinating to me to watch experimental and niche languages blaze trails and then have the designers of the big compiled languages see the success of certain features almost as proofs of viability.
If anything it's the dynamic languages whose future I'm less sure of. Lots of the recent developments are around composing and controlling effects, in a way that almost requires a more serious type system. Perl was once a trailblazer but now seems to be dying, Python looks like it might follow it (and its last big new features seem to have come from Haskell rather than the other way around). Even Ruby isn't the exciting, fresh language it used to be. It's an interesting time to be programming.
Clojure is a counter example for your argument. You very loose dynamic typing, but due to the immutability of the core data structures you achieve side effect free programming by default.
They are trying to approach it from the point of view, how to bring such languages to the enterprise, their usual customers, without scaring them away.
The is most likely the reason why F# only gets promoted for library code and not full applications.
After all, besides F#, Microsoft still supports OCaml and Haskell research, as far as I know.
As I mentioned in another thread, the average enterprise developer is scared of such power. Even with language renaissance going over the JVM, I have seen lambdas being presented to Java developers as if it was a primary school lesson kind of. :(
The big problem in mainstream languages is to have features that mainstream developer are able to grasp.
For example, I can play as much as I like with alternative languages, in the end of the day is all about JavaScript, Java and C# on the enterprise space.
In contrast, how often do you see hobbyists hacking around on new type systems? Much less often. Evolving type systems is typically the work of PhDs.
Since static languages are harder to implement, they evolve slower.
So, yes, syntax wise, they end up copying what the dynamic languages have already figured out what works/etc.
As an admitted fan of static languages, I think that's just fine. It takes awhile for the static world to catch up.
(E.g. Scala can now give you (basically) the sexy syntax of Ruby, 10 years after Ruby seduced a lot of JVM programmers away from Java, but now with a compiler backing up the syntax with type checking.)
...but, yeah, 10 years is a long time.
It has nothing to do with dynamic vs static, all with process. Go is statically typed yet evolving fast. Javascript is weak and dynamic yet evolving quite slowly.
Dynamic languages rarely even have their creator paid full time to work on them, let alone teams. IIRC?
So, true, perhaps instead of "faster", I should have left it at "harder".