[plt-scheme] Jane Street Summer Project 2009

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Feb 2 11:29:07 EST 2009

At Mon, 2 Feb 2009 15:49:47 +0000, Noel Welsh wrote:
> On Mon, Feb 2, 2009 at 12:31 AM, Grant Rettke <grettke at acm.org> wrote:
> > A typical IDE set up might include the notion of a project, a file
> > browser, a module browser, a class browser.
> 
> Of these I think the notion of a project is the most important. It
> should include:
> 
>  - standard directory layout, prepopulated with standard stuff
>  - one-click testing, building, build for planet, planet dev. link

For my part, I've tried to avoid introducing the notion of a "project"
into PLT Scheme tools.

It isn't because I'm unused to the project concept. My first real
programming experiences were using CodeWarrior on the Mac. I still
(have to) use projects with VisualStudio. And I'm forced to use XCode
sometimes.

Personal taste aside, the technical problem with projects --- as
usually implemented --- is that they are outside the programming
language. If your project tools are missing some functionality, then
you're either stuck doing things manually or you learn the project
system's ad hoc extension API.

I've instead pushed the idea that everything should be code organized
into modules. If you want a new programming language, you don't tell
the project manager that it should run some command-line tool on files
that end in ".xqz". Instead, you import the "xqx" language into your
module (perhaps via "#lang xqz"). I'm convinced that this approach is
more systematically extensible and composable.

That approach is potentially compatible with a notion of projects. I
can imagine a project description that starts "#lang project" and that
does great things. But if there are some "project description" files
sitting around that aren't code, or if doing something with a project
(other than editing it) requires looking at the source of the
description (in some fixed syntax) instead of "running" the project
description, then it will seem to me like the wrong approach.

Along similar lines, I'm uncomfortable with the idea that a programmer
should click a button to create a tree of files and start editing. It
should be enough to just start a file with "#lang ....". I don't think
we're to that point, yet, because things like documentation or reader
extension require files with the right name (e.g., "info.ss") in the
right directory (e.g, in a directory registered with Planet). But I
hope we can find ways to remove directory hierarchies and other
boilerplate, instead of ways to generate boilerplate automatically.


Matthew



Posted on the users mailing list.