How Much Integrated Development Environments (Ides) Improve Productivity?

Total Page:16

File Type:pdf, Size:1020Kb

How Much Integrated Development Environments (Ides) Improve Productivity? JOURNAL OF SOFTWARE, VOL. 8, NO. 10, OCTOBER 2013 2425 How Much Integrated Development Environments (IDEs) Improve Productivity? Iyad Zayour, PhD Computer Science Lebanese University, Lebanon [email protected] Hassan Hajjdiab College of Engineering and Computer Science Abu Dhabi University, Abu Dhabi [email protected] Abstract—Modern integrated development environments and its massive libraries and ready-made components like (IDE) such as Microsoft Visual Studio and Eclipse, and UI controls. languages, such as Java and .Net, represent a far step ahead from the legacy development environments such as grep and A. Back then Emacs. One would assume that the productivity of programmers has been dramatically improved. To get a In our original investigation of the legacy system, the more realistic assessment of improvements, after more than goal was to improve the productivity of programmers ten years on an investigation on programmer productivity, particularly those doing software maintenance, as this we recently embarked into an investigation of a group of activity was considered to be highly inefficient by the programmers in a software company using all the modern target company. It was our conjecture that by studying features of Visual Studio. We found that indeed there were and observing programmers doing software maintenance, significant improvements. But, at the same time, other side we can identify the “inefficient” tasks. And then, we effects made the overall improvement not so clear. The reduce inefficiency by developing a tool that addresses complexity of the development environment and its associated libraries and ready-made components represent these tasks thus hoping to improve the overall a significant new source of loss of productivity that productivity of the programmers. Among other things, manifests the most in the cost of debugging and learning. A the study revealed that programmers spend significant better understanding of the challenges associated with time doing keyword searches (see Table 1 for the list of adopting new development technologies may rescue some of most common tasks). the gain in productivity. A more profound analysis, however, showed that the search problem was only a facade for a more complex Index Terms—IDE, Productivity, empirical software and fundamental task: program comprehension. We can engineering. show this by exploring the typical scenario for solving a maintenance request. In order to solve the request, a I. INTRODUCTION programmer must: More than ten years ago, we embarked into an 1. Locate the code related to the maintenance empirical investigation to help a telecommunication request that is often described in term of company reduce the cost of maintaining a large legacy program behavior description. The programmers software [1]. The development environment for that must search for any clue (user interface strings software was based on classical tools such as grep and and routine names) that relates the external Emacs and a Pascal like proprietary language. Today, program behavior to the code relevant to the with modern IDE tools such as Microsoft Visual Studio maintenance problem. and Eclipse, and languages such as Java and .Net, one 2. Understand the code that generates the behavior would assume that the productivity of programmers has so changes can be done. This code, however, is been dramatically improved. not typically stored in one contiguous passage of To get a more realistic assessment of improvements, code, but rather in delocalized pieces of code we recently embarked into a similar investigation of a that only gets connected during run time by group of programmers in a software company using all branching and routine calls. This necessitate: the modern features of Visual Studio 2010 to develop a a. Locating these delocalized pieces often hospital information system. It is important to note that by doing more searches. by IDE we do not reference only to the software system b. Understanding the code dynamics at run that integrates the text editor, the compiler and other tools, time by creating a mental simulation of but to the whole environment that includes the language execution synchronizing program © 2013 ACADEMY PUBLISHER doi:10.4304/jsw.8.10.2425-2431 2426 JOURNAL OF SOFTWARE, VOL. 8, NO. 10, OCTOBER 2013 events with code to find what went order of magnitude improvement in productivity, in wrong. reliability, in simplicity.” The difficulties in program comprehension by The essence of difficulties in such scenario does not programmers have been studied for long, and different reside in the effectiveness of searching mechanism, but cognitive models for program comprehension have been rather in the inherent complexity of the code space that suggested. Von Mayrhauser and Vans surveyed this area need to be understood. The mental reconstruction of in [3] and compared six cognitive models execution paths can overload human cognitive abilities The empirical study of the programmers work particularly in large systems with deeply nested relations practices was one step ahead after cognitive models that such as routine call trees that often reach more than ten mostly used controlled experiments. It seeks to levels of nesting. understand how work occurs and suggest appropriate technologies for the workplace [Singer 97]. This can be TABLE 1 done by “following and recording the work that people do” in their industrial setting. TOP 5 ACTIVITIES IDENTIFIED DURING SOFTWARE MAINTENANCE OF THE More recently Latoza et. al. [6] used a series of LEGACY SYSTEM surveys and interviews to capture the work habits of 1.1 Finding the next piece of code in a mentally programmers. They found that programmers spend about simulated control flow (e.g. call flow/ call tree) half their time debugging, and the rest is spent writing 1.2 Finding the definition of a routine new features and making their code maintainable. 1.3 Finding a starting point in code The study of the effect of modern IDE on 1.4 Finding where an external behaviour is programming has not been so frequent. Ko et.al [5] claim implemented in code to be the first to do so. They conducted an “in vitro” 1.5 Finding the definition of a variable or a variable experiment designed to assess the impact of modern IDEs type (Eclipse) on maintenance tasks. They found that In short, although on the surface programmers spent programmers spent most of their time “reading and significant time doing searching, yet improving this navigating” code. It wasn’t clear how their experiment mechanism only removed “accidental” difficulties [9]. captured the effect of IDE given that predefined tasks The “essential” difficulties faced by the programmers were given to the subjects. We argue that controlled were due to the complexity of program comprehension. experiments are incapable of capturing the diversity of the development ecosystem. B. More than 10 Years Later Murphy et. al. [13] used a tool that generates traces With modern IDEs and modern programming representing the interaction history of programmers with languages, one can trace little similarity, at the surface, to IDE to study how Java programmers use the Eclipse IDE. the development experience of the legacy system. Yet, The data collected represents the frequency of use in our thesis remains that, at a more profound level, the general of the different features, views and commands of fundamental activities such as program comprehension Eclipse but without relation to the mental model or the tasks should be comparable. high level intention of use by the programmers. They To report on what really changed, what has been found, for example, that copy and paste are among the 10 solved and improved and what has not, we investigated a top most used commands. We, on the other hand, ignored company developing a hospital information system of copy and paste as we considered them too low level medium size (about 320 forms/screens). The team perhaps at the same level with typing (programmers may developing this system is composed of 13 programmers copy and paste to save typing) and has no relevance to the of varying expertise levels, from six months to four years essential difficulties experienced by programmers. of experience in the development environment (IDE, Recently, the “Debugging Canvas” [10], an add-on to languages, and class libraries). Activities included both Visual Studio that extends its debugger and provides developing new features and maintaining existing ones. visual representations of call relations among other The programmers use all modern visual features of dynamic information, represents a serious attempt to Visual Studio 2010, such as forms, reports, and database address the program comprehension difficulties during schema design. We were “embedded” with the programming. So far, it is still a research tool and did not development team repeating the same techniques used to make it into official release of Visual Studio. investigate the legacy system such as shadowing, observing and interviewing the team. The study spanned III. CHALLENGES OF THE STUDY three months in total. Like in any empirical study, we wanted to measure and compare specific variables, something that can be best II. RELATED WORK done in a lab-like setting under controlled experiments. Brooks [9] in his classical paper “No silver bullet” But a software development environment is more like an argues against high expectation from new technologies: ecosystem with an infinite number of interdependent “there is no single development, in either technology or variables. The tools, the expertise and skill of in management technique that by itself promises even one programmers, the nature of projects, the development © 2013 ACADEMY PUBLISHER JOURNAL OF SOFTWARE, VOL. 8, NO. 10, OCTOBER 2013 2427 process and many more variables, all affect the and drop, positioning and resizing of controls productivity of programmers. almost entirely visually using the mouse. A lab-like (“in vitro”) experiment is too limited to 2. The business logic tier was developed using the capture the versatility of the development ecosystem.
Recommended publications
  • Geany Tutorial
    How to use Geany Geany is essentially a text editor. To begin writing your program, you will need to create a new, blank file. Click on New. A new file called untitled will appear. You may start writing. As soon as you do, the option to save the file will be available. If the name of your file is in red, it means that it hasn’t been saved since the last change that is made. Click on the button called Save next to the New button. Save the file in a directory you had previously created before you launched Geany and name it main.cpp. All of the files you will write and submit to will be named specifically main.cpp. Once the .cpp has been specified, Geany will turn on its color coding feature for the C++ template. Next, we will set up our environment and then write a simple program that will print something to the screen Feel free to supply your own name in this small program Before we do anything with it, we will need to configure some options to make your life easier in this class The vertical line to the right marks the ! boundary of your code. You will need to respect this limit in that any line of code you write must not cross this line and therefore be properly, manually broken down to the next line. Your code will be printed out for The line is not where it should be, however, and grading, and if your code crosses the we will now correct it line, it will cause line-wrapping and some points will be deducted.
    [Show full text]
  • Software Tools: a Building Block Approach
    SOFTWARE TOOLS: A BUILDING BLOCK APPROACH NBS Special Publication 500-14 U.S. DEPARTMENT OF COMMERCE National Bureau of Standards ] NATIONAL BUREAU OF STANDARDS The National Bureau of Standards^ was established by an act of Congress March 3, 1901. The Bureau's overall goal is to strengthen and advance the Nation's science and technology and facilitate their effective application for public benefit. To this end, the Bureau conducts research and provides: (1) a basis for the Nation's physical measurement system, (2) scientific and technological services for industry and government, (3) a technical basis for equity in trade, and (4) technical services to pro- mote public safety. The Bureau consists of the Institute for Basic Standards, the Institute for Materials Research, the Institute for Applied Technology, the Institute for Computer Sciences and Technology, the Office for Information Programs, and the ! Office of Experimental Technology Incentives Program. THE INSTITUTE FOR BASIC STANDARDS provides the central basis within the United States of a complete and consist- ent system of physical measurement; coordinates that system with measurement systems of other nations; and furnishes essen- tial services leading to accurate and uniform physical measurements throughout the Nation's scientific community, industry, and commerce. The Institute consists of the Office of Measurement Services, and the following center and divisions: Applied Mathematics — Electricity — Mechanics — Heat — Optical Physics — Center for Radiation Research — Lab- oratory Astrophysics^ — Cryogenics^ — Electromagnetics^ — Time and Frequency*. THE INSTITUTE FOR MATERIALS RESEARCH conducts materials research leading to improved methods of measure- ment, standards, and data on the properties of well-characterized materials needed by industry, commerce, educational insti- tutions, and Government; provides advisory and research services to other Government agencies; and develops, produces, and distributes standard reference materials.
    [Show full text]
  • Text Editing in UNIX: an Introduction to Vi and Editing
    Text Editing in UNIX A short introduction to vi, pico, and gedit Copyright 20062009 Stewart Weiss About UNIX editors There are two types of text editors in UNIX: those that run in terminal windows, called text mode editors, and those that are graphical, with menus and mouse pointers. The latter require a windowing system, usually X Windows, to run. If you are remotely logged into UNIX, say through SSH, then you should use a text mode editor. It is possible to use a graphical editor, but it will be much slower to use. I will explain more about that later. 2 CSci 132 Practical UNIX with Perl Text mode editors The three text mode editors of choice in UNIX are vi, emacs, and pico (really nano, to be explained later.) vi is the original editor; it is very fast, easy to use, and available on virtually every UNIX system. The vi commands are the same as those of the sed filter as well as several other common UNIX tools. emacs is a very powerful editor, but it takes more effort to learn how to use it. pico is the easiest editor to learn, and the least powerful. pico was part of the Pine email client; nano is a clone of pico. 3 CSci 132 Practical UNIX with Perl What these slides contain These slides concentrate on vi because it is very fast and always available. Although the set of commands is very cryptic, by learning a small subset of the commands, you can edit text very quickly. What follows is an outline of the basic concepts that define vi.
    [Show full text]
  • Basic Guide: Using VIM Introduction: VI and VIM Are In-Terminal Text Editors That Come Standard with Pretty Much Every UNIX Op
    Basic Guide: Using VIM Introduction: VI and VIM are in-terminal text editors that come standard with pretty much every UNIX operating system. Our Astro computers have both. These editors are an alternative to using Emacs for editing and writing programs in python. VIM is essentially an extended version of VI, with more features, so for the remainder of this discussion I will be simply referring to VIM. (But if you ever do research and need to ssh onto another campus’s servers and they only have VI, 99% of what you know will still apply). There are advantages and disadvantages to using VIM, just like with any text editors. The main disadvantage of VIM is that it has a very steep learning curve, because it is operated via many keyboard shortcuts with somewhat obscure names like dd, dw, d}, p, u, :q!, etc. In addition, although VIM will do syntax highlighting for Python (ie, color code things based on what type of thing they are), it doesn’t have much intuitive support for writing long, extensive, and complex codes (though if you got comfortable enough you could conceivably do it). On the other hand, the advantage of VIM is once you learn how to use it, it is one of the most efficient ways of editing text. (Because of all the shortcuts, and efficient ways of opening and closing). It is perfectly reasonable to use a dedicated program like emacs, sublime, canopy, etc., for creating your code, and learning VIM as a way to edit your code on the fly as you try to run it.
    [Show full text]
  • Using the Linux Virtual Machine
    Using the Linux Virtual Machine Update: On my computer I had problems with screen resolution and the VM didn't resize with the window and take the full width when in fullscreen mode. This was fixed with installation of an additional package. In a console window (see below how to pen that), I gave this command: sudo apt­get install virtualbox­guest­dkms This asks for the password. That is "genomics". After restarting the VM, the screen resize works fine. Some programs are found in the menu at the bottom­left corner. Many programs are command­line only and not in the menu. To use the command line, start the console by clicking the icon in the bottom panel. Execute the following commands to create a new directory in your home folder "~/" for today’s exercises: mkdir ~/session_1 cd ~/session_1 Open the file browser to see what you did. The Shared Folders is under /media. On the file browser you can change to directory view using the pull down menu on the top­left corner: Click then "media" and "sf_evogeno". Using RStudio Click this link: https://drive.google.com/open?id=0B3Cf0QL4k1­PTkZ5QVdEQ1psRUU and select to open the file in RStudio. Save the file in the folder "session_1" that you created above. The script requires two R libraries that are not installed. Install them by typing the following commands in the R console window: ​ ​ install.packages("ggplot2") install.packages("reshape") Now you are ready to run the script e.g. by clicking the "Source" button in the top­right corner of the file editor window.
    [Show full text]
  • The Kate Handbook
    The Kate Handbook Anders Lund Seth Rothberg Dominik Haumann T.C. Hollingsworth The Kate Handbook 2 Contents 1 Introduction 10 2 The Fundamentals 11 2.1 Starting Kate . 11 2.1.1 From the Menu . 11 2.1.2 From the Command Line . 11 2.1.2.1 Command Line Options . 12 2.1.3 Drag and Drop . 13 2.2 Working with Kate . 13 2.2.1 Quick Start . 13 2.2.2 Shortcuts . 13 2.3 Working With the KateMDI . 14 2.3.1 Overview . 14 2.3.1.1 The Main Window . 14 2.3.2 The Editor area . 14 2.4 Using Sessions . 15 2.5 Getting Help . 15 2.5.1 With Kate . 15 2.5.2 With Your Text Files . 16 2.5.3 Articles on Kate . 16 3 Working with the Kate Editor 17 4 Working with Plugins 18 4.1 Kate Application Plugins . 18 4.2 External Tools . 19 4.2.1 Configuring External Tools . 19 4.2.2 Variable Expansion . 20 4.2.3 List of Default Tools . 22 4.3 Backtrace Browser Plugin . 25 4.3.1 Using the Backtrace Browser Plugin . 25 4.3.2 Configuration . 26 4.4 Build Plugin . 26 The Kate Handbook 4.4.1 Introduction . 26 4.4.2 Using the Build Plugin . 26 4.4.2.1 Target Settings tab . 27 4.4.2.2 Output tab . 28 4.4.3 Menu Structure . 28 4.4.4 Thanks and Acknowledgments . 28 4.5 Close Except/Like Plugin . 28 4.5.1 Introduction . 28 4.5.2 Using the Close Except/Like Plugin .
    [Show full text]
  • ENCM 335 Fall 2018: Command-Line C Programming on Macos
    page 1 of 4 ENCM 335 Fall 2018: Command-line C programming on macOS Steve Norman Department of Electrical & Computer Engineering University of Calgary September 2018 Introduction This document is intended to help students who would like to do ENCM 335 C pro- gramming on an Apple Mac laptop or desktop computer. A note about software versions The information in this document was prepared using the latest versions of macOS Sierra version 10.12.6 and Xcode 9.2, the latest version of Xcode available for that version of macOS. Things should work for you if you have other but fairly recent versions of macOS and Xcode. If you have versions that are several years old, though you may experience difficulties that I'm not able to help with. Essential Software There are several key applications needed to do command-line C programming on a Mac. Web browser I assume you all know how to use a web browser to find course documents, so I won't say anything more about web browsers here. Finder Finder is the tool built in to macOS for browsing folders and files. It really helps if you're fluent with its features. Terminal You'll need Terminal to enter commands and look at output of commands. To start it up, look in Utilities, which is a folder within the Applications folder. It probably makes sense to drag the icon for Terminal to the macOS Dock, so that you can launch it quickly. macOS Terminal runs the same bash shell that runs in Cygwin Terminal, so commands like cd, ls, mkdir, and so on, are all available on your Mac.
    [Show full text]
  • O'reilly GNU Emacs Pocket Reference.Pdf
    Page i GNU Emacs Pocket Reference Debra Cameron Beijing • Cambridge • Farnham • Köln • Paris • Sebastopol • Taipei • Tokyo Page ii GNU Emacs Pocket Reference by Debra Cameron Copyright ã 1999 O'Reilly & Associates, Inc. All rights reserved. Printed in the United States of America. Editor: Gigi Estabrook Production Editor: Claire Cloutier LeBlanc Production Services: Omegatype Typography, Inc. Cover Design: Edie Freedman Printing History: January 1999: First Edition Nutshell Handbook, the Nutshell Handbook logo, and the O'Reilly logo are registered trademarks of O'Reilly & Associates, Inc. The association between the image of a gnu and the topic of GNU Emacs is a trademark of O'Reilly & Associates, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O'Reilly & Associates, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher assumes no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. This book is printed on acid-free paper with 85% recycled content, 15% post-consumer waste. O'Reilly & Associates is committed to using paper with the highest recycled content available consistent with high quality. ISBN: 1-56592-496-7 [11/99] Page iii Table of Contents Introduction 1 Emacs Commands 1 Conventions 2 1. Emacs Basics 2 2. Editing Files 5 3. Search and Replace Operations 10 4. Using Buffers and Windows 15 5. Emacs as a Work Environment 19 6.
    [Show full text]
  • Command Line Interface (Shell)
    Command Line Interface (Shell) 1 Organization of a computer system users applications graphical user shell interface (GUI) operating system hardware (or software acting like hardware: “virtual machine”) 2 Organization of a computer system Easier to use; users applications Not so easy to program with, interactive actions automate (click, drag, tap, …) graphical user shell interface (GUI) system calls operating system hardware (or software acting like hardware: “virtual machine”) 3 Organization of a computer system Easier to program users applications with and automate; Not so convenient to use (maybe) typed commands graphical user shell interface (GUI) system calls operating system hardware (or software acting like hardware: “virtual machine”) 4 Organization of a computer system users applications this class graphical user shell interface (GUI) operating system hardware (or software acting like hardware: “virtual machine”) 5 What is a Command Line Interface? • Interface: Means it is a way to interact with the Operating System. 6 What is a Command Line Interface? • Interface: Means it is a way to interact with the Operating System. • Command Line: Means you interact with it through typing commands at the keyboard. 7 What is a Command Line Interface? • Interface: Means it is a way to interact with the Operating System. • Command Line: Means you interact with it through typing commands at the keyboard. So a Command Line Interface (or a shell) is a program that lets you interact with the Operating System via the keyboard. 8 Why Use a Command Line Interface? A. In the old days, there was no choice 9 Why Use a Command Line Interface? A.
    [Show full text]
  • SAS on Unix/Linux- from the Terminal to GUI
    SAS on Unix/Linux- from the terminal to GUI. L Gakava & S Kannan – October 2015 Agenda All about the terminal o Customising your terminal o Basic Linux terminal commands o Running SAS in non-interactive mode o Available SAS file editors o What to look out for on Unix/Linux platform All about Graphical User Interface (GUI) o Launching SAS GUI. o Changing SAS default behaviour o SAS ToolBox commands o SAS editor commands. Motivation - Why Use SAS On Unix/Linux? Using SAS on UNIX/Linux Platform o Company migrating to UNIX/Linux o Joining a company which is using SAS on the Linux platform Challenge Too many commands to learn! Why Use SAS On Unix/Linux o Customising Linux sessions will ensure you increase work efficiency by taking advantage of the imbedded Linux tools. In general transferring and running large files will be quicker in Linux compared to PC*. Terminal What to expect when you login? % pwd /home/username % ls Customise: Update .bashrc file with this line PS1='$IV $PWD$EE> ' will change your prompt to show the following: /home/username> Terminal Navigation Command Meaning ls list files and directories ls -a list all files and directories mkdir make a directory cd directory change to named directory cd change to home-directory cd ~ change to home-directory cd .. change to parent directory Terminal Navigation Command Meaning cp file1 file2 copy file1 and call it file2 mv file1 file2 move or rename file1 to file2 rm file remove a file rmdir directory remove a directory cat file display a file less file display a file a page at a time head file display the first few lines of a file tail file display the last few lines of a file grep 'keyword' file search a file for keywords count number of lines/words/ wc file characters in file Terminal useful commands How do you find out if a version of a file has changed? /home/username>diff file1.txt file2.txt Command to compare two files.
    [Show full text]
  • Geanypy Documentation Release 1.0
    GeanyPy Documentation Release 1.0 Matthew Brush <[email protected]> February 17, 2017 Contents 1 Introduction 3 2 Installation 5 2.1 Getting the Source............................................5 2.2 Dependencies and where to get them..................................5 2.3 And finally ... installing GeanyPy....................................7 3 Getting Started 9 3.1 What the heck is GeanyPy, really?....................................9 3.2 Python Console..............................................9 3.3 Future Plans............................................... 10 4 Writing a Plugin - Quick Start Guide 11 4.1 The Plugin Interface........................................... 11 4.2 Real-world Example........................................... 12 4.3 Logging.................................................. 13 5 API Documentation 15 5.1 The app module............................................. 15 5.2 The dialogs module.......................................... 16 5.3 The document module......................................... 17 5.4 The geany package and module.................................... 19 6 Indices and tables 21 Python Module Index 23 i ii GeanyPy Documentation, Release 1.0 Contents: Contents 1 GeanyPy Documentation, Release 1.0 2 Contents CHAPTER 1 Introduction GeanyPy allows people to write their Geany plugins in Python making authoring a plugin much more accessible to non C programmers. What follows is a description of installing and using the GeanyPy plugin, paving the way for the rest of the documentation to covert the details of programming with the GeanyPy bindings of the Geany API. 3 GeanyPy Documentation, Release 1.0 4 Chapter 1. Introduction CHAPTER 2 Installation Currently there are no binary packages available for installing GeanyPy so it must be installed from source. The following instructions will describe how to do this. Getting the Source The best way currently to get GeanyPy is to check it out from it’s repository on GitHub.com.
    [Show full text]
  • Programmable Command Languages for Window Systems Egie
    Programmable Command Languages for Window Systems Rlchard Joel Cohn CMU-CS-88-139 June 1988 _egie Programmable Command Languages for Window Systems Report number CMU-CS-88-139 Copyright © 1988 by Richard Joel Cohn. All rights reserved. This dissertation was submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Computer Science at Carnegie Mellon University. The research in this dissertation was supported by the Information Technology Center, a joint project of Carnegie Mellon University and International Business Machines Corporation. This dissertation was produced with Scribe. Illustrations were produced with Pic, Troff, and TranScript. Aldus and PageMaker are trademarks of Aldus Corporation. Apple and Macintosh are registered trademarks of Apple Computer, Inc. Clads is a trademark of Clads Corporation. DEC is a trademark of Digital Equipment Corporation. Hypercard is a trademark of Apple Computer, Inc. IBM is a registered trademark of International Business Machines Corporation. MacDraw, MacPaint, and MacWrite are registered trademarks of Clads Corporation. NeWS and Sun-3 are trademarks of Sun Microsystems, Inc. PostScript and TranScript are trademarks of Adobe Systems, Inc. Scribe is a registered trademark of Scribe Systems. SmaUtalk-80is a trademark of Xerox Corporation. Tempo is a trademark of Affinity Microsystems, Ltd. UNIXis a registered trademark of AT&T Bell Laboratories. Abstract Programmable command and macro languages have long served as important tools for users of computer systems. This thesis describes the design and implementation of a general-purpose command language for a window system. This has never been tried be- fore because these systems are new and because the problems inherent in providing a command language for a window system are hard.
    [Show full text]