The overarching aim is to write a guide about algorithmic art, focussing on the key ideas like repetition, randomness, recursion, chaos and so on, .. in a way that is gentle enough for artists who have never coded before, and might be a little shy of technology.
So how do you introduce the idea without scaring readers away? We do need to code pretty soon into the book.
There seem to be a few options to think deeply about:
- Include a beginner's tutorial on programming an easy language like Python or p5js.
- Use lots of analogies like food recipes and DIY instruction booklets as a precursor to actual code.
- Just do it - without lots of introduction or preparatory talk, just start using it, with very very simple examples first.
I've struggled with which approach to use, and currently the draft texts has a mish-mash of all three.
To answer this, let's start again from first principles:
- Programming languages like Python or p5js are supposed to be easy to learn and use. So they shouldn't huge theoretical preparation.
- We're supposedly starting small and growing from there. That means we should be able to introduce simple small bits of code first, demonstrate it working, and demonstrate how easy it was, and grow confidence from there. There's no need to know all or lots of code before you have a go. In fact, these days, nobody knows all of a language, you look it up.
- Practical learning is always better than theoretical learning. Well, that might not apply in all cases, but is a major foundation of successful learning courses.
That seems to have answered the question.
- We'll start asap, with small bits of code and grow from there, learning by doing, not learning huge amounts in a theoretical way first.
- I don't think p5js is so easy that it needs to explanation, but starting with small easy snippets, we can build a foundation for learning more on.
- An introduction should only go as far as comparing natural human languages, like English, and their ambiguity and inconsistency with precise, unambiguous, consistent programming languages.