We need spreadsheet oriented programming. A lot of people use Excel for all kinds of programming but it gets pretty complicated. Even something as simple as being able to name a column or a cell could go a long way towards improving these Excel programs.
Improv was an attempt to redefine the way a spreadsheet program should work, to make it easier to build new spreadsheets and to modify existing ones. Conventional spreadsheets used on-screen cells to store all data, formulas, and notes. Improv separated these concepts and used the cells only for input and output data. Formulas, macros and other objects existed outside the cells, to simplify editing and reduce errors. Improv used named ranges for all formulas, as opposed to cell addresses.
The biggest problem with spreadsheet-oriented programming is that we haven't yet found the way to abstract table sections into reusable 'functions', which currently leads to tons of copy/paste.
There was a proposal to add user-defined table-based functions to Excel, by a group of authors including none other than Simon Peyton Jones, a major contributor to Haskell and GHC. Here's that paper: http://research.microsoft.com/en-us/um/people/simonpj/Papers...
Curiously, the paper is titled 'Improving the world's most popular functional language: user-defined functions in Excel'.
(And by the way, you can already name and refer to any range of cells in Excel, not just a row or a column. There's also a GUI dialog that lets you manage the names, e.g. rename, delete etc.)
I wonder if functions, or their equivalent, is what makes programming complicated for many. Because now you have one set of code that crops up in multiple places, and have different states depending on how it gets used in those locations.
The reason people reach for spreadsheets seems to be because they are visual. much like the register panel "blinkenlights" on early computers, spreadsheets allows someone to glance across and check the state of things.
And in an earlier discussion about this, someone pointed me to Apple's Numbers spreadsheet. There you can have multiple freely moveable and expandable sheets on screen at the same time, each addressable via its own name.
Many people, including Microsoft, have tried and failed extrapolate on spreadsheeting towards a more general purpose programming environment, and it turns out to be very hard. A 2D grid of editable cells without a type system makes for a great scratchpad environment, but those features are also a barrier for abstraction.
The reason this keeps failing is that people don't want to do programming in Excel. They definitely don't want to do general purpose programming in Excel. They just want to use some formulas to calculate some things.
Of course, what they're doing is programming, but the genius of spreadsheets is that it lets "non-programmers" program while hiding from them the fact that they're programming.
Agreed - I'm a heavy Excel user and I use tables for 90% of data. Tables enforce unique column names, what is missing is the same for unique row names or ids plus an easier way to relate rows, without having to use index match everywhere, which soon becomes a real pain in the arse.
A separate me product - power pivot does something like this - ms needs to add this as native functionality to Excel, since normal pivot tables are so unflexible, I never use them anymore.