[Haskell-cafe] Re: "Haskell is a scripting language inspired by Python."

Richard O'Keefe ok at cs.otago.ac.nz
Fri Nov 5 01:48:29 EDT 2010

On 5/11/2010, at 4:03 AM, Dupont Corentin wrote:

> Hello,
> reading this thread a question came to me:
> Is there a way of automatically deriving programming languages ascendancy?

According to www.oed.com, "ascendancy" means
"The state or quality of being in the ascendant; [having] paramount influence,
dominant control, domination, sway."

I think you may have meant "descent", "ancestry", "phylogeny" or something
like that.

Automatically?  Probably not.
> Like biologist can determine the distance between two genotypes, and determine a hierarchy between species from that.

Until this year I taught some of that stuff.  The distance between two
sequences depends hugely on *what* you choose to measure (which particular
features) and *how* you measure distances (there are similarity matrices
people use, but you have to choose).  Then there are algorithms that give
optimal results but blow up for anything much past 15 species, and people
arguing bitterly about what you should be optimising anyway ("parsimony"
or "maximum likelihood"), and it's much fuzzier than people think.  For
that matter, some of the approaches are valued for providing *many*
plausible trees, and people are advised not to place much trust in an
inferred relationship unless it shows up in a lot of the trees.

Then we turn to human designs, and suddenly THERE IS NO TREE.

Let's take a language that I designed this year for a software engineering
experiment.  It includes ideas from
	- Algol 68
	- a Lisp dialect described in BIT
	- Algol W
	- Ada 81
	- Euclid
	- Fortran 77
	- Mesa
	- Dijkstra's notation
	- SML
	- Pop-2
	- Euler
	- APL
	- Matlab
	- Aleph (the one from CWI)
Hmm.  This might remind you of Larry Wall's explanation that PERL
stands for Pathologically Eclectic Rubbish Lister, but in fact I've
found the mélange to be pleasantly coherent.

Some of the ideas come from more than one language, e.g., the idea
of listing the variables that a procedure can read, write, and update
just after its heading comes from Euclid *and* Dijkstra's notation
*and* from SPlint and on the way into Chatterton got hybridised with
an idea taken from Mary *and* Ada that got renamed from the Ada
version because of a conflict with a keyword taken from SETL.

*I* know which languages I was thinking about when I did the design,
but I defy anyone else to look at it and figure out where *everything*
came from.

There's a *rich* history behind Python.  I look at a lot of its features
and say "I know older language XYZ that did this bit" and so on, but I'd
hesitate to guess which ones were actually influential.

By the way, phylogenetic reconstruction where you KNOW that it was just
pure binary branching with no horizontal gene flow is a known NP-hard
problem.  Throw in arbitrary amounts of horizontal gene flow and I
don't expect it to get easier.
> Are you aware of researchs made in the field?
> On the net I found interesting graphs but no comments on the methodology.
> http://www.levenez.com/lang/

That diagram leaves out the heavy influence of Lisp on Prolog.
(Much of it indirect, but definitely there.)
It seems a little odd to see JavaScript and ECMAScript treated as
different languages.

> http://rigaux.org/language-study/diagram.html

That one omits the link from Lisp to Smalltalk.  Smalltalk was VERY much
influenced by Lisp.

The best methodology is
	- ask the language designers
	- read what they have published in the History of Programming
	  Languages (HOPL) conferences or elsewhere
	- check the ACM Oral History Interviews
	- similar things for BCS
	.. anything any historian of recent events would do, really
> Cheers,
> Corentin
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list