[cells-devel] A shocking proposal

Kenny Tilton ktilton at nyc.rr.com
Mon Nov 10 20:15:10 UTC 2003



Nikodemus Siivola wrote:

>On Mon, Nov 10, 2003 at 12:16:46PM -0500, Kenny Tilton wrote:
>
>  
>
>>More fun? Graphical output which would be much more recognizable. 
>>Handling mouse and keydown input. 
>>    
>>
>
>Fair enough. Never having written a GUI app in my life I'm always left
>a bit cold by GUI examples, but basically they're fine.
>
Don't worry, I am not talking about doing a boring GUI example, I am 
talking about having neat visual effects and clear relationships thanks 
to the fact that I can draw pretty shapes on the screen that change as 
you tweak parameters from the repl. For example we can have a container 
with a fixed number of moles of a gas. we can manifest the temperature 
via color, moving gradually from blue to red to show gradations of 
increasing temperature. We'll use Boyle's Law in a rule somewhere, then 
let the size of the container be mediated by a cell-variable. Then we 
can setf that value from the repl, see the container get smaller, see 
the temperature increase. Then maybe we put a goofy thermometer above 
the box. That has a column of mercury which increases in length as the 
temperature below increases, but maybe we do that over time (using a new 
kind of synapse I think I have to invent <g>) or maybe I can do it as a 
drifter. I can also show how I position the thermometer over the 
container without calculating actual coordinates. Stuff like that.


>>Have you looked at the text-based examples?
>>    
>>
>
>Yes, comments below.
>
>  
>
>>Hmmm, that would be a challenge. A text-only, real-world example 
>>on which to base a tutorial.
>>    
>>
>
>Almost any simulation would seem plausible.
>
>  
>
>>Do me a favor, let me know everyone what you think of the text-based 
>>tutorials on Bill's blog and in my own 01-cell-basics.lisp (and there is 
>>    
>>
>
>Looking at 01-cell-basics.lisp.
>
>The terminology is somewhat confusing. For example:
>
> "C? associates a rule with a cellular slot (or "cell", for short)."
>
>Which really doesn't make sense to me: it doesn't seems to associate
>anything with anything, but rather (as far as I can tell so far)
>*creates* a rule that can then be associated with a cell.
>
True. I'll reword that.

>
>Nowhere do I see a short explanation of the basic consepts: What are
>rules and cells? How do they relate to each other? It's easy enough to
>pick up the basics of "howto", but really hard to understand the
>"why".
>
>Example: I look at an example on defmodel, and see how SELF seems to
>be bound by it for :default-initargs. Except that this bit of anaphora
>seems to be done by C?...
>
No, defmodel does not do anything like that, and any anaphoric SELF 
appears inside a rule. I also use self as parameter names a lot, but 
then there is no anaphoric mystery.

defmodel is just defclass, plus it writes macros ^slot and accessors 
slot and (setf slot).

>
>A non-documentation-related nitpick: I find myself mentally skipping
>over C?, CV, &co constantly, since the names look like internal
>iteration or pattern matching variable names... 
>
>I'd personally prefer 
>
> (cell-lambda (foo) ...) 
>
>or equivalent over C? with implicit lexical bindings, and
>DEFINE-CELL-ECHO over DEF-C-ECHO, etc... 
>
>But I'm just funny that way. ,)=
>
Well I am a long-name freak myself, but when it comes down to something 
I will be using a lot I turn into an APL clone. Esp. because I will be 
using them a lot, there is no confusion. Meanwhile they do not take up a 
lot of space.

>
>  
>
>>One answer might be to clean up something like the boiler example 
>>(fairly realistic, that) which already covers all the basics. Then do up 
>>a similar level of reference material for those who just want to dive in 
>>and have some place to see all the options. 
>>    
>>
>
>Sounds sensible. Except that I'd prioritize that reference. Very often
>when reading a given tutorial I like to refer to an actual reference
>every once and a while to check if I'm understanding things correctly.
>
Probably once I sit down to do the reference I will scoot thru all the 
syntax at once. that is a lot easier than writing tutorials and worrying 
about whether the tutee is keeping up.

>>Even if one is /not/ doing a GUI, the complexity of this will be enough 
>>to see how Cells scale to big problems, and given the LW ubiquity, it 
>>would not really be an obstacle to anyone that I am using a proprietary 
>>tool (in freebie form).
>>    
>>
>
>True. Though I'm surprised if you really need to sell the scalability
>very hard. Especially since I think that if there are doubts about
>scalability they would/should be focused on huge nets and simulations,
>not interface.complexity... ;)
>
Well, there is scaling and there is scaling. Your example (many, many 
similar elements) gets at performance. Mine gets at what happens when a 
neat hack is asked to manage greater and greater varieties of things, 
and the functional dependencies become more and more semantically diverse.

Cells have overhead in tracking dependencies, so they do fine in the 
latter case (for which they were developed) where complexity arises from 
great variety amongst relatively few instances), but I imagine they will 
not be appropriate for something like the game of Life, where they add 
very little value (it's a pretty simple algorithm, with very clear 
dependencies and ways to identify on the fly said dependencies, zero 
variety (all Life cells work the same), and even change is completely 
simple: all cells get recalculated at the same time in one generational 
step.

Good input. Thanks.

kenny

-- 
http://tilton-technology.com

Why Lisp? http://alu.cliki.net/RtL%20Highlight%20Film 

Your Project Here! http://alu.cliki.net/Industry%20Application






More information about the cells-devel mailing list