Lecture 6: Usability of programming languages For many years, it seemed that conventional text programming would eventually be replaced by visual programming languages, where program behaviour is defined by drawing diagrams (many proposals resembled software engineering diagrams, such as those in UML – flowcharts, object interaction, state charts etc. At a time when software development methods involved creating a complete specification in diagram form, then employing programmers to convert those into code, it seemed as though programming could be completely automated. However the fallacy of this reasoning was the same error made when FORTRAN (Formula Translation) was considered to be automatic programming – any representation that defines the program behaviour insufficiently precise detail to be compiled will be more like programming than like design. Drawing highly detailed diagrams is often more laborious than writing highly detailed text, so it isn’t the case that diagrams will always have superior usability relative to text. Many elements of the modern WIMP interface originated in programming language research – the ancestor of the Windows and Macintosh GUIs was originally created at Xerox PARC as a user interface to the Smalltalk language, and Shneiderman’s principles of direct manipulation were originally described as an alternative to programming languages. It is likely that research into advanced programming techniques will continue to influence future user interfaces. There are also some good examples of programming languages that have been designed for use by special groups – end user programmers who are not professionally trained in programming, or educational programming languages that illustrate programming language principles using graphical display elements. Examples include the LabView language for programming laboratory instrumentation and control, Max/MSP used for music performance and digital art installations, and Scratch, used as a first programming language for children around the ages of 8-10. For many years, programmers often argued that their favourite language was the best in the world, almost like children arguing whether a tractor is better than a Ferrari. It should be clear that different languages are good for different purposes, and for use by different people. These often include abroad mix of visual and textual (or even physical and tangible) elements, selected to meet specific needs.