Programming Languages

Vol. 2 No. 9 – December/January 2004-2005

Programming Languages

Articles

Extensible Programming for the 21st Century

Is an open, more flexible programming environment just around the corner?

Extensible Programming for the 21st Century

Is an open, more flexible programming environment just around the corner?


Gregory V. Wilson, University of Toronto


In his keynote address at OOPSLA ’98 (Object-Oriented Programming, Systems, Languages, and Applications), Sun Microsystems Fellow Guy L. Steele Jr. said, “From now on, a main goal in designing a language should be to plan for growth.” Functions, user-defined types, operator overloading, and generics (such as C++ templates) are no longer enough: tomorrow’s languages must allow programmers to add entirely new kinds of information to programs, and control how it is processed.

This article argues that next-generation programming systems can accomplish this by combining three specific technologies:

by Gregory V. Wilson

Interviews

A Conversation with Alan Kay

Big talk with the creator of smalltalk - and much more. When you want to gain a historical perspective on personal computing and programming languages, why not turn to one of the industry's preeminent pioneers? That would be Alan Kay, winner of last year's Turing Award for leading the team that invented Smalltalk, as well as for his fundamental contributions to personal computing.

A Conversation with Alan Kay

Big talk with the creator of Smalltalk—and much more.

When you want to gain a historical perspective on personal computing and programming languages, why not turn to one of the industry’s preeminent pioneers? That would be Alan Kay, winner of last year’s Turing Award for leading the team that invented Smalltalk, as well as for his fundamental contributions to personal computing.

Kay was one of the founders of the Xerox Palo Alto Research Center (PARC), where he led one of several groups that together developed modern workstations (and the forerunners of the Macintosh), Smalltalk, the overlapping window interface, desktop publishing, the Ethernet, laser printing, and network client-servers.

Articles

Fuzzy Boundaries: Objects, Components, and Web Services

It's easy to transform objects into components and Web services, but how do we know which is right for the job?

Fuzzy Boundaries: Objects, Components, and Web Services

It’s easy to transform objects into components and Web services, but how do we know which is right for the job?

Roger Sessions, Objectwatch

If you are an object-oriented programmer, you will understand the code snippet in figure 1, even if you are not familiar with the language (C#, not that it matters). You will not be surprised to learn that this program will print out the following line to the console: woof

by Roger Sessions

How Not to Write Fortran in Any Language

There are characteristics of good coding that transcend all programming languages.

How Not to Write FORTRAN in Any Language

There are characteristics of good coding that transcend all programming languages.

Donn Seely, Wind River Systems

 

There’s no obfuscated Perl contest because it’s pointless.

by Donn Seeley

Kode Vicious

Kode Vicious: The Return

Dear KV, Whenever my team reviews my code, they always complain that I don't check for return values from system calls. I can see having to check a regular function call, because I don't trust my co-workers, but system calls are written by people who know what they're doing--and, besides, if a system call fails, there isn't much I can do to recover. Why bother?

Kode Vicious: The Return

A koder with attitude, KV answers your questions. Miss Manners he ain’t.

Koding problems driving you nuts, ko-workers making you krazy? Never fear, Kode Vicious is here—to answer your questions, solve your problems, and just basically make the world a better place.

Dear KV,

Whenever my team reviews my code, they always complain that I don’t check for return values from system calls. I can see having to check a regular function call, because I don’t trust my co-workers, but system calls are written by people who know what they’re doing—and, besides, if a system call fails, there isn’t much I can do to recover. Why bother?

Pointless Returns

by George Neville-Neil

Articles

Languages, Levels, Libraries, and Longevity

New programming languages are born every day. Why do some succeed and some fail? In 50 years, we've already seen numerous programming systems come and (mostly) go, although some have remained a long time and will probably do so for: decades? centuries? millennia? The questions about language designs, levels of abstraction, libraries, and resulting longevity are numerous. Why do new languages arise? Why is it sometimes easier to write new software than to adapt old software that works? How many different levels of languages make sense? Why do some languages last in the face of "better" ones?

Languages, Levels, Libraries, and Longevity

New programming languages are born every day. Why do some succeed and some fail?

JOHN R. MASHEY, TECHVISER

In 50 years, we’ve already seen numerous programming systems come and (mostly) go, although some have remained a long time and will probably do so for: decades? centuries? millennia? The questions about language designs, levels of abstraction, libraries, and resulting longevity are numerous. Why do new languages arise? Why is it sometimes easier to write new software than to adapt old software that works? How many different levels of languages make sense? Why do some languages last in the face of “better” ones?

We can gather insights from the last 50 years of programming systems to the current time. For the far future, Vernor Vinge’s fine science-fiction novel, A Deepness in the Sky, rings all too true. The young protagonist, Pham, has joined a starship crew and is learning the high-value vocation of “programmer archaeologist,” as the crew’s safety depends on the ability to find needed code, use it, and modify it without breaking something. He is initially appalled at the code he finds:

by John R. Mashey

Curmudgeon

Linguae Francae

Is programming language a misnomer? Many linguists are still busy trying to reconstruct the single ur-language presumed to have evolved over untold millennia into the thousands of human tongues - alive and dead, spoken and written - that have since been catalogued and analyzed. The amazing variety and complexity of known languages and dialects seems, at first parse, to gainsay such a singular seed.

Linguae Francae

Is programming language a misnomer?

Stan Kelly-Bootle

Many linguists are still busy trying to reconstruct the single ur-language presumed to have evolved over untold millennia into the thousands of human tongues—alive and dead, spoken and written—that have since been catalogued and analyzed.1 The amazing variety and complexity of known languages and dialects seems, at first parse, to gainsay such a singular seed.

Yet many find a deep, mythic confirmation in the Tower of Babel story: “Now the whole world used the same language and the same words” (Genesis 11:1). And, of great computer-theoretic significance, note how Jahweh upsets this Esperantic paradise and launches his logomachic crusade: with a raging, unstructured “GOTO!” followed by “Let us go down and confound their language, that they may not understand one another’s speech” (Genesis 11:7). Others, however, especially Dijkstra, see this GOTO as the instruction from hell.2

by Stan Kelly-Bootle

Articles

Self-Healing in Modern Operating Systems

A few early steps show there's a long (and bumpy) road ahead.

Self-Healing in Modern Operating Systems

A few early steps show there’s a long (and bumpy) road ahead.

MICHAEL W. SHAPIRO, SUN MICROSYSTEMS

Driving the stretch of Route 101 that connects San Francisco to Menlo Park each day, billboard faces smilingly reassure me that all is well in computerdom in 2004. Networks and servers, they tell me, can self-defend, self-diagnose, self-heal, and even have enough computing power left over from all this introspection to perform their owner-assigned tasks.

by Michael W. Shapiro