Hacker News new | past | comments | ask | show | jobs | submit login
Programming language subreddits and their choice of words (github.com/dobiasd)
176 points by quantisan on Aug 20, 2014 | hide | past | favorite | 55 comments



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.


None of these languages have a built in ORM.


Does any language have a built in ORM? I was thinking maybe Ruby, but even that is a gem.


An interesting question, I did some googling and didn't find anything.

Not that surprising I think since an ORM is probably better in a library since that allows more flexibility across systems.



Would Entity Framework qualify as a "built-in" ORM for .net languages?

edit I guess not, since it's a nuget package now. Maybe LINQ to SQL could have been considered a built-in ORM?


> 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].)


a couple of client+server web languages, like opa and ur/web.


Anyone know what the unlabelled languages are in that graph?

[Edit: Sorry, I was dragged away to a meeting before I could finish.]

Specifically, what is the blue language between C# and Haskell? It has a strangely strong link to Rust and Python.


Pretty sure it's Go. The order around the circle seems to match the chart right under it.


Go, Objective-C, Swift, and Visual Basic.


"But what is up with the Visual Basic community? They are neither angry nor happy. They just ... are? :)"

This is answered by the mentions relative to TIOBE graph. They use VB, but they are careful not to talk about it.


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 wonder why Perl was excluded. A quick search reveals that /r/perl has more subscribers than lua, matlab, objectivec, scala, sql, and visualbasic.


I suspect the answer to "Why was ___ excluded" in most of these cases is "accidental oversight".


>>"accidental oversight"

Which is just another word for "conspiracy."


Proof that HN has no sense of humor. :)


The same reason why I left out C and D in the mentions. Their name is too often used to mean something else. :/


What other meaning does "Perl" have?


The thing coming from a shelled mollusc? Haha, I am so unbelievably stupid. Thanks for the remark. I will try to fix it during the next days.


Just curious if you considered lumping in node/node.js in with JavaScript... I know it's a platform that uses JS, but it's gotten relatively popular.


I thought about it but left it out because I did not know what I should do with Rails, Django, JQuery etc. then. ;)


Just to let you know, perl is in now. ;)


Interestingly, Perl does make appearances in much of the word usage section. It's absence from the rest of the article is curious.


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.


I also want to point out that the mathematica community never swears. :)


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).


Why are no one using JSP, by the way? Isn't it a better, more secure direct competitor to PHP?


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.


What would you use instead? Javascript fetching data from server and doing all UI stuff on client?


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]

[1] http://en.wikipedia.org/wiki/Spaghetti_code


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.


JSP is really just Servlet. JSP is used in the context of Java Servlet Engine frameworks like SpringMVC or Struts. It is definitely still being used.


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


Maybe this just means engineers shouldn't name things! :)

Then again marketing people would have made choices like RadPython, RubyGrunge, and CFlowerPower...


Well there are four hard problems in computer science:

1. Naming things 2. Cache coherence 3. Off-by-one errors.


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 tend to agree -- I feel like the C-family concepts are the default, and when you go outside of that range, you specify.

e.g.

"I think function application is super easy, you just do f(x,y,z)!"

vs.

"I think Haskell style function application is super easy, you just do f x y z!"

But I also suspect Haskell is just getting more attention these days -- it's quite trendy for sure.


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
Basically, who obsesses over who more.


That's really clever. I had a good laugh at some of the results. Well done.


There's a language that everybody is talking about; yet nobody uses it.

Kind of a spinoff of Stroustrup's, "there are languages everybody complains about, and languages nobody uses".


This is really cool. I wonder how the "buzzfactor" of Haskell would measure up against Idris.


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.


http://daiw.de/github/programming-language-subreddits-and-th...

Java mentions Haskell quite a lot, Haskell mentions Java almost not at all.


>looks like users of PHP are most offensive when given to choice of words to hate the language (...)

PHP offers a wealth of creative possibilities in that regard which other languages seem to lack ;)


My kingdom for a sarcasm detection algorithm!


nice job. as a user of PHP. no comments. :)




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: