Hi Rob,
In a recent article in Computer Music Journal, the Chuck team finally
came out and admitted that "readability and clarity trumps performance
and conciseness." In as much as Chuck was designed as a pedagogical
tool for the PLOrk class (and now SLOrk), the choice of a simple
imperative language (painfully C-like) I think is justified.
It's hard for me to accept this, since, like you, I find the language
lacking. To be precise, the first 5 minutes of Chuck are pure joy,
but it becomes an uphill battle from there to do anything of
significant complexity. The creators of Chuck want very much to keep
it simple. In order to do this, they have to toe a very fine line
between functionality and approachability.
The upsides of this include the fact that many novice programmers are
attracted to Chuck, and it's easy to get started. I think that the
success of any addition to the language depends on two things. The
first is that it provides a unique and demonstrably useful
functionality that previously did not exist. The second is that the
addition does not in any way limit the approachability of the
language.
I'm saying this because I agree with David Powers that Ruby-like
abstractions would be bada$$. I'm working on a framework in a couple
of different languages that actually write and deploy Chuck code on
the back end. I would encourage you to try to do the same with Ruby.
I also think that building abstractions from within Chuck is well
worth the effort. Consider posting anything you find useful on the
wiki under Lib:
http://wiki.cs.princeton.edu/index.php/Chuck/Lib
I'm trying to get this community to share their code a little more so
that we can collect tools that make the use of Chuck more powerful.
Also, Michael Heuer has provided a git repository of some library code
that he uses to do functional programming (using functors, since
functions are not first class objects in Chuck) and tweening, etc.
Honestly, I'm still trying to wrap my head around it (being a novice
myself). It is here:
http://github.com/heuermh/lick/tree/master
I'd love to see some Ruby code that interfaces with Chuck and possibly
writes/deploys Chuck code itself. Or perhaps you could describe a
feature of Ruby that you wish you had in Chuck and we could all try to
implement some version of it. I would be more than willing to engage
in this kind of discussion.
Rambling again...
Cheers,
Mike
On Tue, Feb 10, 2009 at 3:48 PM, Robert Poor
Has anyone considered of implementing all the wonderful functionality of ChucK in Ruby? I'm not trying to start a fight or ruffle feathers -- it's an honest question.
I love ChucK for all of its functionality -- it has a full house of great unit generators and signal processing objects coupled with an easy-to-use thread / scheduling mechanism. But for all that, I find ChucK the language lacking. For example, when I really push on defining classes, I can't do all the things I'm used to.
Might not a marriage of ChucK's rich functionality with Ruby's rich language be nearly ideal?
At the very least, we'd get Mr. Bowkett to -- in Yoda's words -- TFSU.
- Rob
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users