archives

It's Time to Stop Calling Circuits "Hardware"

F. Vahid. It's Time to Stop Calling Circuits "Hardware". IEEE Computer Magazine, September 2007.

The advent of field-programmable gate arrays requires that we stop calling circuits “hardware”
and, more generally, that we broaden our concept of what constitutes “software.” ...
Developing modern embedded software capable of executing on multiprocessor and FPGA platforms requires expertise not just in temporally oriented modeling (W comes after X) like writing sequential code but also in spatially oriented modeling (Y connects with Z) like creating circuits.
An interesting take on where programming should be heading in the future -- and consequently, where programming languages should also be heading. This article is somewhat related to the recent discussion here on LtU about FPGA CPUs. As the excerpt above illustrates, Vahid draws a distinction between what he calls "temporally-oriented" computing, which focuses on sequence, and "spatially-oriented" computing, which focuses on connectivity of components. His basic argument is that traditional programming languages (and traditional programming education) focus on temporally-oriented computing, but that the growing use of FPGAs as an integral part of many systems (particularly embedded systems) necessitates a greater emphasis on programming in a spatially-oriented mode. We don't tend to talk too much about "hardware description" languages like VHDL and Verilog here on LtU, but perhaps they are the answer (or at least part of the answer) to Ehud's recent question about which languages we should be discussing to "stay ahead the curve".

Google Tech Talk on the CMU Natural Programming Project

This is a talk given by Brad Myers describing a series of studies and projects related to programming, both by professionals and "end-user programmers", conducted at CMU HCI lab.

Abstract:

The Natural Programming Project is working on making programming languages and environments easier to learn, more effective, and less error prone. We are taking a human-centered approach, by first studying how people perform their tasks, and then designing languages and environments that take into account people's natural tendencies. We focus on all kinds of programmers: professional programmers, novice programmers who are trying to learn to be experts, and "end-user programmers" who are people who program because they must to achieve their "real jobs." This talk will update my talk to Google from October 27, 2005, and cover the exciting progress we have made since then. After briefly reviewing our old work on designing languages for novices, our new systems and studies will be presented. We have a new version of the the Whyline tool, which allows programmers to directly ask "why" and "why not" questions of their Java programs and get a visualization of the answers. The previous version for Alice decreased debugging time by a factor of 8 and increased programmer productivity by 40%, and pilot studies of the new version suggest a factor of two improvement in time. Other new work helps programmers keep track of their "working sets," since our research showed that programmers spend about 38% of their time navigating around code. Most of coding today is making use of APIs, and we have evaluated a number of APIs and design patterns using HCI techniques, to reveal how to make their easier to use for programmers. We also have a brand new study of the practices and problems for Interaction Designers working on interactive behaviors.

Some of the experiments in development environments and HCI results wrt API patterns can be of interest to PL research.