Skip to content

cheery/essence

Repository files navigation

This directory contains material used to study editing of
programs in structured form.

All programming tools that are common at the time of writing this
document store programs as text. Such programs are easy to edit with a
text editor but they need to be parsed before they can be evaluated or
analyzed. Parsing converts the source code into a structured form, usually
an abstract syntax tree, which is easy to evaluate by the computer.

Parsers are difficult to produce, and this produces limits into programming
language design, unless they are mitigated by using a syntax linear to
structured form, such as in lisp. This in overall makes it difficult to
discover the impact of an individual change on language design.

When parsing fails, a syntax error is introduced. Syntax errors always
prevent the evaluation of the program. Programmers have to learn cope with
syntax errors. Programming is intrinsically hard, so excess difficulties aren't nice.

Parser needs to be reimplemented inside editor to make the editor aware of
the structure. Structure aware text editors are not simple. Multiple different
languages in single source file add extra complication to the subject.

Least importantly, parsing is a computationally expensive operation.

Despite shortcomings, programming is still done with text editors today
as they have benefits that cannot be skipped. First of all text is simply
what everyone does. Nobody considers alternatives. This is not the only
reason for text dominance though.

Text files are easy to create and a simple text editor is easy to implement.
As a structure the text files are easy to understand, although there are many
encodings for text. Text is generic purpose, so once you have a simple text
editor, you can use it to write programs.

There are tons of tools such as diff and grep, that operate on text files.
They can be directly used to source code when it's text. There are many
algorithms for text, such as ones used to provide collaborative editing.
Lot of editors exists, some that allow text to be folded to hide lines
that are irrelevant at the time. Also version control systems can diff
text.

Programming languages are barely ever strict, so users can add comments
and layout the code by adding superfluous spaces and carriages. This is
so useful that many editors attempt to help user with a heuristic which
adds spaces after carriage.

Programming in structured form has a lot of potential as it could eliminate
parsers. Therefore it needs to be considered essential to research through.
The Essential Editor Research Project studies structured form editing.

The latest working editor is seed/, it requires python2.7, pygame and pyopengl. 
It should run when you type "python main.py" inside it's directory.

If you are interested about this project, I recommend you come to chat with others.
We use IRC: irc.freenode.net#essence

There's also the mailing list: structuredform@googlegroups.com

https://groups.google.com/forum/?fromgroups#!forum/structuredform

About

Programming environment that failed to redefine terms in programming

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published