code is like cinema?

March 14, 2004

“to date, the virtual machine abstraction has been relatively weak: the Java and MS.NET runtimes are essentially idealized versions of modern computer architecture that don’t leak memory or crash (at least, they’re not supposed to leak memory or crash.) This reminds of me of something I heard about the early days of cinema: there was a while, before Eisenstein and others invented a cinematic vernacular, where people made movies by just locking down a camera and filming a play.” — Adam Wolff

“I seem to recall that it was not Eisenstein that invented the pan (although he used it to great effect), it was Porter, one of Edison’s cameramen, who noticed that when a camera fell over while still running, the resulting film was still understandable and had an interesting effect. Prior to that, people had just _assumed_ that moving the camera would ruin the film (as it did for still pictures). Porter’s “Great Train Robbery” is cited as the earliest example of a film that includes pan shots. Porter’s invention happened in the early days of cinematography, but was not widely adopted for some time.

“In a similar way, McCarthy’s *Lisp* broke out of the straightjacket of numerical programming by realizing that programs were data. Lisp is as old as Fortran, but many of its concepts are still not widely adopted. Paul Graham has an interesting take on this in his “Revenge of the Nerds,” where he shows that one-by-one, the features of Lisp are slowly being grafted onto Fortran’s numerical descendants.” — P T Withington responds in a comment to the above post

I love the comparison of programming language evolution to innovations in early motion pictures. The first movies were as if plays performed in the theather had been captured on film. Much later was the medium truly discoved and applied to its potential. P T Withington argues that this is not a lack of inspiration in the case of programming languages since Lisp was first developed in 1958. It was originally, a lack of compute power; but perhaps with today’s multi-gigahertz processors, Adam’s analogy fits.

My feelings about programming languages are influenced by spending many of my formative years coding “close to the machine” to squeeze graphics performance from personal computers. I find it breath-taking to reflect on the countless layers of software that can cause today’s fast processors to run seemingly simple applications so slowly. However, conceptually simple applications can require a powerful programming language to make them simple to write. Any interesting web application has a lot going on under-the-hood from internet protocols to user interface to database operations.

In an environment where time-to-market is essential and user experience is key, I find that Laszlo and the Flash Player provide a fair balance of performance and power.