Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

While their chart confirms my personal bias (that FP is more expressive), I think their methodology is flawed to the point of making the whole thing meaningless. They are not measuring expressiveness, they are measuring lines of code per commit. Having a community that likes lots of small commits doesn't actually make a language more expressive than one with a community that likes fewer, larger commits. They even acknowledge that the javascript numbers are basically meaningless because it is so common to copy+paste entire big external dependencies into a javascript project.


A related hypothesis is that it might be tied more closely to a language's packaging system than expressiveness. I've noticed in some of the projects I'm involved in that commits are often related to packages, with people more likely to roll multiple things into one commit if they're to the same file or package, and more likely to split them if they're updates to things that the language itself splits. Might be cultural, or might be related to it being easier to modularize your own contributions when the language has defined module boundaries to help you out. So languages that favor more small packages may (though I have no evidence!) see smaller average commit size than those which favor fewer, more monolithic packages (or source files).

It's an interesting metric in any case, I'd just prefer not editorializing it. That's a common concern I have with supposed proxy variables, unless their proxyness has already been established through some kind of scientifically solid investigation. A ranking of languages by average commit size would be truth-in-advertising, and then it could be followed by a speculative blurb about what that means, with language expressiveness being one hypothesis. I think that'd still be perfectly interesting as something to do and discuss, but maybe it'd have a harder time getting traction.

Comes up in published scientific literature fairly often as well, unfortunately. E.g. it's common for neuroscience papers to be solid scientific investigations of a specific variable, but to then completely oversell the results by labeling it as a proxy measure for something more evocative, like "creativity" or "free will" or "empathy", with a really handwavy argument for why this specific variable is a suitable proxy for that full concept. It's also getting common in the past 1-2 years for people to claim trends in Google Ngram type data are proxies for historical popularity of concepts, when there are a lot of confounding reasons that might not be true.


This is likely a graph of languages ranked by CDD usage (Copypasta Driven Development).


That's certainly a possibility in some cases and communities (perhaps at a sub-language level or for very niche languages), but I find it rather unlikely on a global level considering the trends across many languages and language classes that you can see here.


I don't think it's the community that makes up for the bias, more importantly it's not normalized with respect to the size of the project, sure CoffeeScript won't have much lines per commit since 90% of the time the commit will be something like "make this slide-in twice as fast", where meanwhile Eclipse/Firefox/LAPACK etc. get done in Java/C/C++/Fortran. Also for the less widely used languages the sample is certainly much smaller and most projects are toy exercises. Anyway, C# is next to Assembly, and shell scripts next to Smalltalk, so what are we talking about here...


Agreed. He also fails to control for variation in project types that languages are commonly used for. e.g. perl/bash are often used to write short scripts, where as Java is typically used for enterprise applications; so of course the commits for the former will have smaller commits than the later.


"Having a community that likes lots of small commits..."

Is that even a thing? I feel like commit sizes is generally a pretty person by person thing. Aggregate a bunch of people/projects/dev-groups and you get some vague metric of a language.

The point I think isn't to show X is slightly more expressive than Y, but to illustrate a general trend.


I'd agree, I'd expect something like APL to show up on here in terms of sheer expressiveness. While it can be a pain to program in because of the funky characters, it's actually very very expressive.


APL is insufficiently popular to be considered here, otherwise I'm sure you would be right.


Yep. And even then it doesn't take into account the fact that writing tests is more common in some languages (Ruby, for instance) than it is in others.




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

Search: