This is something I originally posted on my JazzBlog
, but I'm reposting it here because, as you will figure out pretty quickly, it belongs here as much as in my Jazz website...What can computer science, music and martial arts possibly have in common ?
These are like "strange attractors" in my life: no matter how much distance I may have put between them and me in the past, I always ended up coming back to them, and I know this will remain the case in the future.
I can remember pretty well the excitement I felt when I discovered the Lisp language, when I was first introduced to Jazz and improvisation, and when I had my first Aikido practice session. Different things, same emotion. And also the feeling that in some way, I was born to be a lisper, a jazzman and an aikidoka. I just didn't know until then.
Recently I was talking about my half-scientific / half-musical life with an old teacher of mine, and he asked me if I had suddenly turned completely schizophrenic. He was right ! To ask, I mean... So I started thinking about it, and I tried to figure out what these three domains have in common and why they all adhere so well to my own philosophy of life.
But perhaps I should begin with explaining what's my philosophy of life, then. I guess it's basically described in three words: Beauty, Fun, Unification.
Why is Lisp beautiful, fun and unifying ?
- Beauty lies in being able to evolve comfortably within a set of constraints, limits or rules. Note that this begins with accepting the existence of these constraints, limits or rules in the first place.
- Fun, however, lies in breaking those rules at will, knowing how to get rid of them, and then get back to them, a bit like a cat jumping in any kind of direction and yet always falling back on his feet.
There's a corollary to these two points: real freedom is not to have no limit, but to know your limits so well that you can either evolve at will within them, or break them at will.
- Unification means drawing bridges between apparently unrelated fields, starting to figure out what is the common essence of things. By the way, this is precisely what I am doing right now... :-)
* There's beauty in writing code in any language (yes, there's even beauty in writing shell code). The beauty lies in your ability to adapt your concepts to the constraints of the language you're using, in other words, to make the best out of it, given its inherent limitations in expressiveness.
* However, and this is where the fun lies, Lisp allows you to break the rules of traditional languages because you can adapt the language to your concepts as much as you need to adapt your concepts to the language. Lisp is known (or at least, it should be) as the "programmable programming language": thanks to the power of its macro system and the customizability of its reader for instance, you can create a completely new language (even with a completely new syntax, see the loop macro for instance) within Lisp and adapt it to your personal needs. This makes Lisp the language of choice for implementing a DSL (Domain Specific Language) for instance.
It is interesting to note that with some experience in Lisp, adapting the language to your needs becomes an integral part of the art of programming; a rule in itself. In this way, what you do is really pushing the limits farther away, making a rule of what was an exception before.
* Lisp is also the language of unification. While it is mainly known to be a functional language (pure or impure, by the way), it is also imperative, procedural, object-oriented and even context-oriented if you want it to be. It is also declarative: look at the abundant literature on how easy it is to implement Prolog in Lisp. So Lisp really is any kind of language you want it to be: where a particular programming paradigm exists by construction in another language, it is usually implemented as a mere library in Lisp. Most recent (and fashionable) programming languages today are just re-discovering things that existed in Lisp since its invention in the 60s.Why is Jazz beautiful, fun and unifying ?
* There's beauty in playing a song, in any kind of music. The beauty lies in your ability to adapt your personal musical ideas, your way of playing, in other words, your musical personality, to the constraints of the song. People often forget that a song is by definition (or, so to speak, by composition) limited in expressiveness, just as an average programming language is: it has a pitch, a tempo, a rhythmic style, a chord progression; all things actually specified by the score. In traditional music, you are expected to evolve within these limits.
* However, and this is where the fun lies, Jazz (specifically improvisation) allows you to break the rules of traditional music by playing "out", both harmonically and rhythmically. Improvisation is by essence the musical practice that allows you to modify a score in real time: you can change the ambiance, the chords, the rhythm, you can temporarily escape from the song and then get back to it (remember the cat ?), even play "atonal" (roughly meaning using scales that do not correspond to the underlying chords). During this process, you are actually adapting the song to your musical concepts instead of adapting your musical concepts to the song. This is exactly like adapting Lisp to your programming needs instead of adapting your needs to the language. And when the other musicians follow you on this "song tweaking game", that's were the fun really begins !
It is interesting to note that with some experience in jazz, playing "out" becomes an integral part of the art of improvisation; a rule in itself. When Miles Davis started to mix major and minor harmony (for instance using a minor 3rd on a major chord), numerous conservator alligators wanted to burn the heretic alive. Now, all of this is well known, and you can learn actual techniques for chords substitution and atonal improvisation in Jazz schools. Again, in this way, what you do is really pushing the limits farther away, making a rule of what was an exception before.
* Jazz is also the music of unification. A very narrow view of it is as a musical style: the ternary "chabada" drums pattern, the walking bass and so on. But Jazz is really not that. It is a philosophy, a way to envision all styles of music. Michel Petrucciani once said "Jazz is a music of thieves", and he was right ! A Jazz musician is fundamentally curious. He's interested in everything he can ear, and tries to appropriate all the ideas he's exposed to by adapting them to his own personality. This is a process that happens in composition as well as in improvisation, but improvisation is the key factor that unifies all musical styles in Jazz. So just like Lisp unifies all programming concepts into a philosophy of programming, Jazz unifies all music styles into a philosophy of music.Why is Aïkido beautiful, fun and unifying ?
* There's beauty in practicing any martial art (as long that it has not become just sports). The beauty lies in executing the techniques that define your martial art to the perfection. But one has to understand that as long as you are practicing only a set of techniques (which is a very narrow view of martial arts), you are evolving in a very limited environment, however beautiful (and Aikido is aesthetically beautiful).
* The fun begins when you start to understand the Budo which is behind martial arts, and especially behind Aikido. The Budo is a philosophy, just as Jazz or Lisp are philosophies. By emphasizing on values such as personal cultivation, self-control and self-awareness, the Budo renders techniques unimportant, or at least secondary, because being able to react in any situation is more important than the way you react to them. Techniques are just tools to reach a greater goal. Aikido masters are so far away beyond technique that you can't see them anymore in their movements. The rules are broken, the techniques are gone. What's left is a "purified" state; what's left is the Ki.
It is interesting to note that in Aikido, breaking the rules, that is, avoiding being enslaved by technique is a constant preoccupation. For example, in Aikido, there is no distinction between beginners and experienced practitioners. Mixing levels in practice is one of the ways of ensuring that you will constantly face new and unexpected situations. As such, breaking the rules has also become a rule in itself. The ultimate rule-breaking exercise in Aikido is probably the Randori. When faced with 2 or 4 adversaries simultaneously, there is no room for rules or techniques, you just have to react. This is exactly like improvising in Jazz: in real time, there is no room for rules or harmony analysis, you just have to play.
* Aikido is also the martial art of unification. At least in two ways. On the technical plan, we know that Morihei Ueshiba, the father of Aikido, was a master in several martial arts (both "soft", like ju-jutsu, and "hard", like ken-jutsu or jutte-jutsu) when he founded his own. As such, Aikido unifies martial arts in general by incorporating techniques from many different sources. This is also pointed out by the fact that Jigoro Kano, founder of Judo, sent his best students to learn Aikido. On a spiritual plan, O Sensei's interpretation of the Budo not only encompasses the traditional meaning of the term (notably including personal cultivation) but extends to such notions as love and protection of all things, respect for all lives (see his "revelation" in spring 1925), which are much more universal concerns.Conclusion
Lisp, Jazz and Aikido are more than kinds of programming, music, or martial arts. They are philosophies of programming, music and martial arts. More than that, they are actually different appearances of the same philosophy of life. There is much more to say about it. There are also links to establish with scientific research in general. But not in a blog... I'd like to write a proper essay about these things when I find the time... someday.