The DIALYZER: a DIscrepancy AnaLYZer for ERlang programs

A highlight from the Erlang/OTP User Conference 2004:

The Dialyzer is a static analysis tool that identifies software discrepancies such as obvious type errors, unreachable code, redundant tests, virtual machine bytecode which is unsafe, etc. in single Erlang modules or entire applications. Currently, it starts its analysis from BEAM bytecode and reports to its user the functions where the discrepancies occur and an indication of what the discrepancy is about.

A lot of static-analysis programs have been written for Erlang but this is the first one that programmers have immediately downloaded, used, and liked. I would love to see more researchers following the development philosophy they describe in their paper.

CADR Lisp Machine emulator

via Planet Lisp
Brad Parker has released an emulator for CADR, the second-generation MIT Lisp Machine. The emulator comes bundled with the operating system and you can run it on a regular Unix machine.

He estimates that it is 90% complete. I can confirm that it does boot up and run ZWEI, the Lisp Machine Emacs. (Note that this is MIT's Lisp Machine and not the fancier Symbolics derivative.)

This is really cool!

Dr. Kenneth Iverson Passes Away

Ken Iverson, creator of APL and J, passed away this week.

Ralf Hinze: An algebra of scans

Ralf Hinze. An algebra of scans. Proceedings of the Seventh International Conference on Mathematics of Program Construction (MPC 2004).

In this paper we show that parallel prefix circuits enjoy a very pleasant algebra. Using only two basic building blocks and four combinators all standard designs can be described succinctly and rigorously. The rules of the algebra allow us to prove the circuits correct and to derive circuit designs in a systematic manner.

Parallel prefix computations, or scans if you speak APL, determine the sums of all prefixes of a given sequence. Obviously the term sum is used loosely: scan is a high-order function, and any associative operation can be used. In J talk scan is an adverb.

I wonder when we will be seeing courses called Algebra Design in Computer Science departments around the world...

Ah right, just after all universities offer language design courses ;-)

Whitespace

Whitespace

Most modern programming languages do not consider white space characters (spaces, tabs and newlines) syntax, ignoring them, as if they weren't there. We consider this to be a gross injustice to these perfectly friendly members of the character set. Should they be ignored, just because they are invisible? Whitespace is a language that seeks to redress the balance. Any non whitespace characters are ignored; only spaces, tabs and newlines are considered syntax.

Durham students have fun again ;-)

Playing the Minesweeper with Constraints (MOZ 2004)

Peter linked to the MOZ 2004 papers earlier.

This presentation by Raphael Collet provides a nice example of constraint programming, a paradigm we don't discuss often enough.

Programming for non-programmers

A thread over on the PLT mailing list that LtU-ers may find interesting.

The thread isn't very technical, and the title may be a bit misleading: It's more about programming skills than about programming by non-programmers.

I wonder how many people outside the PL community would agree with the statement that Programming is just another name for the lost art of thinking. Perhaps a better formulation would be Programming, done right, is just another name for the art of thinking.

And by done right I mean using the right languages, of course.

MOZ 2004 talks available

The MOZ 2004 "Second International Conference on
Mozart/Oz" just finished a week ago. There were
50 participants and 23 technical talks. It was quite an
interesting and intense event, with lots of animated
discussions. We have put most of the talks on the
MOZ 2004 main page. I invite you to take a look at
the wide variety of stuff going on under the Mozart
banner.

F#, a functional language for .Net

From Microsoft Research:

F# is a variant of ML with a core language akin to that of the OCaml programming language. F# runs on top of the .NET Framework and in many ways the language is designed to be an "ML that fits with .NET". F# includes extensions for working across languages, and the aim is to have it work together seamlessly with C#, COmega, Visual Basic, SML.NET and other .NET programming languages and tools. It is the first ML language where all the types and values in an ML program can be accessed from some significant object-oriented imperative languages (e.g. C#) in a predictable and (reasonably) friendly way.

Rel: an open source implementation of Date & Darwen's Tutorial D

More from Slashdot, which today points to an article on Rel, Dave Voorhis' open source implementation of Tutorial D (see Chris Date and Hugh Darwen's The Third Manifesto for a discussion of the rationale behind this language).

Voorhis explains his motives for creating the implementation in an article on the (currently somewhat sparse) Rel Wiki.

Discussions of possible replacements of, or improvements on, SQL usually end up being all about the powerful institutional/human factors (or "network effects") that will impede acceptance of any new solution. Refreshingly, Voorhis is going ahead and building one anyway, without waiting for approval from the masses. It might catch on, or it might not; at least someone's giving it a go.