Warning: This is a testimonial, sorry.

Lately I've been thinking about programming in general. My thoughts have 
centered on the limits of the human brain to understand computer programs. 
This was triggered by watching Inventing on Principle 
<https://www.youtube.com/watch?v=PUv66718DII>. It's a daunting multifaceted 
concept which I'm sure people spend their entire lives pondering.

Most recently I've been focusing on one facet, abstraction and program 
"units". I define a "unit" as a part of the program that is considered a 
piece onto itself which can be labeled and referred to as a whole. Perhaps, 
as a daily Leo user, this is easy to think about because Leo does its best 
to coerce programmers and programs into looking at programming through this 
lens.

Most tools do not ignore this concept all together. Most programming 
environments have some sort of "outline" window which allows you to view 
the structure of a program at a higher level. As I have experienced it this 
"outline" view is always dictated by the features of a language (ex. 
outline divided up at module, class, function levels). In addition most 
tools incorporate "code folding" to help a programmer focus on language 
specific programming units (again, ex. folding at class and function 
definitions). 

Leo takes this concept to its limit. Leo offers language agnostic 
abstraction at arbitrary levels. It allows a programmer to structure their 
program outside of the confines of the programming paradigms of the 
language they're programming in. Of course it still helps to use the 
language specific "units" as a guide, in fact this is what Leo does upon 
import to create an initial outline structure from programs originating 
outside of Leo. 

I can't ignore the freedom of arbitrary abstraction, and I've come to rely 
upon it so much that I struggle to use non-Leo environments. It is well 
known that the human brain has a limited working memory. The act of 
programming stretches working memory to it's limit. Leo provides an 
environment in which a program can seamlessly be restructured to fit within 
the bounds of a programmers individual working memory. 

I realize this is a "why" and not a "how" and that this doesn't help anyone 
get better acquainted with Leo. But, as a programmer if you've ever felt 
frustrated with the organizational constructs of the language you're 
working in you might be surprised to realize that after using Leo it wasn't 
the language that was the problem, but a lack of tools to organize your 
programs in a way that makes sense to *you*.

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to