archives

New extension for the TXL language : ETXL

What is TXL ?
TXL is a unique programming language specifically designed to support computer software analysis and source transformation tasks. It is the evolving result of more than fifteen years of concentrated research on rule-based structural transformation as a paradigm for the rapid solution of complex computing problems.

http://www.txl.ca/

What is ETXL ?
ETXL is the prototype implementation of the ideas developed in Adrian Thurston's Master's Thesis. He set out to update the TXL Programming Language. The prototype is itself a TXL program that transforms ETXL to pure TXL then runs the TXL engine on the result.

http://www.cs.queensu.ca/home/thurston/etxl/

For a general view of TXL
http://www.cs.queensu.ca/~cordy/Papers/Cordy_TXL_LDTA04.pdf

Adrian Thurston's Master's Thesis
http://www.cs.queensu.ca/home/thurston/evotxl-final.pdf

In a few words, it simply rocks !

A Core Calculus of Metaclasses

A Core Calculus of Metaclasses - written by Sam Tobin-Hochstadt and Eric Allen for Fool 12

Metaclasses provide a useful method of abstraction for programmers working with object-oriented languages, but they have not seen the formal exploration applied to more conventional object-oriented programming features. In order to elucidate the structure of metaclasses and their relationship with static typing, we present a core calculus for a nominally-typed object-oriented language with metaclasses and prove type soundness over this core.

Metaclasses are a nifty (albeit somewhat arcane) OOP feature. I found the article interesting, but I had a lot of trouble with the elaborate type soundness proofs. Those who are unfamiliar with metaclass programming might want to read some introductory material before tackling this article. Metaclass Programming in Python by Mertz and Simionato is a particularly good overview.

Variables as Channels

Method mixins - written by Erik Ernst

It is quite common to describe languages with mutable state as machine-oriented, and to describe functional, logical, and other kinds of `declarative' languages as more abstract, liberated from the old-fashioned attachment to bits and memory cells. This opinion was brought to prominence with the 1977 Turing Award
speech by John Backus [...] We must recognize that the functional and other paradigms have have produced deep and useful results. However, it is our opinion that imperative languages, especially object-oriented ones, are being widely used because of their
inherent power and not because programmers are nostalgic about
writing programs in assembly language. It is not a question of abstraction or hardware concreteness, it is about safety and freedom. Restrictive communication topologies bring safety, and flexible topologies bring freedom. To substantiate this, we need to consider variables and similar concepts as communication channels, thereby making them comparable.

This paper provides an interesting perspective on the role of variables in programming. It is about a construct called method mixins, but the discussion about the role of variables in Sec. 2 is relatively independent of the specific construct proposed in the paper:

Adam Bosworth: Ajax reconsidered

This isn't really about programming languages, but I still think it is relevant to our discussions,

A lot of Ajax applications have a lot of script (often 10 or 20,000 lines) and without broadband, the download of this can be extremely painful. With broadband and standard tricks for compressing the script, it is a breeze. Even if you could download this much script in 1997, it ran too slowly. Javascript wasn't fast enough to respond in real time to user actions let alone to fetch some related data over HTTP. But Moore's law has come to its rescue and what was sluggish in 1997 is often lightning quick today.

We often tell people that execution speed is less important than code readability and flexibility, which depend on high level abstraction facilities found in HLLs. I guess we should consider bandwidth efficiency instead...

What I predict will drive this change is the advent of truly mobile computing on mobile devices. This is going to force the game to change. It is way too expensive to build solutions for mobile on J2ME and often too poor a customer experience when they are built using WAP (except for super simple things). I think that we're going to rethink browsing around a model which has pub/sub, events, and caching built in..

Languages for mobile code are going to be important for this next phase. I think there are still many interesting language design questions related to mobile code that people should start thinking about (cf. Links). I am sure a savvy language maven can become the next BDFL, or alternatively earn some big bucks, by helping attack this problem.