Economics of Programming Languages

I like programming languages a lot. I've used a number of them professionally, and have even written one myself - Hecl - although it borrows most of its ideas, if not source code, from Tcl. And, of course, I've taken part in my share of debates and discussions on "which language is best," a topic which of course doesn't have one clear answer but is often the source of heated arguments.

I recently read an interesting book, Information Rules: A Strategic Guide to the Network Economy by Carl Shapiro and Hal R. Varian (Harvard Business School Press, 1998; ISBN: 087584863X), which talks about the economics of the world of high technology. While reading it and thinking about programming languages, a number of things clicked. They aren't earth-shattering conclusions. On the contrary, a lot of them are more or less common sense, but it's nice to read that there are some methodically studied theories behind some of the intuitions, hunches and observations I've made over the years.

In this article, I attempt to list what I believe to be the most salient points of the economics of programming languages, and describe their effects on existing languages, as well as on those who desire to write and introduce new languages.

Economics of Programming Languages

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Why should we (ie those of us

Why should we (ie those of us who are interested in computer languages) care about economics? We live in a world of change. Even computer languages are subject to change and will change eventually. It will cost a lot! If history is any judge companies will go under and people will be re-educated. It goes with the terratory.

Change isn't random...

...people and the firms they run adopt new languages and paradigms for understandable reasons and for comprehensible motives.

In my opinion, the main point is that if you are a researcher or small open-source developer thinking about designing a new language, there's no reason at all to design languages that are an incremental improvement over the mainstream. Microsoft or Sun can make incrementally-better languages successful, because they have the money to subsidize the creation of the libraries and tools and community that will make switching to an otherwise marginally-better language attractive.

The rest of us don't, so if we build a language it needs to be so much better that people will adopt the language even without those ancilliaries, (and then by arriving, they form the community and tools).

I like your analysis. Increm

I like your analysis. Incremental change is a game ruled by economic forces and should be played by those with economic resources. My point really is that this shouldn’t stop us from thinking about changes incremental or otherwise. The much better idea you refer to may have an economics of its own and this is what we all need to be looking for.

Why care?

Because some of us care about the rest of humanity, and seeing our work used, as well as caring about computer languages. Economics determines which computer languages actually get used. Contrariwise which computer languages actually get used has an impact on how much software costs to develop, amnd what software actually gets successfully developed. If you believe that computer languages actually matter to the world at large, economics is the core of it. If you don't care about the societal implications of software language design, and are willing to see whatever work you do in that area sit unused on a Sourceforge repository somewhere, then by all means feel free to ignore the economics side of it.

I would argue that one does

I would argue that one does not need to dig so deeply to find meaning in a piece of software work. Generally there are agreed upon measures such as a specification, comparisons to other work, etc. Economic theory and analysis are certainly valuable but seem more like marketing to me. development is often about things that have no market, and therefore have no economic meaning in a balance sheet. Nevertheless companies and society continue to fund such things. It is like drilling for oil. One success can pay for all the failures and more. Also the process is definitely not incremental. A success may be good in the long run but nevertheless be very disruptive.

Why care? It's interesting, first of all

Why care? I would hope that "because it's interesting!" is already a pretty good motive.

In terms of practical reasons, I suppose it depends on what you want to do with the programming language you are creating. If simply creating it because it's a beautiful work is enough, then I you don't need to care too much about what other people think or how they will react and interact with it. On the other hand, if you'd like to see your work more widely used, perhaps an understanding of the reasons why some things become popular and others don't would be useful. And looking at things from the point of view of economics is one way of examining that.

The article certainly isn't an attempt to discourage people from writing a new language, but more thoughts on the reasons why some languages fare so well and others remain obscure, as well as explaining why, for some people, popularity is important, and not just a vain desire to "be on the winning side", as it were.

We told you so:

The marketing driven approach you describe is familiar enough to most people in technology but is just not very interesting to an engineer. It is like designing various kinds of SUV’s. An engineer would rather design something like a hybrid or a fuel efficient car probably. The hybrid idea certainly isn’t new but until recently has failed because “it wasn’t popular”. Engineers design things because they are “better” in some technical standard such as fuel efficiency, but it seems to take a lot of pain to make such an idea “popular”. From the engineers point of view it’s “I told you so”.

Interacting with the world

The economics of cars are different from those of programming languages. As long as a car meets certain requirements, one is pretty interchangeable with the next.

I suppose the place where you could make a comparison is with fuel. You could design a brilliant car that runs very efficiently on some alternative fuel, but if there are no refilling stations, people will not purchase the vehicle (and maybe no one will build refilling stations if no one is buying the vehicle...tough problem!)

In the world of high tech, this is very often the case - people at times place a lot of value on those 'externalities'. Some more, some less, but it's something to consider, and plugging your ears and yelling "marketing!" won't change it. Consider a web server that uses a protocol other than HTTP as another example. People aren't going to use it unless you get around the problem that the protocol isn't common in browsers or other web servers.

Once again, I'm not saying it's a bad idea to try and produce something better. On the contrary, I'm attempting to help you understand why it might not be immediately as popular as you would think based solely on the (supposed) quality of the new language itself.

If getting other people to use your language is simply not a concern, well, then, yes, this article doesn't hold a lot of useful information for you. I would still hope that it's interesting just for the sake of looking at things from a different perspective rather than just shunning thought and knowledge because it does not pertain to your own specific areas of expertise.

Not enough?

I really don’t have any problem with what you are saying except that it isn’t enough. Even though the current language situation is “messy” (in my opinion) most practitioners are comfortable with it. They have learned to deal with it and manage it. New things and especially new languages are disruptive by the fact that they are different. People in technology know how important technical details are. They also know that a change process is hard to predict and hard to control. When it happens it probably is a mater of filling a new niche. (like Pearl, Java, etc)

Whose economy is being optimized?

Having a B.S. in Economics, I guess I have to weigh in on such things. Firstly, I never put much faith in MacroEconomics, as it was mostly a study in the vagaries of sociology and politics. OTOH, MicroEconomics was fairly exacting and quantitative in its analysis. Well, when examining the economics of programming langauges, I see the same dichotomy between Macro and Micro. Most discussions of PL popularity revolve around the speculative world of sociology. I tend to think such study enters a world of chaotic and unpredictable interaction of people that are trying to maximize their utility (but constantly get stuck in local minima).

Anyhow, the use of computers and PLs are very much bound up in economics. At the micro level, we can obviously come to some conclusions. But like all economics, you have to make many assumptions along the way. Take R&D, for example:

Research and development (sunk costs) are needed to create the software itself, which means that an initial investment is required, and if the language is not successful, chances are the investment can't be recouped.
If one assumes a purely competitive economy, then one assumes that all innovations (that result in either an increase in supply or a decrease in price) will propagate across the economy. That is, if an innovation provides a competitive advantage, then that will result in a shift in the supply/demand curves. But this assumption of perfect competitiveness has a couple of problems. First, companies want to try and horde their advantages - giving them a higher profit margin over their competitors. Second, the act of R&D is not always about producing a competitive edge on the product offering. Specifically, look at the Bell Labs of old, and the MS R&D of today. They can be as much about using R&D to keep stuff out of competitors hands as it is about innovation. Monopolies tend to have the best R&D departments, but also tend to want to use R&D as a tool for maintaining monopoly. In a world with perfect competition, this makes things much further removed from recouping of R&D dollars, and can have the opposite effect of actually stifling innovation.

The economics from a company perspective is to minimize costs and maximize price. The choice of programming language doesn't seem to have a direct relationship on the price side. You can't go to a customer and say "we use O'Caml for the product", and immediately have the customer say "Wow! That's neat and we're willing to pay you 10% more than a company that used C++". Unless you want to frame it in terms of costs, the PL used is not going to impress the suits. Either you spent a lot less in the R&D as result of the choice in PL, and have a cost advantage of the first-to-market. Or, you have to define the costs in terms of maintenance, reliability, security, etc... But then in the world of currency transactions, numbers speak - not conjecture nor aesthics.

And then there is the labor force itself. Some feel that the arcane knowledge that programmers and designers immerse themselves in, is a form of job security. The more convulated a language is, the more valuable is an employee who can master that mass of trivia. Programmers (and/or Engineers) may be motivated by the Beauty of a solution, but that sense of aesthetics is often overwhelmed by the need to maximize their stream of income. (For myself, I like it when economic purpose aligns with the feeling of being "just right").

Ok, so like most economists, I ramble on with my many hands. Those who ignore the economics of PL are doomed to never getting out of their parents garage. But as another said (think it was Patrick Logan?): Those who create a PL get to decide what goes into the langage - Those who use the PL get to decide if it becomes popular.

What you have to say about th

What you have to say about this is very interesting! It is hard to get a frank discussion of such things?
Thanks!

Network Effects

I bet if you looked at language popularity, and migration between communities, you'd find something very much a power law distribution (aka a scale-free network). What the implications of this are I don't know!