One of the links floating around a lot recently has been this article from the recent Microsoft Professional Developers conference - Microsoft's top developers prefer old-school coding methods. It seems particularly hard on visual programming tools which are left mostly undefined. So of course I wanted to watch the whole talk. You can find the video stream (about an hour long) at Microsoft Perspectives on the Future of Programming and I do recommend it as a very interesting panel. The panel spent quite a bit of time talking about parallel/concurrent programming, some time on safety of programming and memory management and garbage collection. Some of it at a very high level which you’d expect with people like Turing award winner Butler Lampson and super computer pioneer Burton Smith (watch his talk on The State of Parallel Programming as well.) on it.
But the comments about developing software using text versus using visual programming seems to have garnered the most discussion. For example:
"Graphical programming environments are usable when they are useless, but unusable when they would be useful," said Jeffrey Snover, another Microsoft distinguished engineer and creator of Microsoft's PowerShell scripting tool for Windows. "When there are five things on the screen, you can burp that out [in text]. But when there are 500 things, [graphical programming] is completely unusable. You zoom in and zoom out and you lose all context. I think it's just smokin' dope."
And what he says is largely correct. If you want to add a handful of objects to a form drag and drop is quick and easy but you could probably do it manually (i.e. write some code in text) to do it pretty easily. On the other hand if you want 64 objects (say for a board game) you’ll probably prefer to write some code to add them all. (BTW I have an article about creating arrays of objects you may be interested in) That being said I do like drag and drop for beginners. Why? Because specifying all the little details for an object using text is tedious and for most beginners unnecessary knowledge. It lets beginners do some things that they might not otherwise be ready for. The analogy in the talk is how anti-lock brakes mean that drivers don’t have to be quite as skilled on snow and ice then they used to. Is that bad? I’m not so sure it is.
The panel doesn’t directly address drag and drop languages like Scratch and Alice. That paradigm is one I’d really like to see taken to greater depth. With the right IDE to manage complexity and some reasonable extensions to the language to make them less domain specific what possibilities might open up? I hope we as a discipline are not to close minded and backwards looking not to try.
But you know, no matter what some people will stay old school. There are drivers out there who not only eschew anti-lock brakes but automatic transmissions. I’ve heard them say “it’s not real driving” if you use an automatic. Well it’s different and sometimes the old way is better. I like real wheel drive and a standard on a sharp windy road myself. On the other hand I really like my automatic transmission in stop and go city traffic. So the idea of one “real” way is a myth and will probably always be a myth.