Re: Java Is a Language for the Masses
Posted: Jun 18, 2003 12:00 PM
What people have to get past is thinking about convenience verses what allows the are of software to progress. There are perhaps 100,000 people that are interested in the topics discussed in forums such as this. There are perhaps 10,000 of those that could actually make sense of the issues, and perhaps 1,000 that could actually execute correctly using macros 100% of the time, and understand where to draw the line.
Many people will use macros as a convenience because it makes it possible to not write a function/method to do something where you have a lot of variables involved and you get tired of changing method signatures. Or, when there are many side effects of an operation, people put that into a macro because of the singular return value confusion.
C, C++ and Java (and other procedural languages) let you return whatever you need to return. If you need to return more than one value from a method, you need to refactor your code most likely. The operations you are lumping together into a method are too complex to be either out of the main line code, or done with method local data.
A select few will draw the line at the right places. This is similar to the issue of speedlimits on highways. Many people can drive at higher speeds than posted on the highways, and not heighten the risk to others of injury or death. While others don't really get it, and think that you just drive faster because you can push on the pedal, and the vehicle will go faster. By the same token, there are people that think it is okay to drive slower than traffic if they want, and they heighten the risk of injury to others because their actions force other drives to take unexpected action to switch lanes, slow down or otherwise avoid the slower traffic.
There is a whole lot of reasons why we as a community need to provide adequate boundries for ourselves and for those around us that might take risks that can cause us injury or death.
Most of the easy things have been programmed repeatedly using all the languages you can imagine. We've done Regular Expressions over and over. Text processing languages abound. Functional Programming has been around for ages, but doesn't have a tremedous following because it takes a different mindset, and we can't apply those tools everywhere, while procedural languages are everywhere.
The next steps in computing will involve more people, with less experience writing code that we depend on more. Look at the people at M$. They have written more bad C code with more buffer overruns than we have wanted to deal with. Even the old crufty sendmail program is still riddled with security problems.
Computer software engineering is a science right up until you let people type in the code. Then, it becomes an Art! If you give people complete artistic freedom, without technical limits, you will get a wide range of software stability and compatibility.
The efforts that Sun, and others in the community make to hold back the creaping featurisms into Java are what will keep the language capable of truely being a cross platform language that finally allows all of us to create new, amazing software solutions to unsovled provlems.
Everytime a new procedural language gets invented, a few thousand (if not million) man years get wasted creating all the old tools and APIs again, before new problems can actually be solved. I really dislike this fact, and I find it amazing that we (the software community) still get excited about new procedural (with or without OO) languages come crawling out of a university project somewhere.
Nothing new has really been invented in language control or computational capabilities in decades. Instead, we have ways to do the same things differently. Java finally put into one place, two extremely key things. Garbage collection finally gets rid of memory reference related subtilties that used to 'sometimes' cause crashes when you were lucky, and compute wrong results otherwise. And what I think is even more important, is a code level security model that lets me control what software I an running while exploiting mobile code, and true distributed applications.
The RMI security model introduced in Jini 2.0 makes it possible for a truely amazing set of controls to be put in place, and thus, Java, peer to peer mobile code applications can now float across the internet with the receiving JVM being able to completely control what code arrives and executes.
The language constructs are not what enabled this kind of revolution. Instead, it was smart people employing the powers of the language and its runtime security controls to make something completely new possible! Now that is truely great computer science, and a step forward, without having to create a new language...