An interesting indicator from the "mentions" graph: how compatible or co-used two technologies are in practice.
For example: C++ programmers apparently don't mention SQL at all, while it's very popular with PHP (which doesn't have a built-in ORM). There is also no overlap between C++ and JavaScript programmers.
Rust is obviously very influenced by C++ and Haskell, but the C++ community doesn't even know about its existence. Somewhat naturally, the Matlab and PHP communities really don't have much in common.
> Maybe LINQ to SQL could have been considered a built-in ORM?
It might be more accurate to say LINQ is built into the languages, but LINQ to SQL is a .NET platform feature, not a language feature. (Of course, the languages are so tied to the Microsoft distribution and the .NET platform that distinctions between language features, language standard library features, and platform features are, for .NET languages, somewhat academic in practice [inasmuch as there is a practical difference that is likely to matter, "does it work on Mono" is probably more important than strict language/library/platform distinctions].)
Not sure if "careful" is the right word. I've gone through many, many languages over the last 20 years, and VB has become my first choice (when the choice is up to me). Most other VB devs I know (there aren't many) just seem... uninterested in arguing over it vs. C#, or anything else for that matter. It's part of the appeal to me - shipping, and the journey are worthy of discussion. Language is incidental.
I know PHP-bashing isn't particularly creative nor nice, but I wasn't surprised when I saw the word-analysis at the end there :)
That said, I don't think the findings for C was shocking either.
You're not going to be writing kernel-modules in Clojure. It's going to be some sort of C. And the chances of it involving hardware (performant code or not) is significantly higher than other non-systems languages.
Because PHP is so readily available (installed on pretty much every free web host), it may also be related to people starting out with programming and getting frustrated about it.
I use PHP daily and I like it's features and tooling but it really isn't a very good language (it's finally passable but far from good).
In addition to the reasons you mentioned it's also possible their are other demographic differences among languages in terms of age, experience etc. (I suspect though can't prove that the average C programmer is older than say the average PHP programmer).
JSP is more like a library or framework than a language, though I guess it's harder to make that distinction in PHP which is kind of both. But this diagram won't separate JSP from other Java (which you'll see is used quite a lot - some of that will be JSP).
"better" is subjective. While there are good things about the Java/JSP stack, its templating language is IMO cumbersome and unsafe, and its test-edit cycle can be quite long.
The thing PHP and JSP were designed to do seems to be generally seen as a bad idea nowadays. PHP is used anyway only because it's already installed everywhere, so those who would be able to set up JSP can also choose something else (i.e. neither PHP nor JSP) and probably do.
You use a structured framework that has some separation of concerns (typically Model-View-Controller or some variant). In Java-world, some examples are Struts, Spring MVC, and Play, all of which can be used to write high-quality software for real-world applications. JSP might even be involved in the view/presentation layer.
There are also MVC frameworks for PHP. The most popular, though, are those for scripting languages like Ruby and Python, namely Rails and Django.
What you shouldn't be doing is interleaving data access, business logic, and presentation all in one file, which is what straight PHP and JSP usually consist of. This is called "spaghetti code" and it's been widely regarded as a really terrible practice for around 10 years.
You can do client-side apps in Javascript that fetch JSON or XML from the server, but you want to be using a framework with some structure to serve the data, still not just straight PHP or JSP.
> What you shouldn't be doing is interleaving data access, business logic, and presentation all in one file, which is what straight PHP and JSP usually consist of. This is called "spaghetti code" and it's been widely regarded as a really terrible practice for around 10 years.
"spaghetti code" actually has a much broader definition than that particular kind of lack of structure (though I agree that that example might be viewed as a fairly modern example of "spaghetti code") and has been considered a terrible practice for much longer than PHP, JSP, or even the web itself has existed. [1]
If all you're looking for is an html template system, there are html template languages for almost every programming language (including ruby, python, nodejs, Scala, Haskell, C, C++). Even most PHP developers are using template systems besides just PHP intermingled in HTML these days.
I still agree that PHP is probably the fastest way to get a couple dynamic HTML pages that include server data. The limitations of PHP as a template language quickly reveal themselves as projects grow.
This is awesome. It almost paints a picture from PHP => Python => cpp & Java.
Considering that would be considered a growth path of a developing programmer, I find that fascinating.
PS: Go will always have problems with stuff like this. They should have just named the language string or var or something equal toxic to machine collection.
I'm not defending the name choice; but to be fair, nearly all of the major languages have put zero consideration into their name SEO: Java competes with coffee, Ruby with the gemstone, Python with the snake, C# with the musical note, and C ... C is just a damned letter :P
Yep, I gave up on naming things. I tried to use really creative names as is common in the Linux world (Ristretto, Amarok, Brasero, Thunar, etc), but it drove me up the wall (I once named a project "xkas", ugh.) It's so hard to find a name that's easy to pronounce, sounds good on the tongue, and is not already used a million times.
Nobody's ever going to find them through Google, but oh well. Nobody was going to use them anyway. May as well name them the way I like, right? ;)
It's great to look at correlations between Rust, C++, and Haskell. Rust programmers are very interested in Haskell, and Haskell programmers Rust; which indicates that Rust's design has a lot of influence from Haskell. C++ programmers are talking about Rust more than anything else; which shows that they are likely interested in moving to Rust.
This is very exciting to me, because I believe Rust is going to be a great replacement for C/C++, and if anyone understands how to create quality programming languages, Haskell programmers do.
TL;DR Rust is going to be the new C++, and the new Lisp. These are exciting times.
I feel like Haskell gets name dropped a lot more - when you mention something from a C-language you can have a reasonable expectation the other person knows what that thing is.
I agree with the author that the top graph may not be hiding any important insights, but the interactive version (linked from the image) is sexy as all get-out.
I wish the colors indicated not absolute comparative volume (more X talk happens on Y forum, than visa versa, so it's colored Y) but instead comparative relative volumes
Forum X spends a great percentage of their time
talking about Y than visa versa so it's colored X
looks like users of PHP are most offensive when given to choice of words to hate the language and users of mathematica are least offensive ! Funny but not unexpected
clojure users seem very happy with what they use!
On the mutual mentions java users have near zero mention of haskell?
I started using Clojure about a month ago, after spending a lot of time with Python and I have to say it does make me oddly happy. Once you have paredit set up, the way you can move code around is just mesmerizing.
For example: C++ programmers apparently don't mention SQL at all, while it's very popular with PHP (which doesn't have a built-in ORM). There is also no overlap between C++ and JavaScript programmers.
Rust is obviously very influenced by C++ and Haskell, but the C++ community doesn't even know about its existence. Somewhat naturally, the Matlab and PHP communities really don't have much in common.