1.2.05

 

Links meeting at ETAPS

Taking advantage of the fact that the world will be visiting my
doorstep, with the help of some colleagues I am organizing a
meeting on Links for 6 April 2005, to overlap with ETAPS.
The meeting is by invitation only --- please
let me know if you would like to be invited!

Dear Colleagues,

If we bent our minds to it, could we produce a functional language
that was as widely used as Python? There is reason to believe that
functional languages are particularly well suited to building web
applications.

* Databases. Kleisli and Mnesia (not to mention SQL and
XQuery) have demonstrated the value of functional languages as query
languages.

* XML. Xduce, Cduce, Bigwig (not to mention XSLT and XQuery)
have demonstrated the value of functional languages for manipulating
XML.

* Continuations. PLT Scheme and WASH have demonstrated the value of
functional languages for structuring CGI interfaces.

* Distribution. Erlang and JoCaml have demonstrated the value of
functional languages for distribution and mobility.

The technique of building a coalition to design, implement, and
promote a general-purpose programming language has proven
spectacularly successful for ML and Haskell. Can we apply this
technique again, this time aimed at an application domain?

ETAPS will attract a large number of researchers to Edinburgh, and
seems an appropriate point for launching this project. We propose
to meet on *** Wednesday 6 April 2005 in Edinburgh ***. We hope you
can come.

The working name for this project is Links. A quarter of a century
ago, Burstall, MacQueen, and Sannella introduced Hope, the source of
the algebraic types of ML and Haskell. Hope was named after Hope Park
Square, located near Edinburgh University on the Meadows. Links is
named after the Bruntsfield Links, located at the other end of the the
Meadows and site of the first public golf course.

Points to be discussed at the Links meeting include:

* Presentations on work to date -- we hope you will contribute to this.

* Types. The type system of Haskell and the module system of ML
are both extremely powerful, but quite different. Regular expression
types for XML are also powerful, but it is unclear how to combine
these with polymorphism or higher-order functions. Further, to be
successful, any new language must play well with SOAP, Java, and C#,
at a minimum; how do we integrate OO and FP types?

* Effects. It is proposed that the language be strict, with an effect
type system (combining the advantages of Haskell monads with ML effects).
What variety of effects should be supported? Can we provide support for
laziness within this framework? (See Wadler and Thiemann for
relations between monads and effect type systems, see Wadler, Taha, and
MacQueen for a proposal to support laziness in a strict language.)

* Targets. Web applications are often structures as three tiers:
browser (running HTML, XML, Javascript, Flash, Java), server
(running Java, C#, Python, Perl), and database (running SQL or XQuery).
We hope to compile code to run in all three tiers from a single source.
How can a compiler framework support multiple targets of this kind?
(See Thiemann on generating multi-tier programs from a single source.)

* Organization. How to structure the work? Should we put in for
European and/or US grants?

Volunteers for presentations and suggestions as to topics and organization
would be most welcome.

We look forward to hearing from you!

Yours sincerely,
Xavier Leroy
Simon Peyton Jones
Benjamin Pierce
Philip Wadler

Comments:
I received the following useful comment from Garry Hodgson (posted with permission). -- P

i hope you are successful. i worry, though, that much of the focus
in your outline is on the language technology, and not on the ecosystem
surrounding the language which, i believe, is what will make it "as widely
used as python" or not. perl, python, java, etc. are not popular primarily
based on their language design.

everyone on this list uses highly advanced languages on a daily basis.
but if i want to write a mail or http client or server, or parse or generate
xml, or run a unix process and gets its exist code and output, or whatever,
how do i do that? yes, there are libraries out there, but i have to go find
them, and build them, and integrate them, etc. and this raises the threshold
of pain sufficiently high that it's usually easier to just use what i've got.

mind you, i'm a big fan of FP. i use erlang and ocaml whenever i can.
but it costs me a lot of effort to do so, both in finding what i need and
in justifying the decision. if you want to read the vast majority of users
who don't already want to use FP, you'll need to make it easy to do so.

a while back, python was using the slogan "batteries included" to
get this idea across. while y'all are designing the ultimate "take over
the world" functional language, please don't forget the batteries.

----
Garry Hodgson, Technical Consultant, AT&T Labs
 
Another area worthwhile looking at is in designing languages for the current generation of game machines, where parallelization is important.

It is worthwhile because:
1) Computer game development do not suffer the constraints of corporate programming, and are more adventurous with tools. A lot of games run with embedded scripting languages. Why not have highly parallelizable functional languages for computer generated graphics?

2) Existing languages are inadequate, and it has taken several years for developers to learn how to squeeze performance from the Sony PS2 architecture.

3) Computer gaming is a big industry, so there will be sufficient commercial interests in the project

4) Specfic target constituency. It's not as important to have broad library support compared to a language targeted for general purpose use. Our baby language needs a niche to survive and prosper. Most of the goals mentioned do seem to fit this market.

5) Avoiding hard things. Programming for the business processes in the real world is hard. It's full of non-strictly typed interactions and full of side-effects. LISP picked up a bad name because AI was too nebulous an aim.

6) Cell processors - we need new languages for them. Once proven, there is a general future for this language.

7) The coolness factor associated with computer games can accelerate the adoption of a language
 
Tey has some good points about the gaming world, although it seems the thrust of links is in a different direction.

With the introduction of the Cell in the new PS3, hopefully games programmers will learn that good tools can be more effective than low-level C and hand-written assembler routines.
I believe, or rather hope, this will become more apparent the more games consoles utilise concurrency.

Another possibility is on-the-fly generation of hardware - the PSP contains a small FPGA.
A declarative language that tracks concurrency and state through it's type system would allow generating very efficient h/w. Coupled with partial evaluation, this could lead to very quick "code" for games and media.
 
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?