Due to what I can only assume was a clerical error, I was invited to the Dagstuhl seminar on latently typed languages. I accepted before this error could be rectified, and so it is that this blog post comes to you from room 23 in Dagstuhl.
There have been a number of talks of various topics of
interest. Being a good student, I’ve taken notes, which I
intend to put online as time allows. You’ll have to fill in
a few gaps but I hope they’ll give you an idea of what has
been discussed. The first talk is below:
Cross Language Runtimes
Wolfgang De Meuter, Marc Feeley, Robby findler, Roel Wuyts et al.
- not true, but illustrates a problem
- the programming language used determines how we see and
think about the solution e.g. malleable syntax Java vs
Ralph Johnson: study at IBM on what characteristics making
people learn Smalltalk more easily. Number one
characteristic was how many languages you already knew. The
more you know the easier it is to pick up new languages.
Matthias F: ppig.org Productivity of programmers is directly
dependent on number of languages they know not the number of
years of experience.
- mix several languages, choose the right tool for the job
- problem mapping concepts betweeen different languages
Survey cross language systems
Gambit-C (Scheme) FFI to C/C++
(c-define (f x y) (int int) int "f" "" (* x y))
Defines a procedure called f in C, and wraps Scheme
Matthias F: Scheme is not a safe language as the spec
leaves many things undefined.
- Java extended with dynamic, Scheme with contracts.
- Java types mapped to Scheme contracts
Robby F: dynamic is like the Any (TST) type for Java. Too
much to explain now.
- Compile to JS
SHard Scheme to VHDL
- Allow programming techniques and transformations to be
applied to hardware
- Dataflow language: extends Scheme with par like Occam
- CPS analysis of control flow
- Allows calls to VHDL components
- Key was to implement function calls — so full
programming language can be comiled to hardware
Soul Prolog and Smalltalk
- Logic programming language interpreted by Smalltalk
- Prolog symbols are Smalltalk objects
- Reason about code, using reflection
- LogicAJ Generic AOP language
- Logic meta variables
- Carma Smalltalk + Soul
- Generic AOP language
- Very dynamic
etc [other examples]
- Making data and operations from one language accessible
in tohe other language
- Essentially quote/unquote between languages
- Requires careful distinciton between evaluation
contexts (between languages) to handle (un)wrapping and
(more importantly) semantics
Robby F: sometimes wrappers must stay around to enforce
constraints when, for instance, mixing static and latently
Andrew Black: copying implementations don’t work in parallel
systems with mutable state
My comments: There were a lot of questions so the talk ended up being a bit rushed. A lot of time was spent on the survey (and answering questions) which unfortunately left little time to really tease out the interesting issues.