System News
   
News about Solaris and Sun Microsystems

Free 2 Week Trial!


December 19, 2005
Article #15558
Volume 94, Issue 3
Section: Features

 

I see Metaphors...as a successor to complicated, disjointed, and proprietary middleware stacks.

-- Victoria Livschitz
 


 

Metaphors: A New Programming Language
Victoria Livschitz Explains how to Make Programming Less Counterintuitive

Victoria Livschitz is a principal architect at Sun Microsystems and an adjunct staff member at Sun Labs. She is, as well, expert in next-generation programming languages that address the issue of counterintuitiveness in modern programming paradigms. Janice J. Heiss interviewed Livschitz on this subject and the language that she calls Metaphors, which is under development in response to the need for an improved programming paradigm.

One of the big issues that developers and programmers face, Livschitz contends, is the need to rely on "design by contract," made necessary by the inability to develop entire solutions in-house. As a result, the industry must deal with components and loose coupling, complicated by standardization of interfaces. She emphasizes her point, saying, "The ratio of dollars spent on new features to dollars spent on certification and support goes down fast as the number of standard interfaces goes up." Livschitz adds the experience of IBM, where a distinguished engineer has discovered that Big Blue spends one in three software development dollars on new features; the remaining two-thirds goes toward non-value-added integration costs. Why develop a new programming language in response to this situation, Heiss asked, and Livschitz cited the historical advances in software engineering that were achieved as a result of the introduction of such new programming languages as FORTRAN, C and C++. She said there was no reason to suppose further advances would not result from Metaphors use.

Livschitz said she sees Metaphors as a "... bridge over the gap between programming and software development at large," one that provides what Alan Perlis said is needed most, "...a conceptual universe for thinking about software development, embodied in a kind of language that is new to computer science."

Acknowledging the debt Metaphors owes to JavaTM technology, Livschitz added that she wants Metaphor to enable a local virtual machine (LVM) to act as a container for managed application code, thus - ideally - eliminating middleware. The functions of middleware could, for the most part, be embedded in a runtime environment for the language. "In one way," Livschitz explained, "I see Metaphors not so much as a successor to the Java language but rather as a successor to complicated, disjointed, and proprietary middleware stacks."

What distinguishes Metaphors from traditional programming languages, Livschitz noted, is that the language encompasses tasks formerly handled outside of the programming language itself. These are support for the distributed runtime environment, support for contextual programming, support for autonomous executable entities and support for software evolution and reuse.

Livschitz makes a further distinction between contextual programming - which defines a context or an application's functionality - and computational programming - which codifies the functional rules of an application's behavior within that context. Not until the advent of object-oriented programming (OOP), she maintains, did traditional computer science concern itself with contextual programming, which introduced classes, interfaces and abstract data types, which addressed the need for context-building. What remains missing, even with OOP, Livschitz asserted, is that it continues to address contextual programming with methodologies, external tools and special-purpose languages rather than in the programming language itself.

As a further means of improving software quality, Livschitz sees the need for including core-level constructs in the language - entity, process, organization, principle, condition, relationship, event and rule - that will make the codification of systems a more intuitive process. "Several such constructs will be supported directly in the programming language as 'primitive' metaphors. User-defined metaphors can be created incrementally from primitive metaphors using a formal extensibility framework supported by the language," she said.

One of the most necessary reforms in programming language, Livschitz continued, lies in devising a language that is more congruent to the autonomous, asynchronous world than the sequential, passive request-response invocations that traditional programming language allows. The challenge, she explained, "...is to devise a program execution model that will be able to efficiently support thousands - if not millions - of autonomous executable entities that are active at all times, even though truly interesting events happen to them only once every millionth or billionth cycle."

Livschitz aims to harness the formal rigor of a programming language's grammar and type system to effect reuse. She explained this goal by saying, "I see three general-purpose reuse mechanisms that can be formally supported by the grammar of the language. The first is derivation, which specifies the rules of creation of a new metaphor by changing properties of the existing metaphor. The second is composition, which specifies the rules for creation of a new metaphor as an aggregate of several existing ones - or the direct opposite of that, the decomposition of an existing metaphor into several metaphors. The third is adaptation, which specifies the rules of lightweight 'morphing' protocol that can be used to adapt a metaphor developed for one domain to the needs of another domain, if the two are properly isomorphic - by which I mean that they are either identical or similar in form, shape, or structure."

A programming language should enable, in fact, encourage a programmer to "...think in terms of metaphors and recursively build higher-level metaphors from lower-level ones, then that should be the model for the software creation process supported by the programming language," Livschitz asserted.

Heiss concludes the interview with Livschitz providing a walk-through of a favorite "metaphor" that includes code snippets. Finally, Livschitz explained the name she has chosen for her nascent programming language: "Metaphors is a tentative name I chose to define a unit of software because people seem to reason about the unknown in terms of analogies with the known." [...read more...]

fullsource

Keywords:
Other articles in the Features section of Volume 94, Issue 3:

See all archived articles in the Features section.


From the latest issue:



 


Customized news reports about Sun Microsystems. Just the news you need, none of what you don't.
50,000+ Members. 20,000+ Articles Published since 1998.