Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Designing usable programming languages University of Cape Town Gary Marsden Slide 1 End user programming • Look at the need to provide “graphical interface” programming languages for novice programmer • Many reasons why this is important – 40% of homes have computers – University of Cape Town Gary Marsden Slide 2 Current tools • We shall call these RAD (Rapid Application Development) tools University of Cape Town Gary Marsden Slide 3 Problems • Simplifications are made, which turn out to be “complexifications” • Computer scientists don’t seem to care University of Cape Town Gary Marsden Slide 4 Previous end user languages • BASIC – – – – Did not need to be crippled; hardware was simple Encouraging Extensible (PEEK, POKE) Teaching language University of Cape Town Gary Marsden Slide 5 Current Systems • Passive – Toolkits – Components • Active – – – – – – “Zero” functionality Graphically aided Interface builders RAD Visual Language Interface spec systems University of Cape Town Gary Marsden Slide 6 Favourites • HyperCard – free from Apple, – Graphics program to which was added language – Most popular on Macintosh • Visual Basic – Comes in VBA and full flavours – Windows / Office language of choice – Language to which was added graphics University of Cape Town Gary Marsden Slide 7 Learning Curve University of Cape Town Gary Marsden Slide 8 Modes • Design and execute modes University of Cape Town Gary Marsden Slide 9 Mode Solutions • Should not be modes • If modes are to be used – Provide adequate feedback on mode – Not conflict with previous use – Reflect real world metaphor University of Cape Town Gary Marsden Slide 10 Screw solution University of Cape Town Gary Marsden Slide 11 Translation • Compile on demand – Full program need not be written before a part can be run – Compile errors only reported by sub-program – Should be possible to do full compilation University of Cape Town Gary Marsden Slide 12 Adding widgets – HyperCard - methods only – Visual Basic - attributes only – Should allow widgets to be added as first class citizens (data type completeness) – Full interface should be available (object browser) University of Cape Town Gary Marsden Slide 13 Editors • Detect syntax errors • Automatic indentation (essential for HC) • Statement colouring • Mixed mode University of Cape Town Gary Marsden Slide 14 Customisation • Re-use IDE features • Hierarchy of widget methods/properties • Interface structure reflect code structure University of Cape Town Gary Marsden Slide 15 Structure • • • • Object based “Reflexive interaction paradigm” Object instantiation through “cut” and “paste” Ability to create own objects University of Cape Town Gary Marsden Slide 16 Syntax • No ambiguities - either visual or natural language • Ideally, syntax should resemble “real” language University of Cape Town Gary Marsden Slide 17 Data Types • Coercion – Typeless, auto. Coercion, Mixed mode (integer ~ real), Pseudostrong, Strong • • • • Multimedia Dynamic binding (visual binding, “me, this”) Allow strong typing Semantically equivalent objects should be treated identically University of Cape Town Gary Marsden Slide 18 Data Structures • • • • HC has none, VB has no dynamic ones Persistent Multimedia (universe of discourse) References – Form1.text1 = “Hello” – Set card field “1” of card “1” to “Hello” University of Cape Town Gary Marsden Slide 19 Integration • Language reflect interface concepts • Universe of discourse – Use of widgets in IDE not available to programmer – Control of widgets different from language and IDE • Self implementation – Compilers written in own language -> IDE written in script language (reflection) University of Cape Town Gary Marsden Slide 20 Programmer needs • Instant gratification • Pleasantness • Low viscosity and low premature commitment University of Cape Town Gary Marsden Slide 21 Paradigm • Functional / Declarative • Visual Languages • Programming By Example University of Cape Town Gary Marsden Slide 22 Programming by Example • Great for getting people stared, but there comes a limit to the inference engine and we bring a step into the learning curve University of Cape Town Gary Marsden Slide 23 Functional / Declarative • State destination, not journey • Referential transparency • Recursion not so good – poor transferable skill • “Functional languages are unnatural to use” – demand premature commitment – role expressive, but highly viscose University of Cape Town Gary Marsden Slide 24 Declarative IO • Fudgets • Monads / Continuation • Unique types – one reference at a time – fac 1 = 1 – fac n = n * (fac(n-1)) • Stick with OO for now (possibly ABC or Turing) University of Cape Town Gary Marsden Slide 25 Representing Widgets • How do you talk about widgets in a language? – Find fundamental widget “particle” – Align language semantics to widget semantics • If you can do this, – focus on problem domain – increase language role expressiveness University of Cape Town Gary Marsden Slide 26 Fundamental widget • Are all widgets just a subclass of button? University of Cape Town Gary Marsden Slide 27 Language isomorphism's • Labels and text box are easy University of Cape Town Gary Marsden Slide 28 Radio and check buttons • Radio is easy - enumerated type • Check boxes need a new, variant enumerated – style = (plain|(bold,italic,underline) University of Cape Town Gary Marsden Slide 29 Radio and Checkboxes visulaised University of Cape Town Gary Marsden Slide 30 Pizza University of Cape Town Gary Marsden Slide 31 Range Selection • Widgets to select values can be classified as follows: – – – – One from a small range Several from discrete Single from continuous Sub-range from range University of Cape Town Gary Marsden Slide 32 Range variables • • • • A = [5<-|->20] B = [5<-|-|->20] C = [5<-7->20] D = [5<-7-13->20] University of Cape Town Gary Marsden Slide 33 Buttons • These turn out to be hard as they are verbs rather than nouns • Settled for objects which contained event handlers for mouse input University of Cape Town Gary Marsden Slide 34 Prototype • Some of this has been implemented in Java University of Cape Town Gary Marsden Slide 35