Coder Social home page Coder Social logo

spreadsheet's Introduction

spreadsheet

A possible future of the spreadsheet

Everyone has access to a spreadsheet. Google sheets or Microsoft Excel are both available as are others.

The spreadsheet is ideal for accountants who want to list incomes and expenses month by month. The months are put as the headings of columns and the expenses are put as headings of rows. Then you type in the amount of each expense in each month. The totals show per month in the bottom row and per expenses in the final colum.

The spreadsheet is optimised for that accountancy task and can be used for other tasks which are very similar.

The analogy in programming is a two dimensional array or 2 dimensional table.

But lots of tasks don't fit neatly into rows and columns. Data often doesn't fit neatly into a 2 dimensional array.

If you want to create a table of cities with population, density, car ownership and traffic accidents, this isn't a simple rows and columns task.

In programming it is likely we would use structured data, something like this:

cities {

name:

pop:

density:

cars:

accidents:

}

What I envisage is that the future spreedsheet (let's call is a 'datasheet') has the same ability to handle structured data. (The current spreadsheet would become a subset, an option, within the datasheet.)

Opening a datasheet would allow the user to opt for the traditional spreedsheet format or for the structured data format. There would be some ability to auto-swap the manipulation of data between the two formats.


Using structured data format

First you define the fields you want to input and manipulate. This would be a name for the structure ("Cities") then the labels of the values ("name", "pop" etc)

Data could be output as jason files or csv etc.

Manually inputting data would be filling in forms that show:

City 434 // autogenerated internal unique identifier

City.name = ________________ (text)

City.pop = ________________ (integer)

City.density _______________ (index)

City.cars _______________ (integer)

City.accidents __________ (integer)

(The detail of data types could include specialist indexes or rates per something)

If uploading a csv file end-of-line would probably means end of the specific structure. Commas would separate the individual values.


Manipulating data

Current spreadhsheets use code such as "=M15 + J34" to say take the value in the cell where column M intersects row 15, add the value in the cell where column J interescts row 34 and place the sum in the current cell (where this code is being typed)

In the data sheet this would become

"=city432.cars + city433.cars" to say take the value in city432.cars, add it to the value in city433.cars and place it in the current position.

So what is the current position if it isn't a cell?

It is a results box.


Creating a results box

When the data struture has been defined, we can also define result boxes.

Click the create a result box option. Give it a name and define what it is the result of.


Result box name: Number of cities

Result box definition: =sum(Cities)


Result box name: Number of accidents

Result box definition: sum(Cities.accidents)


Result box name: Total population

Result box definition: sum(Cities.pop)


Many of these could be autogenerated as basic options, but ones that are more task specific could include


Result box name: average city population

Result box definition: Total population/Number of Cities


Result box name: Total average accidents per person

Result box definition: Total Accidents/Total population


Manipulation within structures

Going back to the original structure

City 434 // autogenerated internal unique identifier

City.name = ________________ (text)

City.pop = ________________ (integer)

City.density _______________ (index)

City.cars _______________ (integer)

City.accidents __________ (integer)

This could include manipulations within the structure (like classes can have methods)

City.accidents/City.pop = City.accidents/City.pop (math auto computed)

City.accidents/City.cars = City.accidents/City.cars (math auto computed)

Is this possible?

Yes, it is possible. Has it already been done?

spreadsheet's People

Contributors

love-liberty avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.