Re: Functional Programming in the Larger or Functional Oriented Software Engineering

"Tommy M. McGuire" <[email protected]> Wed, 14 Mar 2007 12:49:18 -0500
Newsgroups gmane.comp.lang.lightweight
Message-ID <[email protected]>
Lewis Brown wrote:
> Several years back on this list there was a great discussion about what 
> ought to be the basic, elemental foundation of a language: the function 
> or the object.

I would suggest that the "elemental foundation" equivalent to the 
function for most popular languages that I am familiar with is not the 
object but the statement---they're procedural languages with objects.

> The object school has developed a huge volume of literature to address 
> the engineering issues involved with “Programming in the Large.†It has 
> given us not just languages, but processes, modeling languages, etc.
> 
> It would seem that the functional school has been relatively mute on 
> this topic.

As (my interpretation of what) Mike wrote, I think this is a historical 
accident; the "huge volume" follows the popularity of the object school, 
which follows the popularity of the original procedural languages.

Also, note that the functional school has written some responses to the 
huge volume; for example, pointing out that much of the design pattern 
chunk of the volume can go from informal design guidelines to being 
directly expressed in the code, given suitable, functional language 
features.

> Does this imply that, despite your choice of foundational element, all 
> large systems require objects to manage the complexities? Is that why so 
> many functional language implementations usually offer at least one 
> ‘flavor’ of object system?

On the one hand, this may be a function of popularity and custom:

"Look at this really neat language...!"

"What does the object system look like?"

"It doesn't have one."

"Oh, well...."

(In spite of having worked with OCaml quite a bit, I have never used its 
object system.)

On the other hand, object systems are quite good at managing complexity, 
although they do add their own.  (This is, in fact, why I haven't used 
OCaml's objects---using the rest of the language, I could usually reduce 
or avoid the complexity, rather than trying to manage it.)

And in that case, most of the literature on engineering issues is as 
applicable to functional languages with object systems as it is to 
procedural languages with object systems.


Tommy McGuire
[email protected]