General

Joshua Bloch: "Nearly All Binary Searches Broken"

This amusing discussion is coming up all over the place.

Notice that a language with slightly different semantics would "solve" this problem, or at least mitigate the problem: All you need is to have range constraints on integers, thus not allowing the numbers to overflow unnoticed. This is the standard out of the box behaviour of Ada, for example. So another way to view this is as a question of finding good default behaviour for programming languages (you can suppress the range checks in Ada, if you *really* want to).

The Origins and Nature of Computation

This research workshop takes place in Israel, so I doubt many of you will come, but the program is quite interesting so you might want to google some of the titles...

Ada UK Conference 2006 (slides & videos)

Good stuff here, especially if you want to learn more about Ada 2005.

Robert Dewar's talk on Ada 2005 & high integrity systems should be of general interest. The main argument is that quality depends at least as much, if not more, on the language culture than it does on specific language features. Dewar presents some of the elements that contribute to Ada's success in the mission critical world which demands high quality software. Among them: emphasis on readability, static typing, the package construct and the ability to subset the language (e.g., SPARK and RAVENSCAR). The talk isn't about the technical aspects of these features, but on how they influence the way programmers approach their tasks.

Alan Burns discusses the Real time issues in Ada 2005. This revision of the language adds many important features (such as CPU monitoring and accounting, budgeting for the execution time of groups of tasks, and new scheduling polices including non-premeption, round robin, and Earliest Deadline First) to an already rich concurrency model. The non surprising conclusion is that Ada is the best language for RT programming not only on earth, but in the entire universe...

Paul Vick: BASIC principles

Visual Basic is a general-purpose programming language that prioritizes ease of use. In particular, Visual Basic is designed with the following principles in mind...

The principles are enumerated here.

Yet another one of those "language philosophy" kind of things. While the list isn't surprising, I think it's good to try to be explicit about these things. This allows you to reflect on them, and allows others to criticize both the choice of principles and the way they are manifested in the language...

Computer Science Looks for a Remake

...there is a deep malaise in computer science these days. Professors bemoan falling enrollments, a decline in prestige and a lack of attention to real-world problems. But, paradoxically, they say the future of CS has never been brighter, both within the discipline and in fields that computer technology will increasingly influence. Computerworld's Gary Anthes recently asked six CS professors what lies ahead for the field.

This piece isn't directly related to programming languages (in fact, I think this is one of the problems with it), but it will interest many LtU regulars.

To make this more relevant for LtU, let me rephrase the question: What's the most important and interesting CS research at the moment, from a PL perspective?

HashCaml--an extension of the OCaml bytecode compiler with support for type-safe marshalling and related naming features.

HashCaml

Peter Sewell and crew follow up on their work on Acute:

In this paper we put these ideas into practice, describing the HashCaml extension to the OCaml bytecode compiler, which supports type-safe and abstraction-safe marshalling, together with related naming constructs. Our contribution is threefold: (1) We show how to define globally meaningful runtime type names for key OCaml type constructs that were not covered in our previous work, dealing with the generativity issues involved: user-defined variant and record types, substructures, functors, arbitrary ascription, separate compilation, and external C functions. (2) We support marshalling within polymorphic functions by type-passing, requiring us to build compositional runtime type names and revisit the OCaml relaxed value restriction. We show that with typed marshalling one must fall back to the SML97 value restriction. (3) We show how the above can be implemented with reasonable performance as an unintrusive modification to the existing OCaml language, implementation, and standard libraries. An alpha release of HashCaml, capable of bootstrapping itself, is available, along with an example type-safe distributed communication library written in the language.

Col--an O'Caml syntax extension for easier manipulation of flat records, objects or tuples and conversions from/to CSV file

I was just getting all depressed realizing that I'd probably have to write a syntax extension in camlp4 to get reflection out of O'Caml. Then I discovered that someone just did recently. This serves both as a practical implementation of reflection for a statically-typed language and as a showcase for O'Caml/camlp4's ability to define new syntax.

Links: Web Programming Without Tiers

Links: Web Programming Without Tiers. Ezra Cooper, Sam Lindley, Philip Wadler, Jeremy Yallop.

Links is a programming language for web applications. Links generates code for all three tiers of a web application from a single source, compiling into JavaScript to run on the client and into SQL to run on the database. Links provides support for rich clients running in what has been dubbed `Ajax' style. Links programs are scalable in the sense that session state is preserved in the client rather than the server, in contrast to other approaches such as Java Servlets or PLT Scheme.

Links is related to many of the recent discussions (here's one), and was discussed here a few times in the past. This paper is a nice overview, and a good place to start if you haven't looked at Links before.

It would be nice (and, I think, productive) to have Erik and Philip, who both guest blog here on occasion, discuss their different PL based approaches to web programming here on LtU! What better place to discuss web programming?!

Rethinking Linguistic Relativity

We discussed the Sapir-Whorf Hypothesis (also called the Linguistic Relativity Hypothesis) many times, and it is a topic that is worth revisiting if you are interested in the way language influences mind. While it is true that what we know about natural languages doesn't have to match the way programming languages influence our programming style, it is still worthwhile to discuss the possibility.

For many years Sapir-Whorf was considered very problematic, since empirical findings didn't seem to support the theory: no real cognitive differences that could be attributed to language were found. More recently, linguistic relativity became more respectable, and indeed important work is being done in this field.

I suggest reading Gumperz and Levinson's introduction from the book they edited Rethinking Linguistic Relativity (1996, Cambridge University Press).

Also from Levinson is Language and mind: Let’s get the issues straight! from the 2003 book Language in mind: Advances in the study of language and cognition (D. Gentner & S. Goldin-Meadow, eds.)

Oberon Script. A Lightweight Compiler and Runtime System for the Web

Oberon Script. A Lightweight Compiler and Runtime System for the Web. Ralph Sommerer

Oberon Script is a scripting language and runtime system for building interactive Web Client applications. It is based on the Oberon programming language and consists of a compiler that translates Oberon Script at load-time into JavaScript code, and a small runtime system that detects and compiles script sections written in Oberon Script.

People outside our field often don't relaize just how easy it is to implement languages: This project, for example, uses a recursive descent parser, and the entire compiler is 1081 lines of Javascript code.

XML feed