Maybe Perl 7.
On Mon, Aug 19, 2013 at 2:30 PM, Parrot Raiser <1parr...@gmail.com> wrote: > Let's get the basics nailed down and working so that we can learn > them, before wandering any further into theoretical CS. > > On 8/18/13, James Bowery <jabow...@gmail.com> wrote: > > Of the two key conceptual gaps in current programming language philosophy > > -- commensurability and change propagation -- commensurability, if filled > > with due rigor, has the greatest potential for clearing up confusion by > > recasting other core features as derivative. Change propagation (eg: > > properly voiding memoization in lazy functional evaluation aka > incremental > > tabling maintenance in relational evaluation) is something I attempted to > > address in Perl back in 1999 but was blocked by a bug in recursive use of > > the tie machinery. However, since that time I've come to the conclusion > > that as important as change propagation is to put into the core > machinery, > > it isn't nearly as fundamental as is commensurability. > > > > Let me introduce commensurability with the seemingly trivial example of > > "units conversion". > > > > Units conversion is normally tacked on as an after-thought in programming > > languages. (Digression: One programming language that had units built > into > > the compiler was the PLATO system's "TUTOR" programming language -- a > > generally nasty language which I encountered while programming > > Spasim<http://en.wikipedia.org/wiki/Spasim> -- that, > > nevertheless, pioneered some interesting concepts due to the relative > lack > > of precedent in programming languages targeting "ordinary people" like > > teachers.) However, while doing real world calculations, correct handling > > of units via automatic conversion is, in fact, more important than "type" > > checking. Underlying units checking (and conversion) is > commensurability. > > For example, apples are not, in general, commensurable with oranges: a > > ton of apples should _not_, in general, be added to 3000 kg of oranges -- > > although adding a ton of apples to 3000kg of apples makes sense as we are > > dealing with commensurable quantities although in differing units. > > Moreover, by incorporating dimensional analysis into the arithmetic > > machinery, not only can units conversion be automated, but arithmetic > > expressions themselves can frequently be automatically inferred from the > > inputs provided along with the units of the output demanded (see the > > semicolon ';' operator of the Calchemy units > > calculator<http://www.testardi.com/rich/calchemy2/> > > ). > > > > While well-designed type machinery, based on things like assertions and > > coercions, can be adapted to implement automatic units conversion (hence > > checking), that is getting the cart before the horse. Here's why: > > > > If we accept the idea that the higher level of expression we allow the > > programmer, the better (as it leads to more disciplined separation of > 'how' > > pragmas from 'what' specification during the authoring process) then we > > should recognize that relational expression should be core since > functions > > are (sugarably) degenerate (many to 1) relations and procedures are > > (sugarably) degenerate (state-transition) functions. If we have > relational > > expression as core, commensurability, hence units handling, falls out of > > what Bertrand Russell called "relation arithmetic" in Principia > Mathematic > > volume IV. The most advanced work in applying relation arithmetic to > > programming language design was done by the late Tom Etter while at Paul > > Allen's thinktank "Interval Research", with Tom's follow-on work at HP > > funded under my (very limited) authority there. > > > > Tom's paper, "Relation Arithmetic > > Revived< > http://www.boundaryinstitute.org/bi/articles/Relation-arithmetic_Revived_v3.pdf > >" > > documents Russell's conflation of relational similarity with relational > > congruence as the mistake that blocked practical application of relation > > arithmetic in Codd's work on relational algebra -- hence things like "the > > object relational impedance mismatch". However, if we look deeper into > > what was going on, we find that the very idea of "sets" -- hence the > normal > > notion of "data types" -- is similarly ill founded, as we can, and > should, > > bootstrap "set theory" from a more fundamental theory of relative (or > > relational) > > identity< > http://www.boundaryinstitute.org/bi/articles/Three-place_Identity.pdf> > > . > > > > Just how far do the implications of this go? > > > > Well, for starters, the core laws of quantum mechanics fall out as > > completely general theorems of relation arithmetic generalized to include > > "negative" relationships (opt cit). Among the implications of this are > > core programming language constructs for quantum information systems. > > > > Sorry if this throws a monkey-wrench at, if not into, the works -- but > the > > Perl culture is one of the few places that is has the philosophical > > equipment to take such a lofty concept as commensurability and commit > just > > enough Ockham's Chainsaw Massacre to retain much of its value in > practical > > programming systems. > > >