| Find out more | Log in | ||||||||||
![]() |
||||||||
|
- - - - - - - - - - - - Jan. 9, 2001 | Read the article I enjoyed Simson Garfinkel's recent Salon article on Java and I agree with him that Java, like most technology, has failed to live up to much of its early hype and promise, notably the "write once, run anywhere" mantra. Still, I think that Garfinkel gives Java and its designers too little credit for a very important accomplishment, namely, introducing, popularizing and gaining widespread acceptance for a programming language with features that make it extremely valuable in both industry and education.
As anyone who has written a program for a nontrivial task will attest, garbage collection is a feature that saves an incredible amount of development time, resulting in increased productivity and decreased frustration. Garfinkel mentions this fact in his article, but doesn't point out another, equally important feature of Java: its strong type-checking. In plain English, this means that Java prevents you from treating an apple like an orange (or a gas tank like a glove box), a dangerous trick that other programming languages permit or even encourage, as C does. Having programmed for two decades in several different languages and taught computer science to college students, I can assure you that these two features together give beginners a much stronger foundation for thinking about and designing program than they will get from a fast-running but wildly unconstrained language like C/C++. Yes, other languages have these features, but these languages never had the industry support necessary to gain them widespread usage outside of universities or research labs. Yes, these features can be glommed onto existing languages like C++, as C++ glommed object-orientation onto C, but in Java the features are designed into the language, which makes a huge and obvious difference. And yes, Java is slow for some (often poorly written) applications, but increased processor speed is a given nowadays, whereas good design most certainly is not. In short, though no "perfect" industrial programming language exists, Java has made tremendous progress toward that goal, dragging the software business into the modern era. Such a contribution is not easily dismissed. -- Simon Levy I've programmed in Java for three years. I've done five major projects and many small ones. I also program in assembly, C and C++. I've done work in PostScript. I learned Fortran, Forth, Pascal and a little Smalltalk and Lisp. I prefer to program in Java. When PostScript came out, there were lots of complaints similar to those about Java, but it was the best solution for printing devices and has become the basis for a number of imaging technologies. Using PostScript I learned that no language can truly be device-independent, but there are languages which do a much better job of isolating and significantly reducing the number of lines of machine-dependent code. PostScript and Java both do this very well. If you compare Java with what C is good at -- doing low-level, time-critical, machine-dependent code -- Java loses. If you compare Java with C at what Java does best -- application software with a lot of user interaction -- Java wins. I've written such applications in assembly, C, C++, Java and a proprietary game language at Sierra Online and Java is much easier, more reliable and, yes, often faster. Your attitude is not uncommon. I often meet or work with programmers who insist on programming in Java as though it were some other language. I recognize the syndrome because I saw it when C, C++ and PostScript became available. I've been in the software business for 20 years and have had to learn a lot of systems, a lot of languages and a lot of styles of programming. It is almost insulting for you to say that the solution is to train better programmers. You speak as though you have no conception of the breadth of knowledge programmers have always had to have. I much prefer having a reliable language and module library; 95 to 99 percent of the code I write runs on all machines. C was designed as a first abstraction layer for assembly language. C++ is an overly complex attempt to attach an object model to it. Both have too many implementations and mismatching libraries to ever provide a general programming solution no matter how well trained the programmers. -- Mark Martino
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
The Free Software Project | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Arts & Entertainment | Books | Comics | Mothers Who Think | News
People | Politics | Sex | Tech & Business and The Free Software Project
Letters | Columnists | Salon Plus | Salon Shop
Reproduction of material from any Salon pages without written permission is strictly prohibited
Copyright 2005 Salon.com