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