mmm.. a range of tasks eh? well, considering all languages are turing equivalent (at least the languages we are talking about), they in theory can accomplish about the samething as any other language.. so flexible all comes down to the fact which makes your life easier.. and i pose again the same question.. can you tell me a feature that java has which makes java a better "enterprise grade" language than say python is?
now, let's see what's java's supposed adventages are:
it's Object Oriented, actually, it's not the best object oriented language out there, ruby, smalltalk, and CLOS (Common lisp object system - based on smalltalk) are all arguably more pure object oriented language than java
many features in java makes the code more resuable: ok, so it's relatiavly more resuable than assembly.. possibly even C (but it isn't nearly as effecient as c, which counts for alot in some arena).. but when you compare any language that has an adquate object oriention system, you can't say java is anymore reusable than the next object oriented language.. and let's consider what exactly is the most resuable at least in the programming language circle.. well, what do you use the most? programming language itself of course.. you can mold programming language to whatever you want. and that's the ultimate reusability.. whatever language makes your life as a programmer to change whatever you want in the language will be ultimately most reuseable.. as you can mold a general language to a domain specific language that you can use in the application.. one of the best example is Emacs's elisp.. and common lisp follow that tridition, it allows you as programmer to get on as much core as possible without prevent it to work, such as it prevents you to change garbage collector without alot of trouble..
i don't know what else java is good at (those are the stuff my comp sci teacher always telling us..)..
Iron_Cross said:
In order to obtain great power, and great flexibility/robustness you have to have some redundancy. It is absolutly impossible to combine power, robustness, flexiblity, and the option of security without redundancy.
erm.. the whole point of high-level languages is to abstract away as much redundent detail as possible, if you and i agree that it's redundant, why not let computer do the work? as programmer time gets more and more expensive, why should we do any redundant work that we can abstract away?
Iron_Cross said:
You might be able to make the program, but would it be extensible, easy to maintain, secure, ROBUST, and efficient?
extensible: yes, Object Orientation is not the only way to obtain extensible software, may be you *should* investgate bottom up programming? check out the following article:
http://www.paulgraham.com/progbot.html
easy to maintain: i'm not really sure what you mean by that.. in my mind, easy to maintain means keeping program short, brevity is always the key to keeping everything clear (i learnt that while writing essays
), when you can keep more of your program in your head at one time, you'd have an easier time of finding where to change..
secure: well, security is such an elusive term, any properly constructed program will be secure, no matter what language you use.. though, as program grow, the security holes will grow, so keeping it short will help
robust: again, i'm not really sure what you mean by robust, i have a hard time coming up with an explanation that's not explained before.. the first thing come to mind is efficient, but guess you already had that covered..
efficient: well, java is anything but efficient.. if you call 200 times the speed of c efficient, i don't know what's inefficient
there isn't even an option natively to compile java into machine code, if they allow that, then java "might" be more efficient
again, i'm not trying to argue that we should all ditch java and use some other language.. surely there is something java good at that everyone likes (not that i can think of any), but, if you want to use java and loves it, i'm only suggesting that you investigate other options if you really love programming.. if OO style is the be all end all style, then what the hell is Aspect Oriented programming doing here?