The Fortress Language Spec v0.618

The Fortress Language Spec v0.618

We've already discussed the Fortress project at Sun's Programming Language Research lab. The project seems to be progressing well: they have now released a preliminary version of the language spec as a tech report. This should help assuage the folks who were grumbling about the hype and market-speak of Sun's promotional article. Their PL research team includes some real Smarty McSmartpants, so I expect really good things from them.

From a cursory glance at the spec, there seem to be many interesting features, including:

  • an advanced component and linking architecture
  • objects and traits (which look similar to Moby and Scala)
  • multiple dispatch
  • type inference
  • parameterized types
  • extensible syntax (with a conspicuous reference to Growing a Language)
  • first-class functions
  • proper tail calls
  • labelled jumps, exceptions
  • contracts
  • some interesting parallelism features (including futures, parallel loops, atomicity primitives, transactions)
  • matrices
  • comprehensions
  • bignums, fixnums (signed and unsigned), floating-point, imaginary and complex numbers
  • dimensions

Future work includes proving type soundness, apparently. :)

It is so much fun when the luminaries start working on new languages. History in the making!

Call to and for editors

As you can see being quite busy I have to reduce my contributions to LtU. I guess I am not alone in this regard as the frequency of new items mentioned on the home page shows.

I urge editors to post more often. Several items posted to the LtU forum were quite relevant for the home page, especially due to the low volume of new messages. Remember that if you feel an item in the forum is worthy of wider attention, you can post a link to it on the home page.

That concludes the message intended for current contributing editors.

If, howver, you are not an editor, yet visit LtU regularly and wish to become one, get in touch with me, and get added to our illustrious team.

Richard Hamming - "You and Your Research"

During a discussion on the subject of passion in programming, David Bremner on #haskell pointed out Richard Hamming's 1986 talk You and Your Research. Here's a taste:

At Los Alamos I was brought in to run the computing machines which other people had got going, so those scientists and physicists could get back to business. I saw I was a stooge. I saw that although physically I was the same, they were different. And to put the thing bluntly, I was envious. I wanted to know why they were so different from me. I saw Feynman up close. I saw Fermi and Teller. I saw Oppenheimer. I saw Hans Bethe: he was my boss. I saw quite a few very capable people. I became very interested in the difference between those who do and those who might have done.

Hamming clearly describes both the difference between the two and how you can be one of those who do.

FORTRAN pilot project

(via Paul McJones)

The FORTRAN pilot project is an effort of the Museum's Software Collection Committee to develop expertise in the collection, preservation, and presentation of historic software. The specific goal of this project was to locate source code, design documents, and other materials concerning the original IBM 704 FORTRAN compiler. The justification for this particular goal is that FORTRAN was the first high-level programming language and the first high-quality optimizing compiler.

Quite a bit of interesting stuff to read here.

Computer generates verifiable mathematics proof

NewScientist.com:

A computer-assisted proof of a 150-year-old mathematical conjecture can at last be checked by human mathematicians... ...Georges Gonthier, at Microsoft's research laboratory in Cambridge, UK, and Benjamin Werner at INRIA in France have proven the [Four Colour Theorem] in a way that should remove such concerns.

They translated the proof into a language used to represent logical propositions - called Coq - and created logic-checking software to confirm that the steps put forward in the proof make sense.

Georges Gonthier's home page includes links to the paper and the actual proof.

2005 Programming Languages Day at Watson

The Sixth IBM Programming Languages Day will be held at the IBM Thomas J. Watson Research Center on Friday, April 22, 2005. The day will be held in cooperation with the New Jersey and New England Programming Languages and Systems Seminars. The main goal of the event is to increase awareness of each other's work, and to encourage interaction and collaboration.

Simon Peyton Jones is keynoting on composable memory transactions.

The program, and abstracts, are available online.

Ada 2006 Documents

The documents on this page consolidate a possible amendment to Ada 95 with Technical Corrigendum 1 and the Ada Standard (International Standard ISO/IEC 8652:1995). The Amendment will be produced by the ISO/IEC JTC 1/SC 22/WG 9 Ada Rapporteur Group (ARG). The final form of the Amendment, or whether its standardization will succeed, are not known at this time. Thus, any proposed feature may be substantially changed or withdrawn before the Amendment begins standardization. These draft documents are not an official publication or work product of the ARG, but rather are provided by Ada Europe as a service to the Ada community.

Ada is a quite well designed language (despite having quirks like any other language, of course). The design process is impressive, as you can see if you check the ARG website.

The next version of Ada is almost ready, and you can get a taste of what's coming up by reading the reference manual, or the Annotated Ada 2006 Language Reference Manual which includes more detailed language design reasoning.

Among the new things in Ada06 are: interfaces (as in Java), mutually dependent references between units and finer control over access from the private part of a package, standard library enhancements including a comprehensive container library, file and directory management etc. and extensive additions to the Real-Time Systems Annex.

The Real-Time Systems Annex which specifies additional characteristics of Ada implementations intended for real-time systems, and is one of Ada's strong points, now includes the Ravenscar profile for high-integrity systems, further dispatching policies such as Round Robin and Earliest Deadline First, support for timing events, and support for control of CPU time utilization.

XJ - XML Enhancemets for Java

XML Enhancements for Java (XJ) are a set of extensions to Java 1.4 that integrate support for XML, XML Schema and XPath 1.0 into the language.

(one more to add to the list of XML/language integration attempts)

jhc

jhc is a haskell compiler which aims to produce the most efficient programs possible via whole program analysis and other optimizations.

This seems like an interesting project, for example: Region Inferencing, Compilation by transformation with 2 general intermediate languages, very modern design, using rank-n polymorphism, monad transformers, generic programing, and existential types.

Note, howver, that there are quite a few problems (scaling, memory leaks, etc.)

Maybe some of you might want to offer a helping hand...

Semantic Streams: a Framework for Declarative Queries and Automatic Data Interpretation

We present a framework called Semantic Streams that allows users to pose declarative queries over semantic interpretations of sensor data. For example, instead of querying raw sensor data, the user can query vehicle speeds; the system decides which sensor data and which operations to use to infer the vehicle speeds. The user can also place constraints on values such as the confidence with which the speed was measured or the amount of energy consumed to measure the speeds. This framework is designed to work in a shared sensor infrastructure, where multiple queries may coexist for extended periods of time, instead of a hand-designed, single purpose sensor network. We propose a semantic service programming model and describe a service description language and a query processor that support the programming model. We demonstrate how this system can be used with a network of video, magnetometer, and infrared break beam sensors deployed in a parking garage.

The declarative framework is based on Prolog and CLP(R) and implemented using SICStus Prolog.