I'd like to pick up on the theme of Pop11's evolution. Has
Pop11 kept pace with modern programming ideas?
I said:
> > ....Programming ideas have moved on a long
> > way from the 1960s and, fortunately, Pop11 has kept pace.
Aaron Sloman remarked:
> I guess the functional programming community would disagree ???
One suspects from this remark that there is a strong functional
programming presence in Birmingham. I worked in the area of
functional programming for many years and I found it a fascinating
and exciting area - full of passion and, unfortunately, bigotry.
The enthusiasts of my acquaintance were highly confrontational
in their approach to other programming paradigms. (Perhaps I was
just unlucky. Perhaps I brought out the worst in my fellow
workers. It doesn't matter that much.)
The strength and beauty of the Pop family of languages is rooted
in the pluralism of its contributors. Pop11 was already rich
when I came to it but I have seen full lexical binding, sections,
object-oriented programming, destroy actions, deep changes to
the datatype declarations, vastly richer syntax, and, most recently,
great improvements in declarations. And these are just some of
the big changes we've enjoyed/endured. The cost of these changes
has been a loss of integrity. Pop11 is not a tight, coherent
language at the moment (although neither is it a Common Lisp.)
The functional programming community has the advantage of being able
to invent new experimental languages constantly, keeping the latest
and greatest nice and clean. That in turn is a reflection of the poor
uptake of functional programming. Functional languages such as
Standard ML, which have have achieved a degree of uptake, already show
the signs of unintegrated design. We all dislike programming in
disorganised messy languages - but that's the cost of gradual change
rather than radical change. And, because of the substantial
investment in many programming languages, gradual change is the
rule.
The poor uptake of the functional programming paradigm is due to
two issues. Firstly, there are technical issues concerned with
I/O that, despite many valiant and ingenious solutions (I know of
at least 4 distinct approaches), have not proved themselves
satisfactory - at least in my view. Secondly, the inflexible
attitude of the FP community is their greatest strength and weakness.
Resisting the urge to compromise, in the way SML has, is vital.
However, I believe that the same strength prevents the an
acknowledgement of the vitality of programming concepts outside
of the realm of "functional purity".
I believe that Pop11 would significantly benefit through the
greater use of side-effect free constructs. To this end, I see
the incorporation of lexical constants as the default declaration
as a great step forward - as exemplified in Pepper. I would go
further and include a concept I've seen mentioned many times before,
and that is the idea of a side-effect free definition. For example,
one might write
function double( x );
2 * x
endfunction;
where "function" is, broadly speaking, equivalent to "define".
However, within "function" one would only be allowed to use
side-effect free constructions.
The idea of incorporating a functional sub-language is a very
powerful one. I really don't know why it hasn't happened in
many programming languages (such as SML, for example). It would
get functional programming out into the world of commercial
programming without any fuss. The only obvious objection is the
issue of strictness - but I'll leave that for later.
[I expect to draw some flak over my observations about functional
programming. Please try to keep within the context of comp.lang.pop
if you want to respond - or let's move to a functional programming
group. If you want to argue that functional programming is being
used commercially, please name the product and developers. Please
do not argue that Lisp or SML are functional languages - they are
obviously both strongly influenced by the FP paradigm but no
longer within it.]
Steve
|