Welcome

  • This is the blog for Intentional Software Corporation. We keep it open for comments as we seek a dialog with the community. Each participant will be trusted to participate with integrity, decency and respect for others.
  • Visit Intentional Software Corporation

« Is programming a form of encryption? | Main | Notations and Programming Languages »

April 18, 2005

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d83451741069e200d83457eaa769e2

Listed below are links to weblogs that reference The long tail of programming languages:

» The long tail of programming languages from hakank.blogg
Charles Simonyis (Intentional Software) skriver i The long tail of programming languages om att användningen av programspråk förhåller sig till varandra som en long tail (cf power laws). Man har använt statistiken från TIOBE Programming Community Index... [Read More]

» Google to buy Sun? from Alt Text
Daniel M. Harrison at blogcritics has been all over the potential sale of Sun to Google and what it might mean.... [Read More]

Comments

Sameer Sundresh

I think it's interesting that you note the diversity of programming languages in use today, and the associated need for co-existence and interoperability. One of the problems I often encounter with "new" languages is that while they may have some very nice features, it's often harder than it should be to get them to work with existing tools, libraries and platforms due to different assumptions. Ideally, we would be able to mix together the right set of abstractions to solve a particular problem.

Here at the University of Illinois, we are working on an interesting approach to this problem -- we are defining the formal executable semantics of a variety of different programming languages using a rewriting logic-based meta-language called Maude (http://maude.cs.uiuc.edu). By defining languages in this way, we get a variety of tools, such as interpreters and model checkers, with no extra effort. Moreover, these language specifications tend to be very concise and free of extraneous implementation details, since the Maude language provides little other than pattern matching operations. As part of Prof. Grigore Rosu's class this semester, CS 522: Programming Language Semantics, we are working in groups to define the semantics for 8 different languages. These should be up on the web in a few weeks, but you can also see some already-complete language definitions in Maude at the following websites:

Java - http://fsl.cs.uiuc.edu/javafan/
BC, C and Scheme - http://fsl.cs.uiuc.edu/es/index.jsp
Simple and Fun (toy languages) - http://fsl.cs.uiuc.edu/~grosu/classes/2005/spring/cs522/

Overall, I have found formal executable semantics in Maude to be a very powerful methodology for defining programming languages. As compared to more concrete virtual machine-based approaches, the language implementor has the flexibility to define new semantic constructs for language-specific peculiarities, while still using existing modules to define the parts of a language which are more standard. This also makes it is relatively easy to modify and evolve language definitions. Maude is by no means a final solution, but it is a very good system which unfortunately appears nowhere on the langauge popularity scales at this time.

xeo

Any set of nominal data can be ordered in such a manner as to display an apparent power law distribution. The data could as easily have been arranged in an apparent normal distribution, for example. [ Try it: select the highest value and make it the mean; select the two lower values and place them symetrically around the first value; continue 'til done.]

A true power law distribution requires that the domain be defined on an interval scale. Inotherwords the absence of a scale on the X-axis tells us that it makes no sense to speak of power law distributions (indeed of any particular distribution).

Charles Simonyi

Xeo, you are right, of course, but the main point of the observation was that besides a few very popular languages there are also a large number of less popular languages. "Long tail" refers to the integral of the remainder when the items are sorted by magnitude. Not everything has a "long tail", for example personal computer types do not.

chainsaw

Personally, I am pretty stunned at the large amount of choice in languages there is today. Back in the 80's, I don't recall their being so much choice... (granted, I was still a youngin) – I only remember C, C+, Pascal, Turbo Pascal and Basic. Today, we seem to have much, much more choice (and the list above doesn't even cover it.) I'm still deciding if this is good or bad – I guess it is good, in that (As you say) niche languages to the job better for their specific purpose (I'm thinking of Ruby or Python, for example) and you can learn these quicker for the task. If you had to learn C# for simple tasks, it might make it more difficult for anything to get done. At least, here, most people can do the really simple stuff and learn a simple language quick and easy.
So... come to think about it, the wide variety of choice is probably good, although maybe confusing for newbies.

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment