Talk:Impromptu (programming environment)

Trimming
I'm gonna separate the lead and the features and try to clean them up. Also I'm going to remove the other sections, that content is not what the article is about. The references need to be trimmed, and the should be those needed to actually reference any claim - frankie (talk) 00:40, 2 June 2011 (UTC)
 * Your refactoring of the description is excellent. However, I would not have removed the video and the code examples. It is pretty common to find screenshots of the interface of software packages. In this case, the video makes IMO much more sense. Code examples are also pretty common for programming languages/environments... Those previously in the article were illustrative without being excessively long (IMO), although there might have been too many. I'd have kept at least the first one. Pygy (talk) 13:00, 4 June 2011 (UTC)
 * Video is not normally used as far as I know. Code examples appear but mostly to indicate syntax and paradigmatic features of the language. What I perceive to be the distinctive feature of the subject is the control over the symbols at runtime, but that is not something that you would express through code, and the code used to provide actual examples of how to setup or use the framework turns it into a how to. Also I feel that the banner is too big, and a screenshot would probably be better - frankie (talk) 16:32, 4 June 2011 (UTC)
 * Also, the description was a copy-paste of a text that belongs to the subject's website, and that appears verbatim over a whole bunch of sites online. I've modified it to focus on the subject rather than just advertising it, but I'm still not sure what is meant by some things and whether they are relevant, such as an idiom called "temporal recursion", or how is it that the interpreter has been modified from TinyScheme 1.35 - frankie (talk) 16:37, 4 June 2011 (UTC)
 * I'll answer both comments here: temporal recursion is a key feature of Impromptu. Functions end up with a "callback" call, which schedules a new execution of the function at a given time, optionally passing arguments. You can see it around 1:10 in the video. You are right about the code examples. The video, however, illustrates the "paradigmatic features of the environment", as you said and is not at all a tutorial (you can see Andrew Sorensen editing the code, live). Have a look at it, the music is excellent. To be honest, I've never seen a video in a Wikipedia article either. But the software allows it and it fits in this case. Pygy (talk) 17:21, 4 June 2011 (UTC)


 * [[Image:Study_in_keith.ogv]]


 * What does this video demonstrate? Does it have any audio? It doesn't work for me all under IE, so I'm definitely missing a plug-in there. Under Firefox, I get video but no audio.  It's just a silent screen shot video as someone edits something (who knows what or why) in a Lisp-like language with a full-screen editor. Do I need specific plug-in to make this do something useful?  Msnicki (talk) 21:40, 5 June 2011 (UTC)
 * I have no idea exactly what it's trying to show. Sorenson has a bunch of these on his Vimeo channel. The video uploaded here only works for me with audio if I download the ogv (click more) an play it in VLC. The audio is 6-channel Vorbis, which is rather uncommon, I suspect. Triggers a known Firefox bug . Another good reason to remove it. There should be a much simpler example in this article. FuFoFuEd (talk) 23:06, 5 June 2011 (UTC)


 * Oh, my. I downloaded VLC and now I get audio.  It's like listening to someone who doesn't know how to play the piano try to play the piano &mdash; one bad note at a time.  There's no voiceover to give even a hint what's going on.  I don't know how it could be more pointless.  Nominated for deletion.  Msnicki (talk) 00:04, 6 June 2011 (UTC)


 * Using callback methods is a standard feature, actually this is closer to a database trigger. The code itself says nothing about the actual features of the environment, but how to use it. Programming languages work by adjusting to particular conventions (in this case the one from Scheme) in order to achieve a purpose, but that makes that the code rarely reflects such purpose, it is instead a collection of esoteric words that only developers make use of. For developers, the framework should provide documentation or an API as part of their product offering, but for a Wikipedia article such information is too specialized - frankie (talk) 17:41, 4 June 2011 (UTC)
 * Temporal recursion is about scheduled callbacks at predicted intervals, not just callbacks. For sure, callbacks are pretty common in CS, but AFAIK, in musical programming environment it is a unique feature for scheduling stuff. Furthermore, from a syntactic standpoint, it looks like tail recursion with a special keyword (see recurse in Clojure). Not mentioning it would be like not mentioning that a violin is played with a bow, because everyone knows what a bow is (in the archery meaning of the word). 81.247.43.6 (talk) 08:48, 5 June 2011 (UTC)
 * I'm hardly familiar with Clojure, but that's an unrelated "feature". You need to use those keywords in Clojure because the JVM lacks tail-call optimization, it seems. I checked The Joy of Clojure, p. 30, which confirms it. By the way, the Clojure keyword is "recur" not "recurse". FuFoFuEd (talk) 20:43, 5 June 2011 (UTC)

I have a couple of observations on the above discussion:
 * Language features should be explained in less proprietary jargon if possible. I think the current version of the article does that reasonably well. It explains what "temporal recursion" is for example. Nota bene.
 * An example of code is present in the more developed articles on programming languages. Sometimes editors complain that these are "original research" unless they are copied from somewhere else, but ulimately this seems common practice in Wikipedia. (See discussion on this at Talk:ChucK.) Given that Impromptu is aimed at live coding, I think a video is appropriate, at least as an external link. It would probably be less dazzling if the example included in Wikipedia were just a standard block of code accompanied by the audio sample produced. In the live demos Sorenson puts out, it's not exactly easy to follow what's going on unless you know Impromptu already. They're mostly for the wow factor. FuFoFuEd (talk) 06:18, 5 June 2011 (UTC)

The feature did sound like something to include, the only thing is that this information needs to be put in a context so that the user of the article understands what that means to a certain level, and there is very little to be understood by the statement that it is "temporal recursion". Now it can be linked to Clojure, and that brings the capabilities of the subject into a proper context. One question, how is it that this framework uses triggers that equivalent packages don't? - frankie (talk) 18:50, 5 June 2011 (UTC)
 * I think most music programming languages have some form of scheduling like this. From what I recall, in ChucK one can schedule the rest/continuation of a "shard" (thread) to resume after a some time by chucking some interval into the predefined variable "now". Many threading libraries and OS kernels have something similar, except for the syntactic sugar: you put the thread/LWP/process in a queue to be activated on some event, and then call something like yield/schedule to relinquish the CPU. This so called "temporal recursion" seems to be just a pause by a specified amount, which yields the CPU and schedules a continuation that just does a normal tail call. FuFoFuEd (talk) 20:21, 5 June 2011 (UTC)

I've restored the video (see the rationale here: http://en.wikipedia.org/wiki/Wikipedia:Files_for_deletion/2011_June_6#File:Study_in_keith.ogv ).Pygy (talk) 10:21, 14 June 2011 (UTC)

Now we've established notability, I've trimmed the references back to the most relevant ones. Yaxu (talk) 22:27, 25 June 2011 (UTC)
 * Thanks Yaxu. I've been meaning to do it for a while but haven't had the time to check which ones were relevant. Actually, I haven't done anything else on the article for that same reason, and I doubt I'll find time to dwell into the subject in order to assist here anymore. Keep up the good work - frankie (talk) 22:44, 25 June 2011 (UTC)