[racket] Processing and Racket

From: Philipp Dikmann (philipp at dikmann.de)
Date: Mon Jun 3 17:45:29 EDT 2013

Chipping in another 2 cents, I'd like to second Matthias, Eli & Jay in 
finding the idea quite splendid! Narrowing the focus of a 
documentation/community project on graphical output is a promising way 
to encourage more conversation about Racket.

Being a design professional with little CS education myself, and having 
struggled with languages all the way back to Logo in High School, I am 
in general very satisfied with the state of documentation on Racket, 
considering its vast range of applications, and even the way that 
graphical output is incorporated - because it has similar potential to 
blow your mind like the notorious 'picture language' of SICP, at least 
for non-CS staff living most of their lifes in a Kingdom of Nouns.
On the other hand, some experience in teaching impatient design students 
(me being the first) the bare minimum to get anything on the screen made 
me appreciate the perks of Processing & its hands-on documentation to 
that end. I'd like to add some points of interest to the distinction of 
Racket and Processing:

- Processing, out of the box, is tailored to a very specific domain: 
drawing images at a fixed framerate. This is of course incredibly 
instrumental in demonstrating & sharing the language, in bite-sized code 
snippets, with colorful images alongside. It's an interesting challenge 
to cast a similar harness for Racket, which quite a few of the 
(educational) languages shipping with Racket have already done, so 
there's an abundance of good ideas on that.

- The techniques that are motivated by Processing - object orientation, 
imperative style - are a nice fit for drawing images, because they are 
so immediately analogous to drawing an image in the real world - picking 
tools, executing steps, arranging discrete objects on a flat canvas. In 
contrast, the expressivenes of Racket is more abstract. That might prove 
to be a nice segue for showing off different approaches to the same 
'problem' - with each 'solution' talking about it in different concepts, 
enabling different treatments & developments. Rosetta Code does it by 
contrasting different programming languages on a wide range of problems; 
but when the problem is always simply 'reproduce this image', a single 
language still allows multiple interesting ways of thinking about it 
(esp. considering the idea of 'language' in the Racket context :P), and 
even better: demonstrate, graphically, what that particular way of 
thinking entails (e.g. like the 'experimental translations' of the 
Recode Project).

- An aside: the development of Processing code, especially in the 
Processing Environment, is rather rigid (write-compile-run-repeat). 
Racket enables a more organic approach with DrRacket, the REPL etc. I 
wonder if the Processing culture of fire-and-forget has implications for 
the way that code sharing is handled and accepted by the community, and 
wether Racket would inherently motivate a completely different approach; 
but that might be a bit far-fetched.

- One last thing: In my experience, errors are more plentiful in 
Processing, because keeping track of state gets difficult. However, in 
an artistic / experimental setting, errors can be very productive. I've 
had considerably less 'happy accidents' in Racket, because there are 
very few accidents at all; 'breaking things' must be done more 
purposeful. I understand this is the result of continued efforts to make 
reasoning about Racket programs as effortless as possible, so hats off 
to that :)


On 03.06.13 18:13, Sean McBeth wrote:
> Okay, I'll draw up a plan soon and start documenting some of these 
> ideas better.
> On Sun, Jun 2, 2013 at 11:28 PM, Jay Kominek <kominek at gmail.com 
> <mailto:kominek at gmail.com>> wrote:
>     On Sun, Jun 2, 2013 at 10:00 AM, Sean McBeth
>     <sean.mcbeth at gmail.com <mailto:sean.mcbeth at gmail.com>> wrote:
>     > So, an Exhibition page would have a curated selection of
>     community entries.
>     > There'd always be a sidebar of highly-ranked community examples.
>     Based on the response the Rosetta Code effort got, you could probably
>     just put up a web page describing a bunch of cool examples you wish
>     you had, mention it here, and get other people to produce all the
>     code.
>     I had fun with the piece I (re)did for the recode project
>     (http://recodeproject.com/), so you could even put up a picture of the
>     output you want and I'd be tempted to produce code that could
>     duplicate it.
>     --
>     Jay Kominek
>     ____________________
>       Racket Users list:
>     http://lists.racket-lang.org/users
> ____________________
>    Racket Users list:
>    http://lists.racket-lang.org/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20130603/84c7ff05/attachment.html>

Posted on the users mailing list.