Hybrid spreadsheet and coding environment supporting multiple programming languages
A method of implementing a spreadsheet includes, by a processor of a computing device, executing programming instructions that cause the computing device to output a prompt that comprises a plurality of candidate programming languages. When the system receives, in response to the prompt, a user selection of one of the candidate programming languages, it will display a user interface comprising a first interface area that displays one or more sheets of a spreadsheet. Each of the sheets comprises a plurality of cells, at least some of which comprise code in the spreadsheet formula language that references functions or data in the selected programming language.
1 . A method of implementing a spreadsheet, the method comprising, by a processor of a computing device:
outputting a prompt that comprises a plurality of candidate programming languages;
receiving, in response to the prompt, a user selection of one of the candidate programming languages;
displaying a user interface comprising a first interface area that displays one or more sheets of a spreadsheet, wherein each of the sheets comprises a plurality of cells, at least some of which comprise code in a spreadsheet formula language that references functions or data in the selected programming language;
identifying, from a plurality of candidate formula evaluator modules, a formula evaluator module that is associated with the selected programming language;
using the identified formula evaluator module to process functions associated with the plurality of cells to generate, for at least a subset of the cells, a plurality of values; and
writing the plurality of values to a key-value store,
wherein:
using the identified formula evaluator module to process functions associated with the plurality of cells to generate the plurality of values comprises:
generating a first updated value for a first cell in the subset of cells, and
using the first updated value to generate a second updated value for a second cells in the subset of cells; and
writing the plurality of values to the key-value store comprises:
writing the first updated value to a key-value store in association with a key of the first cell, and
writing the second updated value to the key-value store in association with a key of the second cell.
2 . The method of claim 1 further comprising, by the processor of the computing device:
after the spreadsheet has been closed, in response to receiving a command to open the spreadsheet:
displaying the user interface comprising the spreadsheet with the plurality of cells,
using the identified formula evaluator module to retrieve, from the key-value store, values for at least the subset of the cells, and
displaying, in the user interface, each retrieved value in a location of its associated cell.
3 . The method of claim 1 , wherein;
the user interface further comprises a second interface area comprising a coding window corresponding to one or more blocks of programming instructions in the selected programming language,
the programming instructions, when executed, will cause a computing device to update one or more variables used in at least some of the cells.
4 . The method of claim 3 , wherein the second interface area comprises a code editor window via which a user may enter and/or revise the one or more blocks of programming instructions.
5 . The method of claim 3 , wherein the second interface area comprises an execution window comprising a plurality of execution bars that may be reordered to define an order of execution of the one or more blocks of programming instructions.
6 . A system, comprising:
a processor;
a display device; and
a non-transitory computer-readable medium containing programming that are configured to cause the processor to:
generate a prompt that comprises a plurality of candidate programming languages,
in response to receiving a user selection of one of the candidate programming languages based on the prompt, causing the display device to display a user interface comprising a first interface area that displays one or more sheets of a spreadsheet, wherein each of the sheets comprises a plurality of cells, at least some of which comprise code in a spreadsheet formula language that references functions or data in the selected programming language,
identify, from a plurality of candidate formula evaluator modules, a formula evaluator module that is associated with the selected programming language,
use the identified formula evaluator module to process functions associated with the plurality of cells to generate, for at least a subset of the cells, a plurality of values, and
write the plurality of values to a key-value store,
wherein:
the instructions to use the identified formula evaluator module to process functions associated with the plurality of cells to generate the plurality of values comprise instructions to:
generate a first updated value for a first cell in the subset of cells, and
use the first updated value to generate a second updated value for a second cells in the subset of cells; and
the instructions to write the plurality of values to the key-value store comprise instructions to:
write the first updated value to the key-value store in association with a key of the first cell, and
write the second updated value to the key-value store in association with a key of the second cell.
7 . The system of claim 6 , further comprising additional programming instructions to, after the spreadsheet has been closed, in response to receiving a command to open the spreadsheet:
display the user interface comprising the spreadsheet with the plurality of cells;
use the identified formula evaluator module to retrieve, from the key-value store, values for at least the subset of the cells; and
display, in the user interface, each retrieved value in a location of its associated cell.
8 . The system of claim 6 , wherein;
the user interface further comprises a second interface area comprising a coding window corresponding to one or more blocks of programming instructions in the selected programming language, and
the programming instructions, when executed, will cause a computing device to update one or more variables used in at least some of the cells.
9 . The system of claim 8 , wherein the second interface area comprises a code editor window via which a user may enter and/or revise the one or more blocks of programming instructions.
10 . The system of claim 8 , wherein the second interface area comprises an execution window comprising a plurality of execution bars that may be reordered to define an order of execution of the code-one or more blocks of programming instructions.
11 . A computer program product comprising a non-transitory computer-readable medium containing programming instructions that are configured to cause a processor to:
cause a computing device to output a prompt that comprises a plurality of candidate programming languages;
in response to receiving a user selection of one of the candidate programming languages based on the prompt, cause the computing device to display a user interface comprising a first interface area that displays one or more sheets of a spreadsheet, wherein each of the sheets comprises a plurality of cells, at least some of which comprise code in a spreadsheet formula language that references functions or data in the selected programming language;
identify, from a plurality of candidate formula evaluator modules, a formula evaluator module that is associated with the selected programming language;
use the identified formula evaluator module to process functions associated with the plurality of cells to generate, for at least a subset of the cells, a plurality of values; and write the plurality of values to a key-value store,
wherein:
the instructions to use the identified formula evaluator module to process functions associated with the plurality of cells to generate the plurality of values comprise instructions to:
generate a first updated value for a first cell in the subset of cells, and
use the first updated value to generate a second updated value for a second cells in the subset of cells, and
the instructions to write the plurality of values to the key-value store comprise instructions to:
write the first updated value to the key-value store in association with a key of the first cell, and
write the second updated value to the key-value store in association with a key of the second cell.
12 . The computer program product of claim 11 , wherein:
the instructions to use the identified formula evaluator module to process functions associated with the plurality of cells to generate the plurality of values comprise instructions to:
generate a first updated value for a first cell in the subset of cells, and
use the updated value to generate a second updated value for a second cells in the subset of cells; and
the instructions to write the plurality of values to the key-value store comprises:
write the first updated value to the key-value store in association with a key of the first cell, and
write the second updated value to the key-value store in association with a key of the second cell.
13 . The computer program product of claim 11 , further comprising additional programming instructions to, after the spreadsheet has been closed, in response to receiving a command to open the spreadsheet:
display the user interface comprising the spreadsheet with the plurality of cells;
use the identified formula evaluator module to retrieve, from the key-value store, values for at least the subset of the cells; and
display, in the user interface, each retrieved value in a location of its associated cell.
14 . The computer program product of claim 11 , wherein:
the user interface further comprises a second interface area comprising a coding window corresponding to one or more blocks of programming instructions in the selected programming language, and
the programming instructions, when executed, will cause a computing device to update one or more variables used in at least some of the cells.
15 . The computer program product of claim 14 , wherein the second interface area comprises one or more of the following:
a code editor window via which a user may enter and/or revise the one or more blocks of programming instructions; or
an execution window comprising a plurality of execution bars that may be reordered to define an order of execution of the code-one or more blocks of programming instructions.
16 . A method of implementing a spreadsheet, the method comprising, by a processor of a computing device:
outputting a prompt that comprises a plurality of candidate programming languages;
receiving, in response to the prompt, a user selection of one of the candidate programming languages;
displaying a user interface comprising a first interface area that displays one or more sheets of a spreadsheet, wherein each of the sheets comprises a plurality of cells, at least some of which comprise code in a spreadsheet formula language that references functions or data in the selected programming language;
identifying, from a plurality of candidate formula evaluator modules, a formula evaluator module that is associated with the selected programming language;
using the identified formula evaluator module to process functions associated with the plurality of cells to generate, for at least a subset of the cells, a plurality of values;
writing the plurality of values to a key-value store; and
after the spreadsheet has been closed, in response to receiving a command to open the spreadsheet:
displaying the user interface comprising the spreadsheet with the plurality of cells,
using the identified formula evaluator module to retrieve, from the key-value store, values for at least the subset of the cells, and
displaying, in the user interface, each retrieved value in a location of its associated cell.
17 . The method of claim 16 , wherein:
the user interface further comprises a second interface area comprising a coding window corresponding to one or more blocks of programming instructions in the selected programming language; and
wherein the programming instructions, when executed, will cause a computing device to update one or more variables used in at least some of the cells.
18 . The method of claim 17 , wherein the second interface area comprises one or more of the following:
a code editor window via which a user may enter and/or revise the one or more blocks of programming instructions, or
an execution window comprising a plurality of execution bars that may be reordered to define an order of execution of the one or more blocks of programming instructions.
19 . A system comprising:
a processor;
a display device; and
a non-transitory computer-readable medium containing programming instructions that are configured to cause the processor to:
generate a prompt that comprises a plurality of candidate programming languages,
in response to receiving a user selection of one of the candidate programming languages based on the prompt, causing the display device to display a user interface comprising a first interface area that displays one or more sheets of a spreadsheet, wherein each of the sheets comprises a plurality of cells, at least some of which comprise code in a spreadsheet formula language that references functions or data in the selected programming language,
identify, from a plurality of candidate formula evaluator modules, a formula evaluator module that is associated with the selected programming language,
use the identified formula evaluator module to process functions associated with the plurality of cells to generate, for at least a subset of the cells, a plurality of values,
write the plurality of values to a key-value store, and
after the spreadsheet has been closed, in response to receiving a command to open the spreadsheet:
display the user interface comprising the spreadsheet with the plurality of cells;
use the identified formula evaluator module to retrieve, from the key-value store, values for at least the subset of the cells; and
display, in the user interface, each retrieved value in a location of its associated cell.
20 . The system of claim 19 , wherein:
the user interface further comprises a second interface area comprising a coding window corresponding to one or more blocks of programming instructions in the selected programming language, and
the programming instructions, when executed, will cause a computing device to update one or more variables used in at least some of the cells.
21 . The system of claim 20 , wherein the second interface area comprises one or more of the following:
a code editor window via which a user may enter and/or revise the one or more blocks of programming instructions; or
an execution window comprising a plurality of execution bars that may be reordered to define an order of execution of the one or more blocks of programming instructions.
22 . A computer program product comprising a non-transitory computer-readable medium containing programming instructions that are configured to cause a processor to:
cause a computing device to output a prompt that comprises a plurality of candidate programming languages;
in response to receiving a user selection of one of the candidate programming languages based on the prompt, cause the computing device to display a user interface comprising a first interface area that displays one or more sheets of a spreadsheet, wherein each of the sheets comprises a plurality of cells, at least some of which comprise code in a spreadsheet formula language that references functions or data in the selected programming language;
identify, from a plurality of candidate formula evaluator modules, a formula evaluator module that is associated with the selected programming language;
use the identified formula evaluator module to process functions associated with the plurality of cells to generate, for at least a subset of the cells, a plurality of values;
write the plurality of values to a key-value store; and
after the spreadsheet has been closed, in response to receiving a command to open the spreadsheet:
display the user interface comprising the spreadsheet with the plurality of cells,
use the identified formula evaluator module to retrieve, from the key-value store, values for at least the subset of the cells, and
display, in the user interface, each retrieved value in a location of its associated cell.
23 . The computer program product of claim 22 , wherein:
the user interface further comprises a second interface area comprising a coding window corresponding to one or more blocks of programming instructions in the selected programming language, and
the programming instructions, when executed, will cause a computing device to update one or more variables used in at least some of the cells.
24 . The computer program product of claim 23 , wherein the second interface area comprises one or more of the following:
a code editor window via which a user may enter and/or revise the one or more blocks of programming instructions; or
an execution window comprising a plurality of execution bars that may be reordered to define an order of execution of the one or more blocks of programming instructions.