archives

Is API evolution of exceptions special?

Casper Bang, an early reader of the Practical API Design book, asked following question after reading it:

I was curious as to know how come, in a book strictly about API design in Java, you do not mention exceptions (particular checked exceptions) and the role they play in documenting assertions vs. hampering versionability. Did you simply think this to be too controversial an issue I wonder?

My initial reaction was that there is not much special related to exceptions, but later I decided to provide more detailed answer. I'd be interested to here LtU members thoughts on this topic.

AgentSpeak(L): programming with beliefs, desires and intentions

Anand S. Rao (1996). AgentSpeak(L): BDI Agents speak out in a logical computable language.

Rao's AgentSpeak(L) is a Prolog-like resolution-based language, but which is extended to support agent-based programming in several ways, most importantly:

  1. It extends the language, so that clauses can talk about not just satisfaction of predicates, but also of an agent desiring to bring about a predicate, and desiring to find out whether a predicate is true; and to distinguish between normal goals and special goals relevant to the BDI model (Belief-Desire-Intention model);
  2. It amends the resolution engine to support what Rao calls reactive concurrency, where agents form plans via a process resembling SLD-resolution, but plans are formed or abandoned on the basis of agent-internal reactions called triggering events.

Rao and Georgeff's work on BDI agents and procedural reasoning together constitutes one of the most important contributions to the theory of agents in AI, a topic which hasn't been discussed much here on LtU, but was raised in the Agent Oriented Programming story.

Simon Peyton Jones Interview

A Simon Peyton Jones interview as part of the series The A-Z of Programming Languages that Naomi Hamilton has been putting together. Posting this one to the front page, not because of any bias towards functional programming, so much as it stands on its own as interesting and insightful from the standpoint of programming language design and evolution.

To supplant established languages, even in the functional programming area, like Haskell or ML or Scheme, you have to build a language that’s not only intriguing and interesting, and enables people to write programs faster, but you also need an implementation that can handle full scale applications and has lots of libraries and can handle profilers and debuggers and graphical analyzers… there’s a whole eco-system that goes with a programming language, and it’s jolly hard work building that up.

Narrowing field of languages?

Looking at the posting histories for the 58 languages listed on Google Groups, I see two notable trends. First, most languages show a peak in activity around 1999-2001. I've always assumed this was because technical users were moving to subcription-only groups to avoid the increasing noise on Usenet.

The other trend is a dramatic fall-off of activity in several established languages in just the past 2-3 years, particularly Visual Basic, Eiffel, Java, ML, Pascal/Delphi, POP-11, Rexx, and Smalltalk.

The older languages that have been notably holding steady are AWK, C, Forth, Fortran, Prolog, Scheme, Verilog, VHDL. Lisp is a special case in that it was dying in the 1990s then revived around 2000.

It seems that languages dominating a special niche are keeping their users while general-purpose languages are suddenly giving way to a few new superstars, particularly Python and Ruby.

This would indicate that the future of general-purpose programming is to be marked by much less variety in languages than we had in the past. But I notice that functional languages like OCaml and Scala are generally not represented there. So perhaps this sample is misleading?