Gary MarsdenSlide 1University of Cape Town Designing usable programming languages.

Slides:



Advertisements
Similar presentations
What Was I Thinking??. Key Terms 1. Control 1. Control 2. Design Mode 2. Design Mode 3. Event 3. Event 4. Form 4. Form 5. Interface 5. Interface 6. Properties.
Advertisements

An Introduction to Visual Basic Terms & Concepts.
Introduction to Visual Basic.NET Uploaded By: M.Sheraz anjum.
Programming Paradigms and languages
CS0004: Introduction to Programming Visual Studio 2010 and Controls.
CS0004: Introduction to Programming Introduction to Programming.
Creating a Program In today’s lesson we will look at: what programming is different types of programs how we create a program installing an IDE to get.
Chapter 5: Elementary Data Types Properties of types and objects –Data objects, variables and constants –Data types –Declarations –Type checking –Assignment.
Java Programming, 3e Concepts and Techniques Chapter 5 Arrays, Loops, and Layout Managers Using External Classes.
Software Development B.Sc. (Hons) Multimedia ComputingMultimedia Authoring.
Interact: RETSINA’s Agent Editor Provides a GUI interface to agent’s task and reduction libraries Allows –quick development of new libraries –easy extensions.
Computers: Tools for an Information Age
Introduction to Alice Basics : What is Alice? Object Oriented Definitions What Does it Look Like? Where Can I Use it?
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
1 An Introduction to Visual Basic Objectives Explain the history of programming languages Define the terminology used in object-oriented programming.
 Visual Basic is an object-oriented language used to write application programs that run in Windows or on the Internet using a graphical user interface.
Programming Paradigms Imperative programming Functional programming Logic programming Event-driven programming Object-oriented programming A programming.
Java Swing Joon Ho Cho. What is Java Swing? Part of the Java Foundation Classes (JFC) Provides a rich set of GUI components Used to create a Java program.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Slide 1 Chapter 2 Visual Basic Interface. Slide 2 Chapter 2 Windows GUI  A GUI is a graphical user interface.  The interface is what appears on the.
Microsoft Visual Basic 2012 CHAPTER ONE Introduction to Visual Basic 2012 Programming.
Microsoft Visual Basic 2005 CHAPTER 1 Introduction to Visual Basic 2005 Programming.
Programming 101 with Python: an open-source, cross-platform, and fun language By J. Burton Browning, Ed.D. Copyright © J. Burton Browning All rights reserved.
Visual Basic Fundamental Concepts. Integrated Development Enviroment Generates startup form for new project on which to place controls. Features toolbox.
Programming Languages: Telling the Computers What to Do Chapter 16.
A First Program Using C#
Visual Basic Chapter 1 Mr. Wangler.
JavaScript and The Document Object Model MMIS 656 Web Design Technologies Acknowledgements: 1.Notes from David Shrader, NSU GSCIS 2.Some material adapted.
Languages and Environments Higher Computing Unit 2 – Software Development.
Visual Basic Advanced Programming.
COMPUTER PROGRAMMING Source: Computing Concepts (the I-series) by Haag, Cummings, and Rhea, McGraw-Hill/Irwin, 2002.
® Microsoft Access 2010 Tutorial 11 Using and Writing Visual Basic for Applications Code.
An Introduction to Visual Basic
© 2006 Lawrenceville Press Slide 1 Chapter 3 Visual Basic Interface.
JSP Java Server Pages Softsmith Infotech.
Computer Science 111 Fundamentals of Programming I Overview of Programming.
Gary MarsdenSlide 1University of Cape Town Principles of programming language design Gary Marsden Semester 2 – 2001.
Names Variables Type Checking Strong Typing Type Compatibility 1.
1 Chapter 2 First Java Programs Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
Introduction to Programming Peggy Batchelor.
Learning objectives By the end of this lecture you should be able to:  have a well-earned rest! Ch 24 Beyond the second semester.
Gary MarsdenSlide 1University of Cape Town Human-Computer Interaction - 3 Programmer Support Gary Marsden ( ) July 2002.
1 3. Computing System Fundamentals 3.1 Language Translators.
1 Type Checking Type checking ensures that the operands and the operator are of compatible types Generalized to include subprograms and assignments Compatible.
Module 4 Part 2 Introduction To Software Development : Programming & Languages Introduction To Software Development : Programming & Languages.
MS Visual Basic 6 Walter Milner. VB 6 0 Introduction –background to VB, A hello World program 1 Core language 1 –Projects, data types, variables, forms,
Computing System Fundamentals 3.1 Language Translators.
CS 101 Test 2 Study Guide Acronyms RAD - Rapid Application Development IDE - Integrated Development Environment GUI - Graphical User Interface VB - Visual.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design Second Edition by Tony Gaddis.
9-Nov-97Tri-Ada '971 TASH An Alternative to the Windows API TRI-Ada ‘97 Terry J. Westley
1 Lecture 5: Interactive Tools: Prototypers (HyperCard, Director, Visual Basic), Interface Builders Brad Myers Advanced User Interface Software.
Chapter 1 Introduction Visual Basic.NET. Copyright (c) 2003 by Prentice Hall Provided By: Qasim Al-ajmi 2 Objectives Explain what Visual Basic is Contrast.
JavaScript 101 Introduction to Programming. Topics What is programming? The common elements found in most programming languages Introduction to JavaScript.
Chapter – 8 Software Tools.
Microsoft Visual Basic 2012: Reloaded Fifth Edition Chapter One An Introduction to Visual Basic 2012.
PROGRAMMING (1) LECTURE # 1 Programming and Languages: Telling the Computer What to Do.
Visual Basic Fundamental Concepts
Visual Basic.NET Windows Programming
Introduction to Computer CC111
Chapter Topics 15.1 Graphical User Interfaces
Introduction to Visual Basic 2008 Programming
Chapter 2 First Java Programs
An Introduction to Visual Basic
Chapter 2 Visual Basic Interface
Visual Basic..
Exception Handling and Event Handling
Chapter 15: GUI Applications & Event-Driven Programming
Basic OOP Concepts and Terms
Tutorial 11 Using and Writing Visual Basic for Applications Code
Presentation transcript:

Gary MarsdenSlide 1University of Cape Town Designing usable programming languages

Gary MarsdenSlide 2University of Cape Town 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 –

Gary MarsdenSlide 3University of Cape Town Current tools We shall call these RAD (Rapid Application Development) tools

Gary MarsdenSlide 4University of Cape Town Problems Simplifications are made, which turn out to be “complexifications” Computer scientists don’t seem to care

Gary MarsdenSlide 5University of Cape Town Previous end user languages BASIC –Did not need to be crippled; hardware was simple –Encouraging –Extensible (PEEK, POKE) –Teaching language

Gary MarsdenSlide 6University of Cape Town Current Systems Passive –Toolkits –Components Active –“Zero” functionality –Graphically aided –Interface builders –RAD –Visual Language –Interface spec systems

Gary MarsdenSlide 7University of Cape Town 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

Gary MarsdenSlide 8University of Cape Town Learning Curve

Gary MarsdenSlide 9University of Cape Town Modes Design and execute modes

Gary MarsdenSlide 10University of Cape Town 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

Gary MarsdenSlide 11University of Cape Town Screw solution

Gary MarsdenSlide 12University of Cape Town 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

Gary MarsdenSlide 13University of Cape Town 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)

Gary MarsdenSlide 14University of Cape Town Editors Detect syntax errors Automatic indentation (essential for HC) Statement colouring Mixed mode

Gary MarsdenSlide 15University of Cape Town Customisation Re-use IDE features Hierarchy of widget methods/properties Interface structure reflect code structure

Gary MarsdenSlide 16University of Cape Town Structure Object based “Reflexive interaction paradigm” Object instantiation through “cut” and “paste” Ability to create own objects

Gary MarsdenSlide 17University of Cape Town Syntax No ambiguities - either visual or natural language Ideally, syntax should resemble “real” language

Gary MarsdenSlide 18University of Cape Town 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

Gary MarsdenSlide 19University of Cape Town 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”

Gary MarsdenSlide 20University of Cape Town 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)

Gary MarsdenSlide 21University of Cape Town Programmer needs Instant gratification Pleasantness Low viscosity and low premature commitment

Gary MarsdenSlide 22University of Cape Town Paradigm Functional / Declarative Visual Languages Programming By Example

Gary MarsdenSlide 23University of Cape Town 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

Gary MarsdenSlide 24University of Cape Town 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

Gary MarsdenSlide 25University of Cape Town 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)

Gary MarsdenSlide 26University of Cape Town 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

Gary MarsdenSlide 27University of Cape Town Fundamental widget Are all widgets just a subclass of button?

Gary MarsdenSlide 28University of Cape Town Language isomorphism's Labels and text box are easy

Gary MarsdenSlide 29University of Cape Town Radio and check buttons Radio is easy - enumerated type Check boxes need a new, variant enumerated –style = (plain|(bold,italic,underline)

Gary MarsdenSlide 30University of Cape Town Radio and Checkboxes visulaised

Gary MarsdenSlide 31University of Cape Town Pizza

Gary MarsdenSlide 32University of Cape Town 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

Gary MarsdenSlide 33University of Cape Town Range variables A = [5 20] B = [5 20] C = [5 20] D = [5 20]

Gary MarsdenSlide 34University of Cape Town Buttons These turn out to be hard as they are verbs rather than nouns Settled for objects which contained event handlers for mouse input

Gary MarsdenSlide 35University of Cape Town Prototype Some of this has been implemented in Java