[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: s-exprs + prototypes
On Sunday, June 22, 2003, at 08:03 AM, Felix Klock's ll1 list proxy
wrote:
> On Sunday, June 22, 2003, at 09:57 AM, Steve Dekorte wrote:
>> On Sunday, June 22, 2003, at 01:37 AM, Anton van Straaten wrote:
>>> They make
>>> programs more difficult to reason about, analyze, optimize, and
>>> verify, and
>>> thus more bug prone.
>>
>> If you're goal is to optimize for static programs on Von Neumann
>> architectures, then that's a good point. But don't you think that
>> goal is a bit short sighted?
>
> But one can make good arguments that the other three activities are
> easier in the absence of mutation operations.
In that case, you've made something static or "early-bound". This goes
against the pattern of progress in programming languages. As Alan Kay
put it:
"One way to think about progress in software is that a lot of it has
been about finding ways to late-bind, then waging campaigns to convice
manufacturers to build the ideas into hardware. Early hardware had
wired programs and parameters; random access memory was a scheme to
late-bind the locations of computations - this led to base/bounds
registers, segment relocation, paging MMUs, migratory processes, and so
forth. Time-sharing was held back for years because it was
"inefficient" - but the manufacturers would not put MMUs on the
machines; universities had to do it themselves! Recursion late-binds
parameters to procedures, but it took years to get even rudimentary
stack mechanisms into CPUs. Most machines still have no support for
dynamic allocation and garbage collection, and so forth. In short, most
hardware designs today are just re-optimizations of moribund
architectures."
Cheers,
Steve
OSX freeware and shareware: http://www.dekorte.com/downloads.html