3 ms·
It's interesting how the trend among big-time compiled languages seems to be implement statically-analyzable versions of key features from functional and dynami
by jfasi 13y ago
It's interesting how the trend among big-time compiled languages seems to be implement statically-analyzable versions of key features from functional and dynamic languages. C++'s auto keyword and lambda functions makes a world of functional-like expression possible. Java's implementing python iterator and lisp sequence-like streams.
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.
- deleted 13y ago[deleted]
- pjmlp 13y agoThere are also functional languages with static typing so I got partially lost on your comment. 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.
- lmm 13y agoI don't think it's really about compiled vs. dynamic - these features first became popular in compiled, staticly-typed functional language like Haskell or *ML. This interplay is good - on .net it sometimes seems like MS is treating F# as a playground for features where the most popular get picked up and added to C#, and there are similar things for Java. 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.
- _pmf_ 13y ago> Lots of the recent developments are around composing and controlling effects, in a way that almost requires a more serious type system. 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.
- pjmlp 13y agoI think Microsoft is playing safe with F#. 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. :(
- stephen 13y agoMy assertion is that dynamic languages evolve faster because they are much easier to build--many of them start out as hobbyist languages (Ruby, Perl, etc.). Just grab the dragon book and you're off to the races. 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.
- camus2 13y ago> dynamic languages evolve faster 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.
- stephen 13y agoBoth Go and Rust are evolving fast, but they have teams of full-time/paid programmers behind them. 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".