The Scala team at EPFL Lausanne is this year again a mentoring organization for 
the Google Summer of Code, "a global program that offers students stipends to 
write code for open source projects". Following a presentation I gave there a 
month ago, the Scala team has included two projects for GSoC related to my 
language extension named SubScript.  More information is here at the Scala site 
and below.

This month students can apply. Interested and qualified? You may contact EPFL, 
or me as andre dot vandelft at gmail dot com.

SubScript

SubScript is a way to extend common programming languages aimed to ease event 
handling and concurrency. Typical application areas are GUI controllers, text 
processing applications and discrete event simulations. SubScript is based on a 
mathematical concurrency theory named Algebra of Communicating Processes (ACP).

You can regard ACP as an extension to Boolean algebra with ‘things that can 
happen’. These items are glued together with operations such alternative, 
sequential and parallel compositions. This way ACP combines the essence of 
grammar specification languages and notions of parallelism.

Adding ACP to a common programming language yields a lightweight alternative 
for threading concurrency. It also brings the 50 year old but still magic 
expressiveness of languages for parser generators and compiler compilers, so 
that SubScript suits language processing. The nondeterministic style combined 
with concurrency support happens to be very useful for programming GUI 
controllers. Surprisingly, ACP with a few extras even enables data flow style 
programming, like you have with pipes in Unix shell language.

Currently a SubScript extension to Scala is available, see 
http://subscript-lang.org. This comes with a branch of the Scala compiler, a 
run-time library, support for the Scala-Swing reactive framework and example 
programs. The "C" part of ACP is not yet supported.

Investigate SubScript on top of JavaScript

SubScript might as well extend other languages next to Scala. An interesting 
starter would be JavaScript. The good thing is that as from April 2013 (?) 
Scala translates into JavaScript. Therefore a single code base of the SubScript 
VM, which is written in Scala, may also work for JavaScript.
The project would involve some of the following tasks:
develop use cases, both for client-side and server-side applications
create a translator for SubScript into JavaScript
extend an existing JavaScript interpreter to understand SubScript
define a strategy to send over SubScript in HTML pagesand have it translated
provide a translator for the SubScript VM source code into JavaScript
JavaScript does not support explicit multithreading; develop an alternative
Enhance Akka using SubScript

Akka is the Scala actor implementation, very useful for distributed functions. 
Typically an actor operates a state machine, which is programmed using state 
variables. This is relatively inconvenient to program and read. SubScript may 
provide a better alternative for programming actor internals. This project 
would involve:
develop typical actors in two versions: just Scala and SubScript
compare these versions in terms of clearness and conciseness
measure the performance of these versions
make a tutorial
More information on SubScriptActors is available at 
http://subscript-lang.org/subscript-actors/.


_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to