Basic is (mostly) dead. Long live Python as the next starter language?
For years, the lingua franca for desktop computers was the Beginner’s All-purpose Symbolic Instruction Code, a.k.a. Basic. Essentially every PC had it, and just about anyone could learn to program with it, even in a rudimentary way.
Those days are gone — Microsoft stopped including Basic with its operating system after Windows 95, a corporate spokesperson confirms. Consequently, today’s desktop computers have no built-in general-purpose programming language to entice the curious.
True, Windows 7 includes PowerShell, a scripting language, and Mac OS X comes equipped with AppleScript and command-line access to Unix (on which OS X is based). But there’s no one lingua franca across the entire community of personal computer users to serve as a default starter language (although you can still acquire a few forms of Basic, some of which are listed in the sidebar “Free Starter Languages,” at right).
Some mourn Basic’s passing, others are pleased that it is gone, and still others are nominating replacements.
Why Basic mattered
Chief among the mourners has been tech pundit and science fiction author David Brin, who decried Basic’s passing in a widely cited article, “Why Johnny Can’t Code,” which appeared on Salon.com in September 2006.
“I have never received as much hate mail as I got for that article, not even for my infamous attacks on Star Wars,” Brin recalled recently. “It was almost entirely from people who missed the point, with all the rage directed at Basic. Let me be clear that I am not defending Basic. It was a primitive line-coding program, but everyone had it. Textbooks had exercises written in Basic, and teachers could count on a large fraction of their students being able to perform those assignments.”
Today, the top one-tenth of one percent of students “will go to summer camp and learn programming, but the rest may never know that the dots comprising their screens are positioned by logic, math and human-written code,” Brin complains.
Brin claims he has had three separate opportunities to ask different Microsoft executives about the passing of Basic. “I described how my son’s math textbooks contained exercises in Basic, but we could not do the problems until we bought an old Commodore 64 online. The response of all three was nearly identical: ‘There are still Basic programs in textbooks? Well, don’t worry, they’ll go away.'”
When asked about the issue for this article, a Microsoft spokesperson cited the continued availability of Visual Basic 2010 Express. Offered as a free download, Visual Basic 2010 Express is the only version of Basic that the company now ships. At one point, Microsoft had been pushing the Kid’s Programming Language, but the status of that project is unclear.
Diversity is a better plan, some say
Among those who aren’t mourning Basic’s passing is Kathleen Fisher, a Tufts University professor, an Association for Computing Machinery fellow and former chairperson of the ACM Special Interest Group on Programming Languages. “Today we have the opposite of a lingua franca — tons of languages,” she says. “Different languages are good for different things. Each has its own domain of discourse, and it is best if the application is in the language’s domain.”
If Basic had a domain, it was as a starter language, and there are many candidates to replace it, Fisher says.
“The best ‘first language’ is a hot topic of debate,” she says. Some feel that object-oriented languages like Java are the dominant paradigm for today’s application-development work and so “we need to train with them,” she explains. But educators in particular have to consider how to teach these tools, and object-oriented languages “offer a complex package that needs to be explained all at once,” Fisher says. “That’s not very satisfying pedagogically.”
If any one language is coming to the foreground for teaching programming to a new generation of students at just about all educational levels, it’s Python. The “marquee players” in computer science — the MITs and Carnegie Mellons — are using Python, she says. Its pieces “can be taught in isolation, which is more suited to pedagogy,” she says. “After that, teaching object orientation can be done faster and better.”
Python filling the niche
Python also has fans in lower levels of academia. At the Canterbury School, a college prep school in Fort Wayne, Ind., for pre-K to grade 12, “We teach Python because it is easier for kids to actually write productive code right away,” says Vern Ceder, former director of technology for the school and currently a Python developer at Zoro Tools.
He tried teaching Java as a starter language in 2002 and gave up after a couple of years. Using Java, the students were unable to finish anything in the first instruction period, as they can with Python, Ceder says. In fact, having anything to show takes several days, and similar projects take two to three times longer with Java than with Python. “It’s off-putting for everyone, and not just the students,” he notes.
As for Basic itself, “Fifteen years ago, when I started, there were lots of kids who had done it, but it’s pretty much unheard of today,” Ceder says. Its descendent, Microsoft Visual Basic, is “limited to Windows, which leaves out the growing contingent of Mac and Linux users,” Ceder says.
As for other free starter languages, Ceder says he has tried Scratch and Alice. “We use Scratch for our fourth graders, and it’s good at that age level,” he says. “We have used Alice for sixth and seventh graders. But neither is a full programming language.” The school has tried teaching some high-school projects in Alice — including Conway’s Game of Life for studying a grid of cells — and “it was next to impossible” because it’s difficult to create two-dimensional arrays in that language, he explains.
Python’s usefulness is no surprise to Doug Hellmann, communications director for the Python Software Foundation and a Python-using software developer in Athens, Ga. It was originally derived from an educational programming language called ABC, “and so it’s well suited for introductory programmers. If you have any experience, the basics can be picked up in a full day,” he says.
“It has a fairly simple syntax,” Hellmann says. “A lot of languages use special punctuation or are very verbose, but Python is minimal without being arcane.” Among other advantages, he explains, is that users don’t have to declare a variable as an integer or a string; people can just start using it. “That makes code a lot smaller and lets you keep it in your head and understand what is going on,” he says, adding that “performance is not a bottleneck, especially with modern hardware.
“We want Python to be accessible and widely used, but there is no goal to be as popular as Basic was,” Hellmann adds. “There is a lot of room for different languages, but I think that Python fits well into the ‘first language’ slot.”
Starter languages make a difference
Filling that slot appears to be a high-stakes decision. “We do not have enough students taking computer science courses at any level to meet the needs of industry — we have turned a generation of kids completely off to computer science,” laments Chris Stephenson, executive director of the Computer Science Teachers Association, in Eugene, Ore.
“The way we taught it, and the tools we used, was disengaging to huge numbers of students,” Stephenson adds. “It was taught through drill-and-kill; the tools were not intuitive nor was the environment.” A big part of the problem was that the tools used for teaching were the software tools used in industry, although the industry tools were “never intended” for teaching programming.
In recent years, though, the number of students enrolled in computer-science programs has risen dramatically.
Nowadays, “we are thinking about how students learn and how they are engaged, and how to scaffold their learning to make them professionals. In the past three or four years, there has been a real explosion of entry-level computer science tools,” Stephenson explains.
Of course, that explosion also works against any restoration of a lingua franca. Meanwhile, the trend in production programming has also been against a lingua franca. Fisher notes that two decades ago it looked like all production programming would take place in C++. But by about 1996 the scale of programs had reached a point where it was no longer cost-effective for programmers to handle all the housekeeping details, something that was required with C++. Java came along about then, and many professional coders switched to it with relief because it handled memory management automatically, she explains.
But Java is object-oriented, and it may fall from favor as a result of the spread of multicore processors and the consequent need for parallelism. With parallel programming, the order of execution matters, and that is much easier to control with a functional language like Python than with a more object-oriented language, she explains. (Not everyone considers Python to be a functional language, however.)
Meanwhile, today’s Web applications cannot be efficiently written in one language, because functions are split between desktop software, server software and communications protocols, each optimized for what it does, Fisher says.
“You can expect to see a proliferation rather than a narrowing down of languages,” Fisher says. “It will be less important to learn one language well than to be able to learn new ones quickly.”
Lamont Wood is a freelance writer in San Antonio.
Next: Midnight programming, 1979 vs. 2011


