Hacker News new | ask | show | jobs
Think your language is better than mine? The market says otherwise (andrewcurioso.com)
9 points by andrewcurioso 5562 days ago
5 comments

This is based on a mountain of false assumptions. Just a few of them:

• Most people choose a language based on quality rather than what everyone else is using

• Good languages are necessarily well known (if you build it, they will come?)

• Large corporations, which make up a large segment of the market and can basically anoint programming languages to dominance, have the ability or inclination to choose a good programming language (rather than, e.g., a language which has a strong promotional machine behind it or a language whose backer offers lots of enterprise support)

• Attractiveness to amateurs is equal to all other factors in determining a programming language's quality (regardless of what you think of the language, this is a large part of PHP's popularity)

The thesis here is simply false for any reasonable definition of "good." The only way you can make it true is to "#define good popular", in which case it's tautological.

For example, the reason there is still so much COBOL in production is not that the language is awesome and people choose it of their own free will — in fact, the opposite is generally considered to be the case even by COBOL experts — it's simply entrenched. These systems would not be written in COBOL if they were being developed today, but because they happen to have been written in COBOL's heyday, people still use COBOL. The market chooses COBOL for these positions because of the horrific cost of rewriting everything from the ground-up, not because of anything related to COBOL itself.

Three things:

First, thank you for reading. This article was meant entirely to spur discussion so I thank you for taking the time to discuss.

Second, I don't think an argument that most people choose based on quality is pertinent to the theory. The theory just states that the market decides. It does not infer than any metric the market uses is inherently better or worse than others.

Third, your COBOL example is explicitly excluded from the theory as not being in a free-market. Thus it is fading away slowly. If it were truly up to the market (no external regulation from business interests) it would be dead.*

* In this case the market is defined as the direct consumers of the programming language. The programmers themselves. As opposed to indirect consumers (organizations).

> Second, I don't think an argument that most people choose based on quality is pertinent to the theory. The theory just states that the market decides.

It states that the market decides what? The article repeatedly suggests that what the market decides is which language is "good" or "better," which can only be true if people choose based on quality.

If the market choice is only loosely correlated with quality, then looking at the market tells us nothing about which languages are good (since "good" is a qualitative judgment).

There are only two ways I can see for market penetration to be relevant to the discussion of which languages are better:

1. The market chooses based on quality

2. "Good" is synonymous with "popular"

Otherwise you're measuring one thing and then announcing another. Market position is just popularity, and is only a reliable indicator of the things that determine popularity. If people don't choose based on the quality of a language, then looking at popularity to figure out which languages are good is like looking at the eating habits of the average American and concluding that Big Macs are the most nutritionally balanced food around because they're in the dominant market position.

The market decides if a language has any value.

It is not implying in any way that there is a 1:1 between popularity and quality (or any defined relationship for that matter). I think that would be ridiculous.

It is not meant as any means to grade or rank one language against the other. Only to say that a language has some value.

Rereading your comments I do not necessarily agree that the assumption is that market chooses based on quality. The market chooses based on perceived value which definitely takes into account quality but is not based entirely on it.

The implication being is that if there is truly no value or the value is so low that consumers are no longer willing to consume the product. Then the product will disappear or get replaced by a better and cheaper alternative.

In a way, it is simply saying, if someone uses a language then it has value -- at the very least -- to that person.

I guess the underlying message is: do not assume that because something doesn't have value to you that it is not valuable. If it didn't have any value it would (IFF the theory is correct -- I'm not saying it definitely is!) cease to be used.

I am anxiously awaiting your reply. If you have a good one, I might have to concede that the theory is disprove and/or incomplete.

I can't argue with the claim "If somebody is using something, they must place a nonzero value on it." But it seems a lot weaker than what the article says, and it's not even related to the Twitter conversation you linked, which was about the relative qualities of programming languages.

This restated thesis could be 100% true and it still wouldn't mean that the dominant programming language isn't the worst one ever invented.

And a language with nonzero value could still be effectively worthless — if Language A is worth 1 Foo, Language B is worth 10000 Foo and Language C is worth 15000 Foo, then choosing Language A means you lose more (relative to the others) than you gain.

So your headline should have been "Think your language is more popular than mine: The market says otherwise".

No one would have argued with that.

I agree. The title is misleading. I'll have to be more careful on future HN posts. Although, if someone else posted it I would have little control over that.

I don't think your alternative isn't quite right either.

Perhaps, I should have just titled it something like: "Ask HN: Review my theory, The Free-Market Theory of Programming Languages"

Yeah, yeah, the status quo can always be defended with a market analogy.

Step one to making this kind of statement: give some evidence that the language ecosystem actually works as a free market.

First of all changing languages is almost always a large investment. That removes the "free" from your free market analogy so many of the assumptions you are making are completely unfounded.

That is why it is a theory and I am opening it up to peer review. Otherwise I would have stated it as a fact.

Also, "free" as in choice, not "free" as in cost.

Fair enough, in that case it's certainly not a "theory", the correct term would be "hypothesis" or "conjecture".

I understood what you meant by "free" but you seem to be discounting the high cost of making that choice.

You can examine the language ecosystem as a market but if you do you see immediately that it is inherently a lock in market.

Once you choose a language it's very high cost to change languages.

It's also high cost to choose a language that's not already popular, recruiting is more difficult and you will not have as much 3rd party library support.

So you have both "lock in" and large advantages for existing large players. Sure, it's technically still a "free market" because it's not regulated by the state but this kind of market doesn't have the behavior you are assuming.

What evidence do you have that these kinds of markets optimize for "better" languages?

My biggest mistake: using the word "good" What I should of said is "has value"

I have since conceded that point and removed the word "good" (which is subjective) from the post.

Also, the only evidence I have is observation. Which is why I posted the idea. To get good constructive input from people like you!

You make some good points. It is an expensive proposition to switch languages, which is why I excluded that explicitly in the post.

It is also expensive to train people. So that alone may disprove the theory. I'm not sure yet.

On a side note, as far as I know, being based on observation only does not preclude the use of the word theory. It is technically correct (at least according to the dictionary definition of theory). Although, I agree hypothesis may be better.

You need to define "has value" right away though, because defining "value" as "whatever the market measures" is tautological and just plain useless. "PHP has value because people find that PHP has value" is not contributing anything new.

It's also the go to "moving the goalpost" logical fallacy used by free market ideological cranks who you don't want to be compared to.

Agreed. I don't want to ask you to complete my thought, but how would you define value in a way that makes sense in that context? Or is it hopeless?
You could also segment the market by knowledge, and time in business. Each would yield different results.

What you might find is the market aggregate is a lagging indicator or that any summary is void of true detail.

Besides the language measurement quanta here is so far apart, no?

It's a bit intentionally vague. For instance, let's say there is a language dedicated to hardware prototypes (let's call it Gabview)...

Say it is very popular now but it is difficult to use and no one enjoys using it. If the theory holds true, a new language will come around gain popularity with hardware firmware developers and Gabview will fade off into the distance.

Another factor influencing language popularity is to have some control over the language popularity metrics. E.g. Groovy lead developer Jochen Theodorou got involved with changing the TIOBE algorithms in January. In February, Groovy jumped from 49th to 25th place in one month.
> Any programming language, when not influenced by external forces, will be unable to grow and eventually cease to exist unless there is a demand. Any languages that remains is, by exclusion, a useful and good language.

For very small values of "useful" and "good"...

I don't disagree :) and the theory does not specify either of those properties as binary.