[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 
> 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 

OSX freeware and shareware: http://www.dekorte.com/downloads.html