Departure Of The Java Hyper-Enthusiasts?
TomH writes "Bruce Eckel has an article at Aritma, where he posits that 'The Java hyper-enthusiasts have left the building, leaving a significant contingent of Java programmers behind, blinking in the bright lights without the constant drumbeat of boosterism.' Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?"
Sorry.
"Made up/misattributed quote that makes me look smart. I am on
Ruby on Rails Screencast
I have to say, I haven't heard near the hype about Ruby and Python that I heard about Java. Although I must admit, the Java hype has died down quite a bit.
No one I've met doing serious development is building on python, it's just too error prone. Ruby (and on rails) are definitely gaining serious adherents though. Particularly with ruby likely to become a first class JVM language, Ruby's future looks pretty bright. Ruby may well replace java as the syntax of choice for developing big web apps.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
My worst write-only nightmare...
*runs screaming from building*
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
I don't understand this level of hostility for java. It works well for large web application development. EBay.com is implemented with java.
Please explain your loathing of java.
[Fuck Beta]
o0t!
I think that Real People are getting Real Work done while the flashy enthusiasts no longer have to toot the horn of Java.
Java is faster than Ruby and as bloated as it may be, there are a ton of J2EE applications you can purchase and modify to suit your own needs. Not to mention the plethora of development environments - hibernate, JMS, JNDI, torque etc etc. ROR is nice but let's get real - ruby isn't as fast and the few applications around ruby aren't nearly as mature as Java. Having said that I'm hoping Java will get opened up by Sun but I'm not holding my breath.
2 years and no mod points. Join reddit. Because openness is good.
(Slashdot reader) writes, "(Uknown pundit) wrote an article about (Technology that we're not currently fond of), based on conjecture and personal opinion. Does this mean that (Technology flavor of the month) is taking over?
He doesn't loathe Java. (Well maybe he does, but its impossible to determine from his post). He loathes hyper-enthusiasts.
Why not fork?
Stop posting fluff articles in the absence of real news before the holidays.
Java isn't going anywhere for a while. It is a fantastic language for large scale projects simply because its very easy to write maintainable code AND its buzzword compliant. That latter fact alone will keep it afloat years after it is truly dead.
Don't get me wrong, I love Python and I have really high hopes for it in the coming years, but to declare that "enthusiasts" have left Java, seems silly
So, will the Slashdot collective make fun of them again when their latest platform du jour fails to live up to its hype?
;-)
They ALWAYS do
Where's my lobbyist? Right here.
Different problems, different solutions, different languages. As always, pick the right tool for the job.
ROR having (more) hyper-enthousiasts only means it's newer.
Bottom line: you clearly confuse a university with a trade school.
Of course it has. IT actually is not too far removed from the fashion industry.
about 10 years ago:
Cast off those old tired relational databases! It's all object databases! It new! It's modern! It's chic!
C++? So passe'! The greatest thing is Java! So trendy, so fresh!
In the past few years:
Object databases are not with it! XML databases are the way to go! So modern! So *you*!
Now:
It's Ruby on Rails! What are you thinking using that dingy old Java! So... last season! Step into the 21st century!
etc.
The only thing I can think of which is more fad driven are diet books and management crazes (E.g. '7 habits of Effective Plan Z 2 Minute TQM EManagement iCommerce Gurus for Dummies (but were afraid to ask)').
Yet another reason to leave IT.
putting the 'B' in LGBTQ+
I hope nobody takes this the wrong way, but both Python and Ruby seem to be "VB for the 21st Century" -- as in tools to build quick-and-dirty apps without all that annoying type safety. In other words, they don't really directly compete with Java at all.
However, I don't think either have even registered at all in the commerical job market, so comparisons to Java are especially silly. As long as the Java programming market is so huge, there will be plenty of hype.
Whenever I hear the word 'Innovation', I reach for my pistol.
No one I've met doing serious development is building on python, it's just too error prone.
I don't suppose you've heard of this company before?
There are dozens of others, too. I'll cite this page as a source, though it is by no means comprehensive.
He who has no
That's all a matter of opinion. I'm using python right now in a project, 35,000 lines of python at the moment. I've done Java apps of similar (or larger) size. I find python to have some nice features, but to be pretty badly unsuited for large projects. The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended (and before anybody says "a good programmer will do what your comments say, so fire the people who just use the code they see" - shut up, it is not possible to hire a team of all super-diligent programmers), small typos in function/variable names aren't caught nearly as quickly, performance is far behind java (which in turn is behind C/C++ of course), etc.
Back to the topic: based on what I'd heard about how great python was, I'd say python *IS* overhyped. It has its place where it does very well; it's a nice little scripting language. Better than sh or perl in a lot of cases. But it is not even in the same league as java for medium-to-large projects. I'd heard a lot of people call python a better replacement for java, and it just isn't.
PHP sucks, it's a lousy language with crappy syntax and barely existant error checking.
Python is an ok language but its interpreter is slow, and that's coming from a Java guy.
So, in summary, suck it, I'll keep writing Servlets for Tomcat.
Start Running Better Polls
Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?
.NET. The religiosity people have towards Microsoft's semi-proprietary technology is definitely reminiscent of the 1990's Java hype. Especially among management (who think they've finally found the silver bullet).
.NET, because compared to MFC and traditional COM, it's a wonderful thing. But many people are going overboard on it.
No, the hype has moved on to C# and
I don't blame people for getting excited over
Don't blame me, I didn't vote for either of them!
Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
I am really just rediscovering Java now and the API's are very nice.
Java is stable, mature, and scalable, right out of the package. Python is nice for small projects and scripts but Java's strength is not the language. Its the api's and framework as well as the ton of third party software for it. For large sites Java is still the best way to go. Especially for ecommerce sites for businesses. Php is not there yet and is quite inconsistant with a immaturish feeling. Results vary drastically depending on who wrote what. There are tons of third party java objects and programs that co-exist and integrate with your java based servlets.
Java seems to have found its niche since multiplatform desktop applets never took off. Not to mention java is pleasant to debug and the tools are nice.
http://saveie6.com/
I would imagine that .NET is gaining much more of the Java base of applications than Ruby and Python combined. That is no disprespect to those two fine languages. Microsoft wrote .NET to compete with Java, and that is exactly what it is doing. I am working on a project right now where the last version of the app was written in Java, and the new in C#. When interviewing for jobs a couple of years ago, I think I interviewed with at least 5 companies that were doing the same. This is hardly scientific evidence, but I have a much easier time believing that companies would switch from Java to C# than to other languages, if they are going to switch.
Great ideas often receive violent opposition from mediocre minds. - Albert Einstein
That's why Java has been so successful. It made a compromise between performance and ease. It made a compromise between compiled and interpreted. It made a compromise between local applications and applets. It made a compromise between easy-of-use and formalism.
C++, which Bruce used to love, made *no* compromises, except to run C code. It wanted to include anything possible as long as it was fast, and it did except that it was so freakin complicated that even to this day sometimes compilers can't interpret the source correctly. In the same way, Ruby (and Smalltalk) also do not make compromises. They say 'everything is an object' even though that means computations are 20x slower even after decades of optimization. They say 'no type checking' (if it acts like a duck it is) even though it is pretty much a necessity for large or reliable systems.
Regardless of the level of hype, the real world of programming is about compromises. It's about Java, and C#. Sure there will be plenty of work at the edges for Ruby/Smalltalk and C++/C, but Java-like languages will be the center of programming for decades yet.
I used to be quite enthusiastic about Java--it had a lot of promise when it came out. But I think Java has stagnated and it's time to move on.
What are the problems?
First, Java never turned into an open standard like C or C++. Initially, it looked like there were going to be dozens of independent implementations besides Sun's and Microsoft's, but they have all disappeared. The only way to run a compliant Java platform these days is with Sun's implementation or one of its derivatives (IBM, Oracle, Apple).
Second, Java is focused on niche markets; most of Java's real-world use seems to be in enterprise apps, a market segment that by itself is not enough to sustain a general purpose programming language (Java may well be the new Cobol).
Third, related to the above points, Java has failed to evolve sufficiently. Sun has failed to address concerns and needs of the scientific and numerical communities. And many of Sun's changes have been hampered by backwards compatibility with the JVM (e.g., genericity in Java 1.5 is deeply flawed). And Java never acquired a reasonable native code interface, keeping it out of many applications.
Java has made a valuable contribution by demonstrating to many working programmers that features like garbage collection, reflection, and runtime safety are useful, but those features are essentially 1970's technology. Sun has failed to evolve Java beyond that, and that's why it's time for other languages and other stewards to take over. Fortunately, there are many other excellent languages being created. The Java language itself (but not the platform) will probably be with us for a long time, although probably running in many environments other than the JVM.
Java had the potential to be a lot more than just a transitional language from C/C++ to modern, safe, reflective languages, but Sun unfortunately has failed to realize that potential fully.
ML has a deep, solid formal foundation with type safety and provable semantics.
Prolog has a foundation in inductive logic.
Lisp is based in lambda calculus.
SQL is rooted in set theory.
Now, Java may be the first commercially popular marriage of mainstream (C++) syntax which at least has provable type safety. That's a good thing in itself.
The bottom line is that the majority of programmers are bad programmers. These move to the easiest fad where the majority of people go. And that's not a horrible thing, it's just a thing most senior engineers don't care much about. Because, and I say this after interviewing tons and tons of developers, real devs dig deep on their own, and do not 'rely' on the work of others. And before I get flamed here, it's not to say they don't use the work of others, it's just that I've seen many seniors spend hours trying to figure out how something works, rather than spend two minutes asking for help.
p.s. I think Bruce Eckel is awesome -- "Thinking in Java" is rockin'
"Ain't I a stinka..." - Bugs
There's no reason you can't write large maintainable apps in PHP. I maintain a 14,000 line PHP application, and I've never felt like the language had some fundamental flaw that made it hard to maintain.
Like you said, bad design and bad implementations are the reason for lack of maintainability, the language makes little difference.
I've had enough abrasive sigs. Kittens are cute and fuzzy.
Just another religious war.
C++ vs. Java
C vs. C++
C++ vs. Smalltalk
Lisp vs. everybody
Perl vs. PHP
Javascript vs. VBscript
VB vs. C++
Delphi vs. VB
Haven't we moved past this language is great but this language sucks yet?
You use the tool that will get the job done the best and easiest. If you tried hard enough, you could probably use the Lotus 123 macro language (showing my age) to write a web app, but would you want too? With someone of these languages, Python, Perl, PHP, Ruby, Java they are similar enough that they are all good enough for the same jobs. Languages are tools that programmers use to write applications. Personally, I like PHP and Ruby but I'm not knocking those that like Phython or Java.
Why knock that someone likes another language?
Why another religious war over Ruby vs. Java?
"What the hell is an aluminum falcon?"
Well done, sir, I salute you.
-- RLJ
I still use java every day but I will not miss the hyper-enthusiast. I've interviewed and hired people to work in java for years and I've learned a few things along the way. First, I've never hired someone who has obtained the official Sun Certified Java Developer status. I've learned that these guys have memorized a lot of the java library api's but their judgement is not grounded in the basics of computer science. For example, they have no idea how to choose between using a LinkedList or an ArrayList. The presence of LinkedList is redundant to the superior abilities of an ArrayList in their minds. I've been much better off hiring solid computer science generalists for java jobs whether they currently know java or not.
First line: But the majority of programmers, who have been relatively quiet all this time, always knew that Java is a combination of strengths and weaknesses. These folks are not left with any feelings of surprise, but instead they welcome the silence, because it's easier to think and work.
:)
That's exactly my attitude, too. Couldn't agree more.
You know what I liked most about the tech bubble bursting? All of the loudmouths, charlatans, and marketriods went elsewhere for a while. I got to do some real work for a change instead of building demos.
So the hypemeisters have a new favorite platform? Great! I can stop reading the slashdot posts from anit-hype nazis who only love to yell at marketriods. A pox on all of your houses, I say.
You thought fashion fads just happened? It's much more organized than that. The "in" colors for US fashion are chosen 22 months in advance, by the little-known Color Association of the United States. Color forecasts are issued to subscribers, and the textile mills, dye manufacturers, and clothiers start to gear up for the coming seasons. Because there are some long manufacturing lead times to produce fabrics in huge volume, the style decisions have to be organized.
"Pinks and fuchsia were everywhere in spring 2003; CAUS members knew this in spring of 2001."
Here's the activewear color plan for 2006-2007:
Color changes in fashion do not happen by accident.
(public) Universities lose money on undergraduate education, period. Tuition does not even cover half the cost of an undergraduate at UMD College Park. The rest of the cost is picked up by the state, so every student they enroll takes away money from other programs that you seem to think your tuition is paying for. Add it up.
Cost of CS Professor = CP = ~$100,000 (only salary, does not include facilities, offices, electricity, water, equipment, payroll taxes, support staff, campus police, repairs due to soccer hooligans, etc) = ~$50,000 per semester.
Number of Classes taught by Prof = NCP = ~3 per semester
Cost of in-state tuition = CIT = ~$4000 per semester
Classes taken by undergrad = CTU = ~4 per semester, minimum
Students per class = SPC = Between 10 and 200, say 30 average.
so we have (CIT * SPC)/CTU = FPC = $30,000 to fund any given class, call this FPC, or Funds per Class
FPC * NCP = $90,000 in Funds per professor per semester.
After the Profs salary that leaves $40,000 per professor to run the school.
Now Consider that any given Prof is likely to have several graduate students, either on fellowship or as TA's. At a good school this will be about a 1-1 ratio, so 1 grad student for every professor. Grad students make about 18,000 per year, plus a tuition waiver. Generally there are actually more grad students than professors, but lets pretend that isn't the case.
So $40,000 - $18,000 = $22,000.
That $22,000 per professor left over certainly won't cover even the cost to maintain the facilities at the university, not to mention computer labs, libraries, shuttle bus, payrol taxes, health care, internet connection, etc etc etc.
Then there are the support staff, secretaries, grounds crew, deans, etc etc.
Next add on millions per year in renovation and new building construction. To that you can add the cost of all the University staff, such as the people who review applications, the people who work in the bursars office, and so on and on and on.
Real Bottom Line: The University wants to teach you to be a Computer Scientist, not a code monkey. If you want to learn C++ so badly pick up a book and learn it on your own. Most professors will be very glad to answer your (legitimate) questions on any subject relating to their field. If you can't manage to learn it on your own, then give up and major in PolySci or Communications, because you aren't going to make it in teh real world.
Can you give me a language besides Java, that I can use for developing apps for Windows, Mac, Linux, Web, Palm, and tons of smartphones? If so then show me. Otherwise, quit preaching that java is dead and let me get back to doing real work.
TheTiminator
Score 5 interesting? Should be score 5 funny. Java is, from a language design standpoint, a joke. It was designed by cutting chunks off of it's predecessors and not supplying any viable substitutes.
.net1.1 and Java2 projects, claiming that such million-line monstrocities are proof the language is maintainable. What they don't tell you is that 900 000 of those million lines are spent on simple get/set wrappers, typecasting containers, re-implementing containers missing from the library, and recoding functions for different datatypes, giant class-based switch statements, and various other workarounds to avoid the languages' limitations.
People always brag about their million-line
Java is a nice VM and a solid, mindbogglingly featureful library - but a mediocre language.
I never understood why CS departments started switching to Java. It's a proprietary language, a behemoth library, uses confusing concepts even in early programs (such as the Hello World program requiring a class declaration), and has a compiler/VM to which you have no source code access! (True, nowadays you have gcj to look at, but that's by no means the reference implementation.)
CS departments, I think, should be using Python for instruction. Not only is Python an easier language to learn, but it's more intuitive and more closely resembles pseudocode you see written for theoretical computer science. For example, in a theory of computation book, you may find a definition of a Turing Machine as a 6-tuple. Well, Python has tuples, so you can just say
# turing machine M is a 6-tuple
M = (Q, T, s, b, F, f)
If you need to pass to a function (the encoding for M), it's easy to do so: just pass M. etc.
Python also supports other concepts common in pseudocode, like "for i in x" syntax, and associative arrays being a built-in type really helps with dynamic programming problems. Etc.
Python has an interactive shell where students can try out code to play with the language, a very helpful learning tool. It also has a high degree of transparency and allows introspection, so students can see how something like an object system actually works.
Also important, the main Python implementation (CPython) is open source, and the development of the language is done in a community-oriented fashion.
Finally, Python has two extremely high quality books written about it, which are also 100% free. One is called "How to Think Like a Computer Scientist: Learning with Python" and is found here, and the other is called "Dive Into Python" for experienced programmers, and is found here.
I'm not saying that Python is the ultimate language, but I think everyone has to agree that it's a better choice than Java for programming courses in universities. I know my data structures/Java course was 90% about "how Java works" and 10% about "how to solve programming problems." In a Python course, I think that ratio would be inverted.
Java is one of the first languages that was well planned and well designed with a theoretical basis in mind.
Was that before or after the designers decided "well, we better make the syntax pretty similar to C++, so there's a chance people might adopt it"?
Just use some naming conventions. Every sane project does. Personally, I use "_protected_member" and "__private_member". It does the trick. And really, if your python dev can't follow these conventions, they indeed deserve to be fired.
Python is simply the most graceful language ever (when you follow the Zen of Python). And that counts for something when you want to scale. That being said, the dynamic nature of Python is better tamed (because yes, using it without caution can be fatal.) with TDD.
And my nearly finished ~10K LOC python project could (and probably will), I think, scale quite nicely, thanks to TDD.
perception is reality
I say good riddance to them. Nothing contributes more to this industry-wide attention deficit disorder than these technology evangeslists that have somehow gained celebrity status, then abuse it to sell more books and fill seats in technology symposiums.
Java works for me. I get paid to do it, and I'm tired of all the noise.
Please. For years the Java wonks have been calling performance a strawman argument, usually followed with "get a faster machine".
Now they're using exactly the same performance argument to argue against what is now one of the premier up-and-coming programming environments? Now the table turns; if ROR or my fave the Python-based TurboGears is too slow -- well then, get a faster machine. That argument worked with Java; now it works with Java's replacements.
In the course of every project, it will become necessary to shoot the scientists and begin production.
Jacques Surveyor summarizes Doug Bagley's benchmark opus to shed light on this important comparison:
"What emerges from examining the Bagley Benchmarks is that programming languages are breaking out into 3 speed tiers for raw computing power:"
1. Compiled native code languages C, C++, GNAT Ada95, OCaml are the fastest. No surprise there.
2. Byte code engines such as Java, Mono C# and Python average 7-12 times slower than the first tier...
3. Interpreters such as Ruby, JavaScript, PHP and Rexx average 100-200 times slower....
> Java is, from a language design standpoint, a joke
For those of us awake at the beginning of Java, Java was anything but a joke. It was almost like manna sent from heaven.
The alternatives were some pretty poor bundled C compilers, GCC 2.x.x, and some pretty lame C++ implementations.
It really gets frustrating waiting five years for someone to actually come up with a C++ compiler that does templates correctly.
> Java is a nice VM....but a mediocre language
If you believe this go treat yourself to GCC 2.9.x. Try to do something with it. It truly sucked.
Caution: Contents under pressure
You could look at it the other way round; if there's a mistake in a Java class, you can't easily work around it. And I can think of two recent incidents where this has been the case for me.
The speed issue is a factor, but I personally can't see why anyone would prefer Java over Python for developing commercial projects. Java's limitations are pretty frustrating sometimes, and there are times when you need to copy-and-paste segments of Java that could be avoided in Python. Java's simplistic and long-winded syntax means you have to do things the long way more often than would be convinient.
Writing good software is hard, anyone who tells you different is selling something.
Most programmers program, trading their time and knowledge for money. The ones who hype have an agenda beyond that -- to sell themselves for financial or egotistical gain. The former are consultants (selling themselves, not the tools and practices they purport to sell for a liviing), the latter are that guy who spends all his time on the mailing list, telling you how great x is, and how stupid you are for uisng y.
Not that there is anything inherently wrong in this -- in fact, I'd argue that both groups serve a valuable function in our industry -- so long as people understand that the motivation for this has a lot less to do with the languages, techniques and tools directly than for the person who's doing the hyping.
We are agents of the free
"With the advent of the language total annihilation is on the horizon for Java and all its developers. This new language/platform/stack is so revolutionary that developers are passing out from Ruby/LAMP/Python induced hyperventilation. Its virtually certain no one will write more than three lines of Java the day after Tuesday ever again."
;)??
Its getting seriously funny how many articles there are like this. Slashdot posted this nearly identical article about LAMP a week ago.
Why is it always language XXXX compared to Java rather than C++, C#, ASP, or even LAMP? I guess it means that for now Java is the king of the hill?
So which is superior...LAMP or Ruby (on or off the Rails
I actually do enjoy these discussions because there are always more efficient ways to accomplish specific goals. Java can take a bit to get started with, but once there it is unparalled in being the Swiss Army knife of software development.
Without the competitive efforts of the Ruby community and M$ for instance Java probably would get stagnant so I applaud you Mr. Ruby Developer (Rails or otherwise).
Just give me a call when people start converting complex Java apps to Ruby because its easier to extend and enhance.
Having used Java exclusively since 1995, I've decided to try a webapp in python (turbogears).
The turbogears python webapp framework is a nice bit of tool integration for rapid development.
Python itself is a mixed blessing compared to Java.
On the one hand, it has very nice compact, in-built syntax handling of multiplicity (lists, dictionaries, tuples) as all powerful languages should have and java still lacks.
It has other simplicities and flexibilities that are nice.
However, the "pythonic" philosophy of "anything is allowed if you try hard enough
could be re-termed "moronic". It's just bad design to have multiple ways of
doing the same low-level thing in a language. Complexity multiplies, as we all
know.
Also, Python is not as platform agnostic as Java in issues such as byte-ordering
in data structures etc, nor is it as secure as java in this respect, because
java does not specify the representation in memory of its data objects, making them
more difficult to sniff.
Java also has other code security features that python to my knowledge lacks, such as class bytecode verification,
class loader security, etc.
Finally and importantly, while Java's (and its standard libraries') documentation is only moderately detailed, at least it is consistent and pretty complete.
The same cannot be said for python documentation, which is sloppy and incomplete, and
inconsistent in places.
So is python "progress" from Java? In some O-O and functional programming language respects
yes, but in platform quality, simplicity, platform-agnosticism, learnability, and security,
no.
We still need a new language that combines the best of these breeds.
Where are we going and why are we in a handbasket?
I just don't see how Python is going to make it big with such poor threading. This is quickly becoming the era of multi-core, multi-thread systems. I hate to say it but Java does have that covered. Sun's new T1000 and T2000 servers are targeted at this important and growing segment.
I suppose you could use Jython and get the benefits that way... (it is much slower and way behind C Python).
Before you flame me, let me just say that I spent a great deal of effort trying to build a threaded telephony server in Python and it was just not possible.
Granted, some of the frameworks, like Stackless and Rails, may not run on these tools, YET ... but there's really no reason to start totally from scratch and throw out a nice VM and a nice set of libraries...
Thus they're no different from Gartner pronouncing "Small Form Factor PC's will be hot next year!" or "This will be the year of Tablet Windows!".
Nothing Orwellian, no Central Planning, just the same sort of forecasting that happens in every trade & industry.
I've a number of friends who are subscribers to CAUS's & others reports, they say they're generally pretty on, and are rarely much of a surprise to folks paying attention in their fields. Indeed I was told 2 years ago by a buddy to watch, last year and especially this year look for holiday decorations to have lots of purple and black and raspberry and long skinny legs would be very in; he was right.
Just like in business practices and coding strategies there is a lot of group-think that keeps everyone sorta in sync with each other (beyond everyone knowing that hemlines HAVE to change up or down every few years). Occasionally there are huge shifts caused by outside influences, fluorescent colors in the 60's due to dyes becoming available, now shimmer surfaces because durable ones have become relatively cheap, but even those are fairly well anticipated.
If you're interested enough try writing a dozen or so folks you think are very 'in tune' with an area of interest, then next year see how accurate they were. If you can show a decent track record of getting good predictions then hey, I smell $$ subscriber report...
Oh, and those color predictions: Good to keep in mind when painting the living room, buying furniture or a new car.
I don't read ACs: If a post isn't worth so much as a nom de plume to its author then I wont bother either.
Bear in mind that most of the "features" not included from C++ were examples of very poor language design.
There are some omissions from Java which are unfortunate, like pre-conditions and post-conditions, however most of the omissions were not present in Java's predecessors.
The only features of C++ which are lacking in Java and which arguably should be included are: operator overloading, and some variant of the const keyword (although not exactly like C++ const, which is hideously overloaded).
No serious programmer ever brags about million-line programs, or claims that lines of code somehow correlates positively with maintainability. You're attributing a point of view to "people" which they don't possess. Perhaps some friend of yours made a comment like that, which you now attribute to "people"? Typecasting containers is not done in Java, since it has generic containers. Re-implementing missing containers is very rare since the Java API has a wide variety of containers already (some even argue the API is too big). Recoding functions for different datatypes is unnecessary since Java has always been polymorphic. And there's nothing wrong with switch statements; they're syntactic sugar for if/else (I assume you're not opposed to if/else).I'll grant that the repetitive get/set wrappers are unfortunate and unnecessary. I don't understand why the designers of Java don't just borrow ideas from Eiffel on this matter. I realize the Java designers are opposed to syntactic sugar in general, but in this case it would be justified, since a huge proportion of Java code wasted is on statements like "public Foo getFoo() { return this.foo; }".
A university cannot make a programming language choice that introduces unnecessary barriers to blind students. Python does so.
For programming courses in universities, maybe Ruby is a better choice than Java. Maybe Perl even is. But Python is not, because of this one simple feature that completely rules the language out, in my book, regardless of how good the language is otherwise.
For some it is the byte compiled oo language, these people chose it because it looked like C++ but with no explicit pointers and a GC.
For some it is the platform, in other words they liked the large library of classes that came with it like swing/awt, math, networking.
Others liked it because of the technologies built on top of it or with it: J2EE (EJBs etc.), Applets, Servelets
Yet others liked it just because it is the most portable and functional language+platform they had ever seen. Here when a company makes a product written in C/C++ that they have to port to another platform, having a "compile once, run anywhere" language can cut costs of developing/maintenance dramatically
As far as the Java fanatics and cheerleader of the past years are concerned they probably moved on because that is what they do - they get excited about a new technology for a while, make a lot of noise then move to another new technology. Java is already used extensively in the industry and is not going away soon.
As far as Ruby and Python. I would have to say that Python is probably the best successor of Java. Why not Ruby? Because, as you say Ruby is a raw young language it doesn't have nearly the libraries that Java and Python has. The only context I ever hear of Ruby is when it is mention in the "Ruby on Rails" title. I know it is a more pure 'cleaner' object oriented language than PYthon, Python is just more practical, and more intuitive as far as I am concerned. I was planning to write my project in Java, but after a week of playing with Python, I was up and running and I believe I finished in 2/3 or 1/2 the time it would have taken me to write it in Java. Look at a simple code comparison in java and one in Python
: In Java
Versus the Python versionRuby is pretty close but I dismissed it as not having enough libraries and add-ons. With python for example, I can even run it on a Java platform with JPython and still access the rich java libraries. I can optimize parts of my code in C and either use the syntax extensions of Pyrex, or weave to inline that code into regular python code. There are good GUI bindings (Qt, wxWindows, Gtk and of course the default Tk, for those seeking to punish themselves), there is threading, networking, good regex support. My favorite is the native dictionary (hash table) data type. Just use something like "dic={}" to initialize an emtpy dictionary then "dic[key]=value" to use it, and that is it - no need for new no need to import anything.As a high school computer science teacher, I'm hesitant to say what university CS departments should use.
But I can talk about what makes good teaching languages. The purpose of a teaching language is to serve BOTH those who will be programmers, and those for whom CS1 is just an interesting (hopefully not harrowing) life experience. Python, with its VERY low floor and VERY high ceiling serves both purposes exceptionally well.
I use Python with high school freshman and sophomores as a "pre-AP" language, and find it a real joy to use. In fact it has really turned part of my professional life around, and made me renew my commitment to teaching younger kids programming-as-such. I'm having a blast.
I have used Pascal, AP-ified C++, Scheme, and Java. I've taught structured programming, objects, and functional style.
I find that teaching state machine programming with Python is providing hooks to start many wonderful conversations about variables, values, expressions, control, objects, garbage collection etc. etc... And, mirabile dictu: the way the math works relates to Algebra in a comprehensible way!
Most significantly, students are showing inititative and making up little hacks on their own in a way that they haven't since Turbo Pascal. As a constructionist kinda guy, that's the big win for me.
Just use some naming conventions. Every sane project does. Personally, I use "_protected_member" and "__private_member".
While I don't know Python, and maybe I'd get used to this naming convention after a time, it sounds like it would be very annoying.
And then there's Smalltalk, a language that was also well planned, well designed, with both theoretical and practical aspects in mind.
Smalltalk belongs in that list you site- ML, Prolog, Lisp. Especially notable because Smalltalk is where Java gets most of its features.
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
"C included libc, C++ has libc+STL
... guaranteed to be on every platform Java was. That's one hell of a feature!"
If you call those comprehensive libraries, then I have a bridge to sell you. The 1.1 library (which was where Java first started taking off) had such features as
That's because Java is not a language with a standard library: it's a development platform, almost an OS, with an associate standard language with which you reference the imense API. It's almost the same as a sh script accessing the POSIX utilities: as long you're in a POSIX environment, you'll be able to use them, using the same standard sh scripting language.
Only thing annoying is that java is a lousy scripting language to handle what is otherwise a nice programming environment. Thankfully, Jython, ruby and others are coming along just nicely in said environment...
I don't feel like it...
Nope. I won't agree to that, for one simple reason -- whitespace has meaning in Python.
A university cannot make a programming language choice that introduces unnecessary barriers to blind students. Python does so. Wow, thanks for that bit of news. I guess I will have to tell the blind guy at work he can't use Python.
Nothing can beat this beauty:
10 PRINT "TEXT"
then you would do
GWBASIC FILE.BAS
Beats "python file.py" every time...
Fake arguments involving hello world apps should not be taken as a way of comparing languages.