Homework 6. Comparing scripting languages

Motivation

Following up on the project, evaluate two other programming-language systems to see whether it would be feasible to port the Twisted platform (and your project implementation in particular) into these languages. In particular, you'd like to use continuations instead of Twisted's deferred and callbacks.

One obvious candidate is the JavaScript of the near future, since ECMAScript 6 supports tail call optimization, and if you combine that with continuation-passing style (CPS) you have everything you need to do continuations.

However, it's possible that CPS will make your programs hard to read, so you'd also like to consider a language that supports continuations (or something like continuations) directly, much as Scheme does with call/cc.

Assignment

Choose one of the following languages and associated continuation-like features:

Do some research on your chosen language and feature as a potential platform for Twisted. Your research should include an examination of the language and system documentation to help determine whether it would be an effective way to implement Twisted.

Compare and contrast (a) your chosen language, (b) Twisted's current implementation in Python, and (c) rewriting Twisted in near-future JavaScript using CPS. Specify any assumptions you make in your comparison, and any gaps or incompletenesses in your analysis.

Unlike the project, we are not expecting working prototypes, though prototypes are welcome.

Prepare and give a brief oral presentation of your research, and present it in discussion section. Please make sure your talk fits in the time allotted, as we don't want to cut you off abruptly.

Write an executive summary that compares the three approaches. The summary should be in 10-point font or larger and should be at most four pages. You can put references and appendixes in later pages, if there's not enough room on four pages: the appendixes should contain the source code or diagrams for your example application. Your summary should focus on the technologies' effects on ease of use, flexibility, generality, performance, reliability; thie idea is to explore the most-important technical challenges in doing the proposed rewrite. The summary should be suitable for software executives, that is, for readers who have some expertise in software, particularly in managing software developers, but who are not experts in Python or JavaScript. Please keep the resources for written reports and oral presentations in mind, particularly its rubrics and its advice for citations to sources that you consulted.

Submit

Submit a file hw6.pdf containing your summary. If you have prototype code, submit it as a compressed tarball hw6.tar.gz in the usual way; it should include a README file that contains instructions for how to build and run the prototype.

Submit a file named talk.pdf containing a copy of your presentation's visual aids in PDF form. Also submit a file containing the original format of the aids (talk.odp, talk.ppt, etc.), so that we can have them ready to go for your talk all using the same laptop, and not have to waste time connecting your laptop to the projector. Please consult with the TA well before the talk if your visual aids require special software (e.g., if you have a prototype server that you wish to demonstrate).


© 2013, 2014 Paul Eggert. See copying rules.
$Id: hw6.html,v 1.45 2014/02/28 22:17:18 eggert Exp $