Hey all!
First off, thanks Samer for posting this up here! Its been a crazy journey building this thing out over the past few months, so its super exciting to hear all your feedback on it! I hope you all get a chance to check it out whenever you can!
The main announcement is on
the openFrameworks forum. Check that out for a more detailed rundown of Zajal's key features and a bunch of videos of it in action. At the bottom of the post is a bunch of links to the different parts of Zajal's web presence.
@Flyingwizard Watfa's languages class was one of the best I took in CMPS! Happy I came off as bright! Who were you in class? I don't seem to remember any wizards...
@arithma Its more the Ruby VM + libraries + an API. Its only a "new language" as far as Processing is (Java + API + libraries + IDE). Zajal uses a stock Ruby 1.9 interpreter at its core and exposes the openFrameworks rendering/windowing/event loop libraries through a designed syntax as well as adding in features like live coding and a GUI interpreter.
@AymanFarhat The current build was written in six crazy months, so I had to leave cross platform support for later. Sorry! I'm glad you like it though. I'm super excited about Windows/Linux support both to let as many people as possible play with the language, but also so Zajal can be used server-side to generate graphics/audio/video for the web. The screenshots in the documentation are all generated from the example code (e.g.
http://docs.zajal.cc/Graphics:rectangle), but this happens locally on my machine before I publish.
@saeidw Totally agree! In all my talks/writing on Zajal, one of the first things I say is that I really don't like the term "creative coding". They may not make pretty graphics, but the process scheduling algorithms in the Linux kernel as creative as anything I've seen! I agree that Ruby-style syntax has a chance of being more teachable than Processing's Java-style syntax -- that's a big part of my research.
You make a very interesting point about imperative vs. declarative coding. I agree that Processing/openFrameworks/Zajal are quite low-level in terms of the primitives you have to deal with. This is by design, though, as these low level tools allow you the flexibility to do anything albiet at the cost of uglier code. My first concern about a declarative model is boxing the programmer in. Without access to control flow, you'd have a hard time making things like games or interactive pieces. It could be, though, that a carefully designed declarative language would be awesome for this kind of work. CSS, SQL and HTML, despite their flaws, work great for their respective domains!
Impromptu has come up a few times in my research. It looks great and I'm going to try it out this summer. Zajal's audio support is non-existant at the moment due to threading issues I couldn't resolve in time for my thesis show, but will be really robust when complete.
@Bassem Ha! I was hoping for arak and fruits. Anything named "Zajal" that isn't real zajal is going to be a let down, it seems.
@ZeRaW @J4D Zajal is very much inspired by Processing, which is the language many people use at Parsons and the language I taught to incoming students last summer. Zajal is meant to be a lot like Processing, but easier to use due to its syntax and all the amenities it provides you as a coder. If nothing else, coding in Ruby is easier than coding in Java! As far as how advanced they are, when Zajal is complete I would say they should be about equal in terms of what they can do, although Zajal will have things like audio, Arduino, webcam and a package manager built in. openFrameworks is what I would call "more advanced" as it is a C++ library with everything that entails (e.g. memory management and segfaults). Would love to hear more about HLPL!
@rolf I'm sorry you don't like the name! I chose it because of how Zajal's live coding allows you to make up your code as you go along, the way Zajal poets do. Also, its a name that searches well in google (if you search "processing strings" for example, you will get information on how to process strings in every language there is, not just Processing!) and a nod to my heritage and an art form I love and respect. As far as the syntax goes, I would invite you to try it out. Its different for sure, but it allows things more traditional curly-brace languages could never dream of.
Thanks for the great feedback. Let me know if there's anything else I can answer, or if you try out Zajal let me know what you think of it!