the larch - a visual interactive programming environment
DESCRIPTION
The Larch Environment is a visual interactive programming environment for Jython/Python, that makes programming more visual. Its is designed for the creation of visual interactive programs, and programs that operate as interactive technical literature. To this end, protocols for presenting objects visually have been devised. An active document based programming environment builds on the edit-run-debug cycle of a standard console, allowing a programmer to experiment with ideas, and develop visual programs at the same time. Additionally, a way of embellishing source code with visual content is presented.http://sites.google.com/site/larchenvTRANSCRIPT
![Page 1: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/1.jpg)
A VISUAL INTERACTIVE PROGRAMMING ENVIRONMENT FOR PYTHONhttp://sites.google.com/site/larchenv
G. FRENCHJ. R. KENNAWAY
A. M. DAYPYCON IRELAND 2011
The Larch Environment
Image by alcomm, flickr.com
![Page 2: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/2.jpg)
Motivation
![Page 3: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/3.jpg)
We look at three problems
![Page 4: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/4.jpg)
Textual output in a Python console can be difficult to understand(DEMO)
![Page 5: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/5.jpg)
Source code in a text editor is not interactive enoughConsoles are only good for a few lines at
a time
![Page 6: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/6.jpg)
Textual source code can be difficult to understand and comprehend(think the vertices
of a polygon in code form)
![Page 7: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/7.jpg)
What is‘The Larch Environment’?
![Page 8: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/8.jpg)
A visual interactive programming environment
![Page 9: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/9.jpg)
The goal is:To make programming more visual
![Page 10: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/10.jpg)
How do we do that?
• Visual object presentation• Programming environment
o Visual consoleo Worksheets
• Visual programming via embedded objects
![Page 11: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/11.jpg)
Visual object presentation
![Page 12: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/12.jpg)
“Pictures are pretty”DEMOVisual console
![Page 13: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/13.jpg)
What design pattern do we commonly use for developing GUI apps?
![Page 14: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/14.jpg)
Model
View Controller
MVC Architecture
![Page 15: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/15.jpg)
MVC requires:Model class, View class, Controller class
![Page 16: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/16.jpg)
Our approach:Type coercionType coercion: coerce an object to another type.
![Page 17: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/17.jpg)
Type coercion used throughout Python
![Page 18: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/18.jpg)
Examples:repr(), str()__index__()etc
![Page 19: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/19.jpg)
Its simple
![Page 20: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/20.jpg)
The Larch Environment:Use type coercion for visual presentation
![Page 21: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/21.jpg)
Coerce objects to something visual(a Pres)
![Page 22: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/22.jpg)
HOWTO:The simplified version
![Page 23: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/23.jpg)
Define the following method:def __present__(self, fragment, inherited_state)
![Page 24: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/24.jpg)
For Java objects:Implement Presentable interface
![Page 25: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/25.jpg)
Presentations constructed using a combinatorial API
![Page 26: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/26.jpg)
Label( ‘Hello’ ) Hello
Button.buttonWithLabel( ‘Button’ ) Button
a = Label( ‘A’ )b = Label( ‘B’ )c = Label( ‘C’ )d = Label( ‘D’ )
Row( [ a, b, c, d ] ) ABCD
Column( [ a, b, c, d ] ) ABCD
![Page 27: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/27.jpg)
Presentation combinators:Many moreFlow layouts, mathematical fractions, superscriptRich text, other utilitiesWrite your own by combining existing ones!P.S. Appearance controlled with
style sheets
![Page 28: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/28.jpg)
“Type coercion is easy”DEMO:__present__()
![Page 29: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/29.jpg)
Can also handle objects in the Java or Python standard libraries
![Page 30: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/30.jpg)
Create an ‘object presenter’.Register it for the relevant class.When asked to present an
instance of the class, Larch finds the appropriate presenter and uses it.(no monkeypatching
required)
![Page 31: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/31.jpg)
Thats how the images were shown;they are java.awt.BufferedImage objects
![Page 32: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/32.jpg)
Perspectives
![Page 33: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/33.jpg)
Different perspectives present an object in different ways
![Page 34: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/34.jpg)
Like different views in MVC
![Page 35: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/35.jpg)
The one I have talked about (__present__, Presentable, etc) is the ‘Default perspective’
![Page 36: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/36.jpg)
There are other perspectives
![Page 37: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/37.jpg)
E.g. The inspector perspectives
![Page 38: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/38.jpg)
“Visual Introspection”DEMO: INSPECTOR PERSPECTIVE
![Page 39: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/39.jpg)
Programming Environment-Visual console
![Page 40: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/40.jpg)
You’ve seen most of it
![Page 41: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/41.jpg)
So lets look at some of the more ‘esoteric’ features
![Page 42: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/42.jpg)
Model dragging
![Page 43: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/43.jpg)
Everything in Larch is an object being presented (via type coercion)
![Page 44: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/44.jpg)
The home pageProjectsThe console itself!
![Page 45: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/45.jpg)
What if we want to manipulate an object that we can see?
![Page 46: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/46.jpg)
CTRL+ALT +drag it!
![Page 47: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/47.jpg)
“I see something: how does it work?”DEMO: inspect a project
![Page 48: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/48.jpg)
An interesting side fact!
![Page 49: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/49.jpg)
Our source code editor does not edit text
![Page 50: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/50.jpg)
Its a structured editorCode is represented as an abstract syntax tree (AST)
![Page 51: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/51.jpg)
A perspective is used to present is as something that looks and behaves (mostly) like text
![Page 52: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/52.jpg)
It means our code is in tree form
![Page 53: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/53.jpg)
We can write our own refactorings!
![Page 54: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/54.jpg)
“Change your code fast!”DEMO:Refactoring
![Page 55: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/55.jpg)
Programming Environment-Worksheets
![Page 56: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/56.jpg)
Interactive consoles are great.Caveat: gets difficult when working with more than a few lines
of code at a timeE.g. Whole modules
![Page 57: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/57.jpg)
For complete programs we turn to a text editorWe lose the interactivity
![Page 58: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/58.jpg)
What if we could blend the two?(and add rich text to boot)
![Page 59: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/59.jpg)
“Python modules. With pictures.”DEMO: WORKSHEET(with cellular automata)
![Page 60: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/60.jpg)
Worksheets are active documents
![Page 61: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/61.jpg)
Act as modulesCan import code from other worksheets within the project
![Page 62: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/62.jpg)
You can divide your module code into a number of blocks
![Page 63: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/63.jpg)
Each block can show a result – a step along the path of a computation
![Page 64: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/64.jpg)
To refresh results: hit F5
![Page 65: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/65.jpg)
Rapid Edit-Run-Debug cycle:Alter codeF5Repeat
![Page 66: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/66.jpg)
“Code faster!”DEMO: Edit-Run-Debug cycle(cellular automata)
![Page 67: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/67.jpg)
Visual Programming
![Page 68: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/68.jpg)
Quite a rich history in the research community
![Page 69: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/69.jpg)
Circuit diagrams (LabView), data-flow diagrams, draggable tiles (Scratch, Squeak tile view), etc
![Page 70: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/70.jpg)
Nice for small simple programs
![Page 71: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/71.jpg)
Large programs look like rat’s nestsNot practical
![Page 72: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/72.jpg)
Text remains the dominant medium for source code
![Page 73: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/73.jpg)
Diagrams are still appropriate in certain circumstances
![Page 74: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/74.jpg)
Lets use diagrams (or visual layout) where we need them!
![Page 75: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/75.jpg)
“Play God.”DEMO: OrrerySub-demos:Table editorsEmbedded table
![Page 76: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/76.jpg)
“Drawings. Inside code.”DEMO: Polygon
![Page 77: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/77.jpg)
Embedded objects can use a protocol to customise their behaviour
![Page 78: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/78.jpg)
__py_eval__ Act like an expression - return the result of evaluating
__py_evalmodel__ Act like an expression - return an AST
__py_exec__ Act like a statement – called at runtime
__py_execmodel__ Act like a statement – return an AST
![Page 79: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/79.jpg)
AST GenerationWhat does this sound like?
![Page 80: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/80.jpg)
AST Generation~=Visual LISP macros
![Page 81: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/81.jpg)
Crosses compile-time / run-time barrier
![Page 82: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/82.jpg)
Compile-time (edit-time) objects available at run time
![Page 83: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/83.jpg)
Run-time objects / values can modify or be modified by compile-time objects
![Page 84: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/84.jpg)
“LISPy Smalltalky goodness”DEMO: LZW compressor
![Page 85: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/85.jpg)
Literate programming style extensions
![Page 86: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/86.jpg)
Literate programmingRefresher
![Page 87: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/87.jpg)
Invented by Knuthcirca 1984
![Page 88: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/88.jpg)
Basic idea
![Page 89: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/89.jpg)
Present programs as documents suitable for reading by people
![Page 90: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/90.jpg)
Break a program into sections, in the same way you do for a book
![Page 91: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/91.jpg)
Each section consists of a natural language description, and the code that implements it
![Page 92: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/92.jpg)
Present sections in the order of ‘human logic’*, not the order of the compiler
* Wikipedia article on Literate Programming
![Page 93: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/93.jpg)
Use the ‘weave’ tool to generate the human readable document, typeset with LATEX
![Page 94: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/94.jpg)
Use the ‘tangle’ tool to generate compile code for compiler
![Page 95: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/95.jpg)
Use the ‘tangle’ tool to generate compile code for compiler
![Page 96: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/96.jpg)
Our approach
![Page 97: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/97.jpg)
Use embedded objects to represent sections(Python expressions and suites)
![Page 98: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/98.jpg)
Allow them to be references/used in multiple placed throughout the document
![Page 99: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/99.jpg)
“Interactive pretty docuemnts”DEMO: Literate extensions
![Page 100: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/100.jpg)
Conclusions
![Page 101: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/101.jpg)
Visual object presentation by type-coercion
![Page 102: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/102.jpg)
Encourages a functional approach to UI composition Handling state changes:Re-create,
DON’T MUTATE
![Page 103: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/103.jpg)
Visual representation of values is a BIG EPIC WINEven if you use only visual cues (e.g.
borders around text)
![Page 104: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/104.jpg)
Worksheets are active documents. They also expand on the rapid edit-run cycle of the
console
![Page 105: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/105.jpg)
Allow for rapid development of visual interactive applications
![Page 106: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/106.jpg)
Visual programming by embedded objects
![Page 107: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/107.jpg)
Visual programmingwhere you need it
![Page 108: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/108.jpg)
Allows you to visually extend the syntax of the language
![Page 109: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/109.jpg)
No need to alter the compiler – its just embedded object references
![Page 110: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/110.jpg)
References to objects you implementyourself
![Page 111: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/111.jpg)
Embedded object referencesCan cross compile-time / run-time barrier
![Page 112: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/112.jpg)
LISPy / Smalltalky stuffIN PYTHON
![Page 113: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/113.jpg)
PROJECT STATUS
![Page 114: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/114.jpg)
Research Prototype(not ready for real use )
![Page 115: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/115.jpg)
TODOs:DocumentationBug fixesToo much more........
![Page 116: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/116.jpg)
Related Work
![Page 117: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/117.jpg)
MathematicaMathematica CDFIntentional Software Domain WorkbenchJetbrains Meta
Programming System
![Page 118: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/118.jpg)
Acknowledgements
![Page 119: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/119.jpg)
Academic supervisory team
Dr. Richard KennawayProf. Andy Day
University of East Anglia, Norwich, UK
![Page 120: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/120.jpg)
The Jython team
Developing The Larch would have been very difficult without Jython
![Page 121: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/121.jpg)
IF TIME ALLOWS:DEMO: KD-Tree
![Page 122: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/122.jpg)
IF TIME ALLOWS:DEMO: SIMPLE COMPILER
![Page 123: The Larch - a visual interactive programming environment](https://reader035.vdocuments.site/reader035/viewer/2022081419/555a2e64d8b42ab3088b5019/html5/thumbnails/123.jpg)
G. FRENCHJ. R. KENNAWAY
1. M. DAYhttp://sites.google.com/site/larchenv
THANK YOU!
Image by alcomm, flickr.com