6. After Java, What?

Java won't be a universal language anytime in the near future; students need exposure to other languages as well. That raises a few questions:

C++ is well-established in commercial software development, so it obviously needs to be taught. C remains the language of choice for low-level, close-to-the-metal programming, so it should be in the curriculum as well. Smalltalk is increasingly popular in the business world, so it's also a likely follow-up to Java.

C++ is the language most likely to be taught after Java. Learning C++ exposes students to issues that Java hides, including pointers and memory management. Introducing C++ during (or just prior to) a data structures course might be appropriate. C++ and Java are similar enough that students can pick up C++ in a fraction of the time it would take without prior knowledge of Java. Students will view C++ as a more baroque version of Java, spending most of their time learning pointers and memory issues, as well as mastering multiple inheritance, templates, and other advanced C++ features.

A logical place for C would be in a class that also covers UNIX programming, since UNIX system calls are done using C and since many UNIX tools use a C-like syntax.

The transition to Smalltalk should be easy regardless of where it occurs in the curriculum. The main issues will be syntax, a different class library, and the need to learn a different kind of program development environment.

Java has enough in common with C, C++, and Smalltalk that the transition to any of these languages should be relatively painless. In many cases, it won't be necessary to spend an entire course on the transition; instead, it can be managed at the beginning of another course. (A UNIX course, for example, could spend the first couple of weeks on C.)

Next section


Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.

© 1997 ACM