BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Talks.cam//talks.cam.ac.uk//
X-WR-CALNAME:Talks.cam
BEGIN:VEVENT
SUMMARY:Towards Language Composition - Laurence Tratt\, King's College Lon
 don
DTSTART:20140124T140000Z
DTEND:20140124T150000Z
UID:TALK48937@talks.cam.ac.uk
CONTACT:Raphael Proust
DESCRIPTION:We want better programming languages\, but "better" invariably
  ends up\nbecoming "bigger". Since we can't keep making our languages bigg
 er\, what\nalternatives do we have? In this talk\, I propose language comp
 osition as a\npossible solution to this long standing problem. Language co
 mposition means\nmerging two languages and allowing them to be used togeth
 er. At its\nmost fine-grained\, this could allow multiple programming lang
 uages to be\nused together within a single source file.\n\nHowever\, langu
 age composition is not a new idea. It has failed in the past\nbecause edit
 ing composed programs was intolerably difficult and the\nresulting program
 s ran too slow to be usable. Without good solutions to\nthese problems\, l
 anguage composition will remain an unrealised ideal.\n\nIn this talk\, I w
 ill show how the work we are doing in the Software\nDevelopment Team is be
 ginning to address both aspects. We have built a\nprototype editor utilisi
 ng a novel concept 'language boxes'\, which allows\none to edit composed p
 rograms in a natural way\, without the limitations of\ntraditional approac
 hes. We are tackling the performance problem by\ncomposing together interp
 reters using meta-tracing\, allowing us to build\ncomposed VMs with custom
  JITs that naturally optimise across different\nlanguage's run-times. Whil
 e we are much nearer the beginning of the\njourney than the end\, our init
 ial research has allowed us to build a\nsimple composition of two very dif
 ferent languages: Python and Prolog.\n\nJoint work with Edd Barrett\, Carl
  Friedrich Bolz\, Lukas Diekmann\, and\nKrishnan Vasudevan. More details a
 t http://soft-dev.org/
LOCATION:SS03
END:VEVENT
END:VCALENDAR
