<aside> 💡 You can try our live demo at https://app.planarly.com. Please be patient while it loads 😉
</aside>
Planarly is a 2D, visual, reactive, vector programming language following the spreadsheet metaphor. It looks like Excel, and at a basic level works like Excel, but it is first and foremost a proper programming language.
Most notable differences between Planarly and Excel, and our philosophy:
app.planarly.com runs completely inside your browser. Your document never leaves your computer. Further, the saved document is in a simple, plain text XML format. We don't hold your data hostage.
In Excel, sheets are organized as a single flat list within the document. In Planarly:
<aside> 💡 Uppercase labels are system-defined and always have a special meaning. Lower-case labels are user-defined.
</aside>
The tree structure is invaluable for organizing large amounts of information. You can reference data in other sheets by "walking the tree" using absolute paths such as Root.a
, or relative paths such as PP.a.b
. See Documents and By path for more details.
Cells in Excel are usually referred to by their absolute or relative positions, such as A4
or $A$5
. These non-descriptive names are strongly discouraged in Planarly, like in most programming languages. We strongly encourage the use of cell labels instead. Cells without labels cannot be referenced from other sheets.
To locate a cell, we offer many ways to express the intention of the user. E.g. ``jan_2021 -| temperature locates the cell in the row (
-) containing the text "jan 2021", and in the column (
|`) containing the text "temperature". Such expressions are more readable, less error prone, and more robust after future edits. See Referencing for details and other reference syntax.
A typical Excel document relies heavily on copy-pasted and duplicated formulas. Planarly instead encourages logic to be expressed via vectorized math. E.g. to compute three freelancers' wages from their hourly rate and hours, Planarly relies on one single formula #rate * #hours
to carry out a computation like:
$$ \begin{bmatrix} 55 \\ 60 \\ 40 \end{bmatrix} * \begin{bmatrix} 4 \\ 5 \\ 10 \end{bmatrix} = \begin{bmatrix} 220 \\ 300 \\ 400 \end{bmatrix} $$