6 ms·
I've worked with a few people who use vvvv and written (is that the right verb when it's graphical language) a bunch of of vvvv nodes to integrate with other st
by almost 10y ago
I've worked with a few people who use vvvv and written (is that the right verb when it's graphical language) a bunch of of vvvv nodes to integrate with other stuff I was writing for them.
It's a a powerful system and seems to really fit the minds of some very talented and creative people. As seems to be common with graphical programming things abstraction can be a little hard unless it fits into the node-with-fixed-inputs-and-outputs mold but this isn't a huge problem for the sizes of projects I saw.
The really cool thing in my opinion is the live nature, coding and runtime are the same so you can see it all running as you change thing. Fantastic for both exploratory coding and performance coding. I used it once as a front end for playing with some head tracking code I was working in in C++ and it was a fun experience, pity it's Windows only!
- catnaroek 10y ago> As seems to be common with graphical programming things abstraction can be a little hard unless it fits into the node-with-fixed-inputs-and-outputs mold In other words, you're trapped in a first-order box: http://lambda-the-ultimate.org/node/5157#comment-85605 http://lambda-the-ultimate.org/node/5157#comment-85605
- almost 10y agoYes, that's about it. Sometimes that really matters and sometimes it doesn't matter at all. It seems like a lot of the time for the sort of things people do in vvvv it's not so important. I certainly found it a limitation but it's hard to know how much that's an actual need and how much it's just me thinking in the languages I'm used to.
- catnaroek 10y ago> It seems like a lot of the time for the sort of things people do in vvvv it's not so important. It's not so important until it turns out it is. Say, because the project, while initially small, has grown to a size that demands using abstraction. Or because, while the original programmer unwittingly reimplemented the same patterns over and over, the next programmer is less willing to put up with so much duplication. Every attempt to lower the craft of programming to the level of those who aren't willing to learn it has resulted has resulted in: (0) An eventual admission that this approach doesn't work, e.g., how JavaScript was originally supposed to be easy for non-programmers to learn, but eventually grew programming patterns and practices that require programming knowledge to understand and put into practice, while keeping the gotchas and rough edges that were supposed not to matter. (1) Half-assed attempts to retrofit means of abstraction into languages with too much bad legacy code, e.g., generics in Java or modules in JavaScript. (2) Yet another attempt to lower the craft of programming, this time by someone else. Loop.
- tebjan 10y agothis is why VL was developed, an object oriented visual programming language that has much more ways of expression. especially the idea of data types, loops, branching and iterator patterns. it can already be tested as an integrated language in vvvv (like C# already is) if you download the alpha builds: https://vvvv.org/vl https://vvvv.org/vl
- eggy 10y agoConstraints sometimes are a creativity booster in art, so maybe not so much a trap. Whereas unlimited tools or canvases may paralyze it. Just look at the demoscene to see what people create in a self-imposed limited environment. A person chooses to confine themselves to watercolors, and masters the medium, or does something spectacular with it, since they focused on that medium. Just looking at the vvvv examples, I'd say there's plenty enough there to get started and then some. Praxis runs on many platforms since it is Java-based, and has node editing, but you can edit code on the fly as well. You can do visuals, and it has the beginnings of a sound synthesis base already working and in progress. [1] I personally use Extempore, a livecoding environment that evolved from Impromptu. It has a low-level, Scheme-like language called xtlang, and can do sound and visuals too. [2] I also use Tidal, a Haskell-based system to livecode patterns of samples - very addictive, since it is easy to make something quick. [3] Fluxus is a scheme-based system, that is mainly for visuals, although there is a lesser-known audio component called fluxa for linux and Mac OS for it. [4] It was the first livecoding system I had really been exposed to around 2005, a few years after I picked up Processing. [5] Somebody mentioned Pd, PureData. You need the extended version to do graphics, since the vanilla Pd is node-based just for sound creation. There are many other systems, and it seems the livecoding scene is exploding. [1] http://www.praxislive.org/ http://www.praxislive.org/ [2] http://extempore.moso.com.au/ http://extempore.moso.com.au/ [3] http://tidalcycles.org/ http://tidalcycles.org/ [4] http://www.pawfal.org/fluxus/ http://www.pawfal.org/fluxus/ [5] https://processing.org/ https://processing.org/
- catnaroek 10y agoFrom the Extempore link: > xtlang also borrows many Lisp like semantics including first class closures [emphasis mine], tail recursion and macros. xtlang doesn't trap you in a first-order box. That's a good thing. From the Tidal link: > Tidal is embedded in the Haskell language. Haskell doesn't trap you in a first-order box. Programming in a DSL embedded in Haskell is just programming in Haskell. From the Fluxus link: > Extends the Racket language with graphical commands and can be used within it’s own livecoding environment or from within the DrRacket IDE. Same as above, s/Haskell/Racket/g. --- FWIW, I never criticized the use of DSLs for art (or any other purpose). Only the imposition of first-order jails.