[ENH] New idea: Integrated spreadsheet support for Squeak

Alan Kay Alan.Kay at squeakland.org
Sat Oct 27 20:20:19 UTC 2001


Dirk --

Playground, the language we used for the Vivarium project, was 
essentially an OO language whose objects were spreadsheet columns. 
The spreadsheet "method" was a condition-action pair that would cause 
a value to be put into the corresponding cell. We found this to be 
quite powerful for many situations, and it would be nice to have an 
easy way to do such programming in Squeak. (Of course, it is not 
difficult to program in that style now, just not really pretty.) BTW, 
Bob Arning did do the start of Spreadsheets in Squeak, and I think he 
put some examples on BSS.

Also, going way back in history, one of the first and most famous 
systems written in Smalltalk when it came out of Xerox PARC was the 
Analyst, essentially a big spreadsheet system in which each cell was 
MVC.

Cheers,

Alan

------

At 2:11 PM +0200 10/27/01, Dirk Wessels wrote:
>With all computer languages I have the problem that there is hardly any
>possibility for
>creating table structures. While C++ and pascal support things like
>matrix[x][y] and things
>like that and APL supports even more, I don't think they really solve what I
>would like.
>Even a case statement is very clumbsy in other languages, and is lacking in
>smalltalk.
>
>Because smalltalk is the most flexible language, I would like to suggest
>that we could
>implement integrated spreadsheet support in Smalltalk.
>And use this facility to implement:
>  1) constant tables = flexibility
>  2) integer and floating-point calculations  = speeeeed
>  3) block tables = case statement
>  4) data tables = database support
>  5) matrices = matrix & math support
>
>It would be handy to create a table in your method and just say:
>
>MyTable atCol:1 atRow:2 put: 5.5.
>MyTable update. "This recalculates the contents in the table"
>result:= MyTable atCol: 3 atRow: 2.
>^result.
>
>I have implemented my own spreadsheet in Pascal where I defined some
>positions as variables.
>MyTable:=
>{ {  "This"  "is"  "a"  "Table" }
>    {  0:input  3.14:pi  =input*pi:angle  =sin(angle):output }
>    { 0  0  0  0 }
>    { "traditionally:"
>    { 0  3.14   =A5*B5  =sin(C5) }
>  }
>
>
>MyTable at: $input put: 5.5.
>MyTable update.
>result:= MyTable at: $output.
>
>Or similar:
>
>mode:= inputMode.
>pos:= MyTable find: mode inRange: searchRange.
>result:= MyTable at: (pos addRow:1).
>
>
>Within the table, one might even connect with other tables.
>Or even databases...
>I have added a spreadsheet support to my own commercial application and it
>gives quite a difference. So I thought, why not have it in squeak too??
>
>For now, it is just an idea, but that is how things start..
>
>Greetings,
>     Dirk


-- 




More information about the Squeak-dev mailing list