Reviewed by: Programming for linguists: Java™ technology for language researchers by Michael Hammond Christopher Manning Programming for linguists: Java™ technology for language researchers. By Michael Hammond. Oxford: Blackwell, 2002. Pp. 288. ISBN 0631230424. $45. The premise of Programming for linguists is compelling, if one that the field of linguistics is only slowly coming to embrace: To be able to efficiently perform empirical linguistic work, be it working with large corpora, your own collected language data, or psycholinguistic experiments, it is extremely useful to be able to write your own programs. Otherwise one’s ability to do research projects is artificially limited by available computer tools, or the time available to do by hand tasks that could be done much more efficiently on a computer. Established faculty can solve this problem by hiring research assistants, but for the graduate student, this is a basic form of literacy. At many linguistics graduate schools, one still has to pass foreign language reading exams. But for a large percentage of linguists today, they do not have much need to read research articles in languages other than English. I would suggest that for most current graduate students it would be a more powerful and more frequently used literacy to be literate in statistics or computer programming, and this book attempts to address one of those needs. If one accepts the premise, then the remaining questions are which programming language to learn, and which book to learn it from. There are many languages; for language researchers, currently three of the most plausible choices are Perl, Python, and Java. Perl is the simplest to get started with and the easiest for knocking out quick programs for data transformation. Java is a clean, modern, object-oriented programming language, suitable for developing large programs, and with nice add-ons in its support for graphical user interfaces and running programs over the web. Python is somewhere in between, and it is then a matter of taste whether you feel you have the best of both worlds or the worst. Java is a good choice for understanding modern programming concepts, but if this characterization does not make Java sound right for you, then Hammond may still have you covered: he has also written Programming for linguists: Perl for language researchers (Oxford: Blackwell, 2003).1 The first choice in selecting a book is whether to choose one of the popular general introductions to Java or a book dedicated to the needs of a particular audience, in this case, language researchers (a category that H intentionally regards as broader than just linguists, encompassing psycholinguists and literary theorists as well). The latter kind of book is a very reasonable type to seek: one focused on the kinds of language-based applications and manipulation of text that a language researcher is likely to use. A general programming book might typically give an example like a graphing calculator rather than a program for syllabification. But, unfortunately, the latter is also a difficult kind of book to produce: first, programming languages tend to change and evolve, and it is harder for people in application niches to quickly update books, as the mainstream [End Page 740] publishers do. Second, it is hard for someone whose day job is as a linguist to put as much time into a Java textbook as a full-time Java textbook writer (or, often, team) can. Finally, for text applications, the need for such books has diminished somewhat: While programming language textbooks were traditionally very numerically focused, the dominance of structured text representations like HTML and XML on the web has meant that most programming textbooks now have coverage of manipulating textual data. Against these general criteria, how well does H’s book in particular stack up? Some things, H does well. Although Java is a small, clean language, the fact that it is necessary to introduce the various pieces all at once, rather than gradually, makes it a difficult language to use in introductory courses, as many in the computer science education field have observed. H navigates these issues well, and here one can clearly see his experience in teaching programming to novices. But in other areas H makes some strange choices...
Read full abstract