News for hackers. Stuff that matters.
Re:Storm 2.0 by pron on Sunday June 02, 2019 @09:36AM (#20075347)
> But does that mean there is no causal effect of programming language choice? I don't know and I'm not making any claims either way.

I'm also not making definitive claims, but we can't ignore observations, either. While small effects can appear or disappear depending on methodology, big effects are easy to find and hard to hide, especially in an environment with strong selection pressures. Therefore, the most likely explanation to why no big effect has been detected -- either in studies or in industry -- is that there isn't one, and that should at least be enough to make it the working hypothesis. So before explaining effects that have yet to be detected we should establish that they exist at all, something we have so far failed to do.

There may well be a small effect, and there could still be a large effect, although the chance of that is small unless we have a really good explanation to why we haven't found it.

Re:Storm 2.0 by fauigerzigerk on Sunday June 02, 2019 @10:04AM (#20075503)
Here are some reasons to doubt this working hypothesis:

1) It is inconsistent with the personal experience of most developers. Few would claim that C is just as productive and safe as some garbage collected language (provided that both are suitable for the task at hand), or that a SQL group by statement is not more productive to write than the equivalent procedural code.

2) The methods used to study the subject are completely unfit for purpose.

3) It is inconsistent with the few results that seem at least somewhat well supported because they are simple enough to measure, such as the constant bug count per line of code.

Re:Storm 2.0 by pron on Sunday June 02, 2019 @10:30AM (#20075667)
> It is inconsistent with the personal experience of most developers.

I disagree. I've been programming for about 30 years now, and most reports I've received -- both from programmers and managers -- are that language doesn't matter; certainly not much. Carefully selected personal "feeling" report are worthless (especially in biased forums), as that would produce even more evidence that homeopathy is effective than that programming languages make a difference.

> Few would claim that C is just as productive and safe as some garbage collected language

I agree, but that's where the many caveats come in. First, my argument is more one of diminishing returns (following Brooks's theory). I.e., languages make an increasingly small difference. C may have been a big improvement over assemby, and Java may have been a smaller but still quite big improvement over C, but now differences are quite small.

Indeed, the effect of GC and memory safety vs C was one that was almost immediately detected by industry (once mature, performant, etc.) and triggered a huge shift. We do not see such shifts now. Companies move among mainstream languages, among non-mainstream languages, and between the two classes in a way that does not suggest a big effect at all.

> or that a SQL group by statement is not more productive to write than the equivalent procedural code.

That's a completely different matter. I don't think anyone believes that writing a 1MLOC program in SQL is easier than writing a similar one in Java or Python, even if the Python/Java one is 1MLOC, and the SQL one is 200KLOC. When the program is small, there can be large differences, but that's a completely different problem (and also explained by theory).

> The methods used to study the subject are completely unfit for purpose.

I disagree, but it doesn't matter. Big effects are easy to find and hard to hide. And in an environment with strong selective pressures, they're found even when no studies at all are conducted.

> It is inconsistent with the few results that seem at least somewhat well supported because they are simple enough to measure, such as the constant bug count per line of code.

It is not. First, the difference in LOC is not as big as PL fans claim (it can be big for small programs, not large ones). Second, you may want to review those results.

Re:Storm 2.0 by fauigerzigerk on Sunday June 02, 2019 @11:15AM (#20075981)
>I agree, but that's where the many caveats come in. First, my argument is more one of diminishing returns (following Brooks's theory). I.e., languages make an increasingly small difference. C may have been a big improvement over assemby, and Java may have been a smaller but still quite big improvement over C, but now differences are quite small.

I don't necessarily disagree, but I'm a bit skeptical about the way in which you use the concept of diminishing returns. If I'm not mistaken then Brooks used diminishing returns in relation to headcount. And this is in fact how economists use the term as well - adding quantitatively more of one production factor.

But that doesn't apply to qualitative changes like introducing new production methods and tools, which is what programming languages are. New programming languages are not simply "more programming language".

If we agree that there have been observable effects of new programming languages in the past, then we cannot exclude the possibility of the same happening in the future.

>First, the difference in LOC is not as big as PL fans claim

What PL fans claim is a bit of a fluffy benchmark, but there are undoubtedly significant differences in LOC, certainly significant enough to make an economic difference.

>I've been programming for about 30 years now...

Shockingly, me too :)

Re:Storm 2.0 by pron on Sunday June 02, 2019 @11:26AM (#20076042)
> If I'm not mistaken then Brooks used diminishing returns in relation to headcount.

Oh, I'm referring to "No Silver Bullet" and diminishing returns in the sense that languages at best help with "accidental complexity", so the less of it there is, the less languages can help.

> New programming languages are not simply "more programming language".

But there are inflexible theoretical limitations on their utility (even without Brooks). We know the effect of different programming constructs on expressive compression and reasoning costs. The closer we get to the limit, the less benefit we can have.

> then we cannot exclude the possibility of the same happening in the future.

I'm mostly pointing out that it's not happening at present. I'm less sanguine about future advances because of various limitations (and, BTW, Brooks's predictions were called overly pessimistic by PL fans at the time and it turned out they were too optimistic), but I won't rule out another major breakthrough, or possibly two.

> but there are undoubtedly significant differences in LOC, certainly significant enough to make an economic difference.

I don't think I agree with your first assertion (although that depends on what we mean by "significant" here), and I certainly disagree with your second. We simply have not been able to detect or induce such an effect. Here, too, there are theoretical results showing that increased expressiveness cannot lead to cheaper reasoning, which is not an obvious result even in the worst case (because there are far fewer "compressible" programs than non compressible ones).

Re:Storm 2.0 by fauigerzigerk on Sunday June 02, 2019 @11:45AM (#20076140)
>We know the effect of different programming constructs on expressive compression and reasoning costs. The closer we get to the limit, the less benefit we can have.

>Here, too, there are theoretical results showing that increased expressiveness cannot lead to cheaper reasoning, which is not an obvious result even in the worst case (because there are far fewer "compressible" programs than non compressible ones).

I find that very interesting. Do you have a source for it?

Re:Storm 2.0 by pron on Sunday June 02, 2019 @12:31PM (#20076424)
Yes. Some interesting papers are:

* http://www.lsv.fr/Publis/PAPERS/PDF/Sch-aiml02.pdf

* http://www.lsv.fr/Publis/PAPERS/PDF/DLS-jcss-param.pdf

* https://www.cis.upenn.edu/~alur/Zohar03.pdf

What's important to put those results in context for those who are not familiar with the subject is that, in the context of complexity theory, the "model checking problem" does not refer to the complexity of a particular model checker algorithm, but to the inherent complexity of the problem of deciding whether a program M satisfies some property 𝜑 (i.e. whether M is a model of 𝜑 in the formal logic sense). The "model checking problem" is the closest to a mathematical description of what we usually mean when we talk of "reasoning about a program."

I've summarized these results and more here: https://pron.github.io/posts/correctness-and-complexity

Re:Storm 2.0 by fauigerzigerk on Sunday June 02, 2019 @12:35PM (#20076447)
Thanks!