I think there’s something to this, but I think it’s also missing some important things. In particular, it fails to explain why four languages are on both the dreaded and loved lists.
Another hypothesis about what’s going on here: it’s not just that you’re more likely to be working on legacy code in older languages, but the language and its ecosystem are more likely to themselves be legacy-laden. This possibly explains the presence of Haskell on both lists: It’s a relatively obscure and “novel” language, so “green” by the author’s definition, but it’s also 30 years old and has been a platform for research for its whole life, and still is for the compiler maintainers. So it’s in a weird spot where it’s got a ton of legacy and is a pretty huge language, but also has some “new and interesting” ideas that still haven’t made it into the mainstream.
I also think there’s a somewhat simpler explanation that may be part of the picture: newer languages are actually better by some measures. Hype tends to exaggerate this, and there’s a lot of noise, but I do think there is actual technological advancement in the PL space; it’s not just fashion.
I think that often it is. In “old” languages it was fight between performance and developer experience. Nowadays the designer do not really need to bother with first one that much (because of hardware, tooling like LLVM, and other stuff) and can solely focus on the experience. That result with languages that are easier to work with when comparing with old ones. Additionally newer languages often tries to provide better solutions for stuff like dependency management, which in ols languages have been “a little of the problem”.
One thing that really bugs me is how “dreaded” is defined in the survey: “languages that had a high percentage of developers who are currently using them, but have no interest in continuing to do so”.
Those two are not the same thing at all. For example, Apple has made clear that Swift is the future and that Objective-C is on the way out, so developers are somewhat obviously interested in learning/using the new thing and anticipate stopping to use the old thing. Does that mean they “dread” Objective-C? They might, but the answer to that question does not indicate either way.
Apple have never stated anything like that. Apple’s internal use of ObjC remains extremely high, though some of that has to do with legacy factors and the fact that Swift didn’t become ABI stable until two years ago.
I think Swift’s position as an outlier here somewhat disproves the author’s thesis that all languages must pass through a “honeymoon” phase only to inevitably end up in “dreaded” territory.
Shame there’s no section about languages on TIOBE 2016 and loved on StackOverflow. They are:
Python
C#
JS
Swift
SQL
Python is a very good counterexample - the first language to so many, with many legacy systems running it but new stuff being written in it every day. Also an example of a language adapting to times - Python was probably not seen as a serious language when it was created but it’s being used for all manner of AI and scientific stuff, and not graying like Ruby (despite having very similar goals). JS has infinite “greener” alternatives (TypeScript being mentioned as green), and has been bashed to death and is still loved. Same for SQL.
Difficulty of understanding and maintaining, combined with career prospects, are, IMO, the dominating questions.
Example:
Scala and Haskell are notoriously difficult for others. Scala isn’t a hot engine right now for jobs. I personally like them, but I don’t think they are good ones to stake my career on. Rust will probably be similar down the road, I’d guess, maybe not. Depends on how well it replaces C & C++.
Pick your favorite dynamic language that isn’t image based; it has runtime bundling and packaging issues in some form. Deployment and maintenance are a problem, after you iterate the SDLC 2-4 times, specially as 5+ years goes by. Enough effort will mitigate the grief, but it will never not be there. One reason why I think Go will be a long term favorite language - its deployment story might be the best going today.
I think there’s something to this, but I think it’s also missing some important things. In particular, it fails to explain why four languages are on both the dreaded and loved lists.
Another hypothesis about what’s going on here: it’s not just that you’re more likely to be working on legacy code in older languages, but the language and its ecosystem are more likely to themselves be legacy-laden. This possibly explains the presence of Haskell on both lists: It’s a relatively obscure and “novel” language, so “green” by the author’s definition, but it’s also 30 years old and has been a platform for research for its whole life, and still is for the compiler maintainers. So it’s in a weird spot where it’s got a ton of legacy and is a pretty huge language, but also has some “new and interesting” ideas that still haven’t made it into the mainstream.
I also think there’s a somewhat simpler explanation that may be part of the picture: newer languages are actually better by some measures. Hype tends to exaggerate this, and there’s a lot of noise, but I do think there is actual technological advancement in the PL space; it’s not just fashion.
Could it also be that newer languages are actually better? Language designers building on experience and all that?
I think that often it is. In “old” languages it was fight between performance and developer experience. Nowadays the designer do not really need to bother with first one that much (because of hardware, tooling like LLVM, and other stuff) and can solely focus on the experience. That result with languages that are easier to work with when comparing with old ones. Additionally newer languages often tries to provide better solutions for stuff like dependency management, which in ols languages have been “a little of the problem”.
One thing that really bugs me is how “dreaded” is defined in the survey: “languages that had a high percentage of developers who are currently using them, but have no interest in continuing to do so”.
Those two are not the same thing at all. For example, Apple has made clear that Swift is the future and that Objective-C is on the way out, so developers are somewhat obviously interested in learning/using the new thing and anticipate stopping to use the old thing. Does that mean they “dread” Objective-C? They might, but the answer to that question does not indicate either way.
Apple have never stated anything like that. Apple’s internal use of ObjC remains extremely high, though some of that has to do with legacy factors and the fact that Swift didn’t become ABI stable until two years ago.
I think Swift’s position as an outlier here somewhat disproves the author’s thesis that all languages must pass through a “honeymoon” phase only to inevitably end up in “dreaded” territory.
Shame there’s no section about languages on TIOBE 2016 and loved on StackOverflow. They are:
Python is a very good counterexample - the first language to so many, with many legacy systems running it but new stuff being written in it every day. Also an example of a language adapting to times - Python was probably not seen as a serious language when it was created but it’s being used for all manner of AI and scientific stuff, and not graying like Ruby (despite having very similar goals). JS has infinite “greener” alternatives (TypeScript being mentioned as green), and has been bashed to death and is still loved. Same for SQL.
I would cut this cake differently.
Difficulty of understanding and maintaining, combined with career prospects, are, IMO, the dominating questions.
Example: Scala and Haskell are notoriously difficult for others. Scala isn’t a hot engine right now for jobs. I personally like them, but I don’t think they are good ones to stake my career on. Rust will probably be similar down the road, I’d guess, maybe not. Depends on how well it replaces C & C++.
Pick your favorite dynamic language that isn’t image based; it has runtime bundling and packaging issues in some form. Deployment and maintenance are a problem, after you iterate the SDLC 2-4 times, specially as 5+ years goes by. Enough effort will mitigate the grief, but it will never not be there. One reason why I think Go will be a long term favorite language - its deployment story might be the best going today.
I think Rust will do fine, mainly because while it is a difficult language, it is easier than C++.