Comment by _delirium

16 years ago

It actually is the de-facto-standard modeling engine in a lot of areas, even some scientific areas, but mainly economics/finance. There are some pretty nuttily complex simulations written entirely in Excel, with the visualization part of the simulation done by popping up a chart--- you can even make it animated by popping up a new chart at a certain time interval. There's even a market in commercial spreadsheets, which you buy and load sort of like libraries: http://www.palisade.com/RISK/

Not necessarily a good idea, but somehow it caught on. One possible reason is that it was one of the earlier widely available pieces of software for doing declarative, dependency-based modeling that auto-propagates updates: if box A and box B are linked by a "B = 2*A", then B auto-updates whenever A changes, without you manually writing a propagate-updates loop. You can now do stuff like that in a lot of languages, but it's relatively recent (e.g., it's one of the new features JavaFX variables have).

Spreadsheets are the most popular declarative (or zero order functional) languages in the world. There were even talks about spreadsheets on the International Conference on Functional Programming 2009.

You can now do stuff like that in a lot of languages, but it's relatively recent

Saying "Lisp had it X years ago" sounds perhaps a little weenish, but... that sounds a lot like the Cells library, and the even older Garnet KR. Granted, they're quite a lot less accessible than spreadsheet programs.

FRP seems to be modern take on it. It's being very actively researched in the Haskell community.

  • Visicalc: 1979. Excel: 1985. Garnet: early 1990s. Cells: 2000 or so.

    On the other hand ... Sketchpad: 1963. (Constraint satisfaction, but not embedded in a general-purpose programming system.) Prolog: 1972. And Guy L Steele wrote a nice general-purpose constraint system in 1978. ("Constraints", MIT AI Memo 502.)

Twenty-plus years ago I wrote a complete blackjack game in a spreadsheet, all using 1-2-3 "slash" macro commands (not VBA or anything like that). It even did insurance and doubling-down. I was part of the team testing the product, and each of us on the test team built a different casino game -- one guy did craps, and found a bug in the random number generator.

Once you get your brain around the paradigm, it can be a powerful tool.