Modern HyperCard for Today’s Schools: But Where’s the Community of Practice?

April 9, 2012 at 8:30 am 9 comments

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 use LiveCode, and love it.  I don’t have much time to program these days.  So when I need a tool for data analysis, or need to remove student names from thousands of Swiki pages, or want to build a prototype, I use LiveCode because I can code more quickly and easily in that than anything else I know these days.  The code is not well structured or beautiful, but after I write it and use it, nobody (including me) ever looks at it again.  There is a community of LiveCode developers, but I don’t really participate in it much.  When I have wanted to create code that I share with others, I have used Python or Squeak.  Currently, I’m interested in investing some time in learning JavaScript, because of its Lisp/Smalltalk-like internals and because of the platforms that it opens up for me.  I’m not particularly interested in joining the JavaScript community. Yesterday, I took some time off to just play, and I downloaded some new languages that I’m interested in for computer music: Impromptu and Field.  I do choose languages based on what I want to be, but not for the community. I choose languages for the language features, the task needs, the task constraints, and my facility with the language.

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.

via Education, Education | revUp 131.

Entry filed under: Uncategorized. Tags: , , , .

We used to know how to teach CS in Logo How Not to Require Computer Science for All Students – The Chronicle of Higher Education

9 Comments Add your own

  • […] of my recent posts on teaching with Logo and the culture of older programming languages, I’ve been poking around the Logo sites.  My most enjoyable find has been the Logo Books […]

  • 2. Aaron Lanterman  |  April 16, 2012 at 4:20 am

    Based on much of your post, you could probably rephrase “a language that doesn’t reflect who you want to be, is not worth knowing” as “a language that doesn’t reflect who you want to hang out with, is not worth knowing.”

    • 3. Mark Guzdial  |  April 16, 2012 at 9:00 am

      I thought about that, connecting to community rather than identity. But I was thinking about myself and others who post here. Sometimes, you choose a language based on the community you hope to form, the identity that may not exist yet. That is essentially the same thing (i.e., the people you hope will show up to hang out with).

      • 4. Mark Miller  |  April 24, 2012 at 5:52 pm

        Hi Mark.

        I know this discussion has gotten old, but it piqued my interest.

        My, how attitudes have changed…sort of. I was thinking as I read this that if you had proposed this 20 years ago you might’ve gotten a better reception for your idea.

        I remember thinking a couple years ago that in the business IT world programmers think of the language they use not only as something that brings good qualities to their project (whether they’re real or imagined), but also as a “communication protocol” for a community of development. People are averse to altering it, because that creates incompatibilities, and that’s considered “bad,” even “anti-social.” What I think this misses is that a language not only represents a way of communicating about programs, it’s also a way of communicating about programming. If you get beyond the edifice, the facade of the tokens in the language, you can see the architecture, and discuss whether that’s a good idea or not, in what situations. As a community (I’m speaking of the larger whole of programming), we totally miss that for the features and rules, and as you’ve discussed, the community.

        What you said brings to mind a common idea about languages in the broader world, that they represent a community, and secondly that they take a long time to master. If you want to communicate with people who come from Central America, it’s useful to learn Spanish, and any of its local dialects. That sort of thing. The thing is this misses the point, from the standpoint of CS. The principles of computing are the more valuable thing to learn. Languages are things you can get comfortable with in a couple months. You can start to do something interesting with them in a few weeks. They don’t take a long time to get to know, once you’ve mastered some ideas about computing. In other words, learning LiveCode would not be an obstacle for students to pick up whatever language they wanted to learn after the course. They might need to take more CS courses to have the level of adaptability required to adjust from LiveCode to the language they wanted to learn, but if the focus was on the principles and not the language features and rules, they’d eventually be able to do that.

        From the way I saw you pursuing this from your post, the point was not the language. The point was, “What computing can be.” The language and runtime is just a vehicle for presenting that, and you tried to pick a vehicle that presented that idea in the best light you could find.

        I’m not sure what the term “real language” means now to people who make up the computing field. When I was younger it meant a language with which you could hack, that didn’t limit the programmer in what they could do with the machine, and which typically carried a lot of risks in terms of breaking things. That has its place, but it’s a harsh, and I’d say wrong, place to start beginners. I didn’t get a sense from the use of that term–“real language”–that they wanted these programming students to join a community of their own choice. It seemed to me they wanted these students to join their community, but to do so, they must be tested. “Do they have ‘the right stuff’ to join us,” seems to be the question they pose.

        • 5. Mark Guzdial  |  April 25, 2012 at 9:12 am

          Agreed, Mark — times have changed, as has the definition of a “real language.” I have a post queued up about graduating seniors who have lost all their interest in programming, because, for them, programming only equals C/Java/C++.

  • 6. Tim Cooper (@tcoops)  |  May 1, 2012 at 8:23 am

    I think that two languages that give students a boost into the community of programming are Processing and Lua. Processing has a great community and is a good introduction to programming on lots of levels with powerful libraries yet a simplied javaish syntax. Lua, used both in the Codea app of the iPad and the Corona Sdk for making mobile apps lets kids program in a place where they may use their own programs in their everyday life – on mobile devices. They might even share some of them with their friends thus getting a good feedback loop for how to improve their programs. Before I programmed in Pascal, C and Java, I programmed in BASIC. It was on every machine, easy to program and I could share games with my friends. Teaching kids to make useful code in their daily lives is more important than teaching them a difficult programming language that is the hot language of today ( but probably won’t be tomorrow) IMHO.

  • 7. VARVAR  |  May 3, 2012 at 11:53 pm

    By sheer accident, I stumbled upon this site and your blog–I agree with the author 100% that LIVECODE is the ANSWER –THE HOLY GRAIL to get EVERYONE (not just the geeks) into programming, just like Hypercard was the beautiful environment that Apple had created in the 80s and then killed. LiveCode is a full-fledged IDE with mind-boggling tools if you explore. I just created a client-server sockets app pair for my Networks class and it literally took me less than an hour, yet it (app, binary produced with single click) runs on every machine that I installed it on. In fact, once I installed the server on a private port, I realized that I had gotten away from the need to install a server framework (Apache, etc., all that mumbojumbo) and could use the same language and tools both to create the server (listener) and the client–unparalled ease!

    P.S.: I don’t teach Excel spreadsheets, but I have effectively used the IDE that comes free with Excel (Visual Basic for Applications, F11) to create full-fledged apps that combine the power of Visual Basic with the (natural) two-D array paradigm that automatically is associated with a spreadsheet. It turns out that the secret is you need to be able to access and manipulate cells without using Microsoft’s arcane R2C2 notation, instead use regular numeric indices.
    Thus, cells(2,3).value = “foo” works like a charm and opens the gates to power programming in excel VBA.

  • […] than learnability, and we need to build new ones that have a different emphasis.  He uses HyperTalk as an example of a more readable, better designed programming language for learning.  His video examples are beautiful and brilliant.  I love his list of […]

  • […] There is no community of practice. There isn’t a visible community of teachers using LiveCode. There isn’t an obvious industry call for more LiveCode programmers. […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9,052 other followers


Recent Posts

Blog Stats

  • 2,030,745 hits
April 2012

CS Teaching Tips

%d bloggers like this: