Archive for April 9, 2012
I’ve talked about RunRev/LiveCode here before. It’s 90% HyperCard, updated to be cross-platform and with enhanced abilities. I mostly agree with the comments below (but not with the critique of Scratch or Logo): It really does seem like an excellent tool for the needs in today’s schools. It’s real programming, you can build things quickly, you can build for desktop or Web or mobile devices, it’s cross platform, and it’s designed to be easily learned. The language is English-like and builds on what we know about how people naively think about programming.
I proposed using this next Fall in a course I’m teaching for graduate students to introduce them to programming. I got shot down. The faculty argued that they didn’t want a “boutique” language. They wanted a “real” language. I do see the point. Audrey Watters and I talked about this a few weeks ago. Students don’t just want knowledge — they want to join a community of practice. The students see or imagine people who do what they want to do, and the students want to learn what they know. Students want to grow to be at the center of some community of practice. Where’s the community of practice for HyperCard-like programming today? Do you see lots of experts who are doing the cool things that you want to do — with HyperCard? The power and expressivity of a language is not enough. Languages today have cultures and communities. To learn a language is to express interest in joining or defining a culture or community. Alan Perlis said, “A language that doesn’t affect the way you think about programming, is not worth knowing.” Today, a language that doesn’t reflect who you want to be, is not worth knowing.
Pascal is still available for modern computers. So is Logo. We know how to teach both of them to novices far better than we know how to teach Java or C++ to novices. These languages were not abandoned for pedagogical or cognitive grounds — they work for teaching computing. So why don’t we use them? It’s because of the perceptions, the expectations, and the culture/community that grew up around those. I’ll bet that some teacher who doesn’t know anything about Logo could discover it, not know about its past, and use it really well to teach K-12 kids about computer science.
Let’s go one step beyond the discussion that Audrey and I had, and I’ll use something that I always warn my students about: introspection.
I don’t know why I’m not particularly drawn to any language community these days. Maybe I am choosing languages based on community, but I’m not aware of it. Maybe I am at the center of my community of practice, which frees me to make choices and go in new directions. I want to be a computing education researcher who can express his ideas in code and can build his own tools. There aren’t many of us, and there isn’t a language central to that community. Maybe, in this community of practice, the tool is incidental and not integral to the community.
I do think (perhaps naively) that it’s important for us in computing to be willing to invent a community of practice, not just join an existing one. If you want to change the way people think about computing, you don’t just join an existing community. The existing communities were created within and support the existing values. We should also be about inventing communities that support different values.
I spoke to dozens of teachers who all told me a similar story. There is a sea change in the air. After thirty years of teaching powerpoint and excel spreadsheets, schools are finally returning to the idea that we really need to teach the next generation how to program – but where are the tools to do it? Suddenly ICT teachers up and down the country are being told, “from next year you must teach programming principles” but they have been given no training, tools or guidance on how to achieve this. With little time to learn and a very limited range of choices, these teachers were delighted to discover LiveCode. It seems to be exactly what they are looking for. Easy to learn for both teachers and students, real programming without the limitations of “snap together” tools like scratch or logo, no arcane or hard to understand syntax or symbols, and best of all, it lets the students deploy the end results on their iPad, iPhone or Android device.