Well said.  When you think about it there are a number of features in Leo that 
allow personalized abstraction.  Organizer nodes are the simplest, but all the 
various methods for linking between distant parts of the tree are also helpful 
(backlinks, unls, bookmarks, tags, even clones ;-)
Cheers -Terry
      From: john lunzer <[email protected]>
 To: leo-editor <[email protected]> 
 Sent: Friday, March 3, 2017 9:11 AM
 Subject: Leo and abstraction
   
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. 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.


   

-- 
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