Table of Contents

visual programming notes

thinking in diagrams, flows or partial processes (notes to be gradually merged with Visual Programming)

aims/questions..

is it possible to create an environment which facilitates prototyping, yet enables optimisation for high performance 'production'? in which a number of representations which are not mutually exclusive are able to be accomodated. thus enabling different ways of expressing similar ideas, in a compatible/possibly complimetnry manner.

editing/running programms should be tightly linked. the editing environment should enhance the method of expressing the ideas. eg. emacs/vi for text, illustrator/gimp for graphics.

sketching solutions + filling in the details

demos and finished 'applications' should be equally possible

understandable by a range of people, programmers (familiar with the env, and unfamiliar), technical ppl who are not computer specialiasts (doctor, woodworker, civil engineer, etc) , creative ppl, who often use a computer as a tool (eg. video editing, graphic design, music,. etc). others (with some encouragement)

notes to expand

problems of representations, primacy of text or graphic rep.?

static vs. dynamic display

semantics

approaches

examples

protyping environment vs production systems

a good prototying environment enables rapidly testing of ideas, which usually involves throwing away a lot of test code and making many modifications to a range of more-or-less working programs. getting something working easily is more important than it working efficiently and/or accurately and/or elegantly. not that this is inherently the case; prototyping can help reveal an effcient, elegant acurate algorithm. the level of detail is at the algoritm/process rather than the level of machine detail (malloc, memcopy, etc+)

lots of interfaces to other things helps; either other code libs (filesystems, databases, protocols etc.) or interface to the real world (eg. servo control, instrument interfacing (sci/med instruments or music/synthesisers)) this saves time re.implementing the 'known' aspects of a problem.

custom hardware interfaceing; low level interupts, memory maps etc. data packing, os interface possibly. it should be possible to test an interface with some indication of performance, or interface with an interface that interfaces with the hardware. a test program should be able to be rewritten in asm or c (high level asm) or optimised to compile for target platform. usually cannot include the dev. environment /interpreter /whatever, req. specific binary format, and often minimal (if any) libs. sbcl compiler backend vs gcc compiler backend. ffigen from gcc. generating compiler backends from ABIs

schemix is a demonstration of using scheme in the linux kernel for prototyping kernel modules

mimise rewrites from working prototype → working production system. typically this cycle may involve several langauges, which are not nec. compatible thru the cycle.

prototyping?

visual languages?

asm/c?

visual programming in lisp

as a possible candidate for a visual language based on extending an existing lang.., (either CL, scheme or a future dialect).

why LISP?

“its been done” to a degree, look at OpenMusic from ircam, as an example. why does this include non-deterministic features? (see 'dataflow process network ' paper). there are a few links, but not much activity. there seem to have been a few attempts to do this.

“accelerating hindsight” http://www.nhplace.com/kent/PS/Hindsight.html

metaprogramming

“The Transition of Context-free Textual Languages into a Visual Programming Notation via Graph Techniques and a Meta Tool” Frank B�hler, Mike Callaghan and Paul Luker Copyright 1998 IEEE. Published in the Proceedings of Compsac'98, 17-21 August, 1998 at Vienna, Austria.

VLCC is an example of a graphical parser and programming language compiler generator. http://www.dmi.unisa.it/people/costagliola/www/home/ricerca/vlcc/vlcc.htm