This kind of dynamic has been going on since antiquity. Scripting will always have a niche, and 'enterprise-scale' development will too. Rarely it is based strictly on nuts-and-bolts practicality. Let's not forget: human beings are always subject to political pressure, the desire to feel 'knowledgable' and 'prestigious', and the desire to make things difficult for potential competitors through barriers to entry (turf preservation).
You see it in every realm of human activity, which includes programming and language design.
For people with a 'nuts-and-bolts' inclination, this "political" aspect can be a bit frustrating and bewildering. Nevertheless some PHBs realize that if they don't use Oraclefoo or Javawhiz for high-profile projects, there is a certain level of 'prestige loss' (and perhaps other issues) that cannot be quantified in mere nuts and bolts.
In some industry segments, this is not a major factor; but for universities, large corporations, utilities, financial institutions and other realms where prestige and reputation is the name of the game, you can just bet you are more likely to be Oracalized than MySQLated.
'm not suggesting that there aren't real applications that need the protections that layered code and team-oriented development using design patterns and Application Servers et al provide
Not that you can't do those applications in Ruby or Perl or Lisp or whatever too...
I'm more and more of the opinion that most language choice is made for cultural/social reasons rather than technical reasons.
One thing that puzzles me though, is that you say that J2EE is a lot slower, yet more scalable than the perl/apache/mysql solution. I don't understand that at all. Surely the slowness implies that you need more boxes to reach the same level of service?
I find making mod_perl apps scalable a breeze: the standard Apache reverse-proxy setup combined with a replicated/clustered mysql setup means that:
For me, that says a LAMP setup can be both cheaper to start with, quicker to develop, and easier to scale.
It's entirely possible to set up this 3-tier model on a single machine, and I generally do so for my clients if they anticipate growth. Moving it to a multi-machine setup is a piece of cake, and doesn't require specialised perl skills. In my opinion, this means a LAMP setup is both extremely effective for small or starting businesses, but equally (cost)effective for large businesses.
Unless I miss something blindingly obvious, the only thing in favor of J2EE would be cheaper developers; but you'd need more of them (which means you need more managers), and they have to work harder, with more complex tools, to reach the same level of service.
Let me just say that I agree with your remarks, even though I believe that many open source projects prove that it's not necessarily Java that makes managing international development teams successful.
I do concede the point that Perl (or rather, CPAN) does not offer as mature a framework for enterprise apps as Java. I suspect that's an indicator of the general interest of the respective developer communities. I do still wonder whether that means there's really a controversy going on between Java and Perl. Maybe I'm just too far removed from the intersection point between your 95% and the remaining 5%, but apparently nobody on either side debates that 5% area, while the 95% part is (from the bottom up?) overwhelmingly filled by Perl. I generally get the impression that most of those Java vs Perl debates are not much more than turbulence in the 90% region, so to speak. Do you think technology decisions in that area are made mainly on the differences between Perl and Java? I wonder.
I hope the above hasn't turned out to be a ramble after all...
Add to that key extensions like Hibernate, Jakarta, and JBoss, and you have an entire system that can be an order of magnitude more complex than Embperl/Apache/MySQL. Is it better? Well, it sure ain't faster, but, yes, it will be more scalable.
Well - I'd have to disagree with that :-) I've had more problems with scaling Java systems than I have with Perl ones. Not that this was due to any deficit in Java per se, just that J2EE led them to modularise the systems in a way that could only scale by buying bigger hardware, rather than more hardware.
It's just as simple to write a scalable and reliable Perl application (or Ruby, or Python, or Lisp, or whatever) as it is to write a Java one. Most of the expertise in producing something reliable and scalable sits in the developers head rather than in the language.
While there's more that has to be learned to do a J2EE scalable app, you can't do it at all until you succeed in putting all the pieces together. It's a PITA, but it does lead to working large applications.
Yet I somehow encounter bad Java apps that don't scale. So the magic J2EE pixie dust doesn't seem to work any better than the magic Perl pixie dust :-)
You seem to be saying that you can give a non-gifted developer (whatever that means) J2EE and they'll have a better chance of producing a good scalable application. That's not been true in my experience.
It seems like you consider Java not to be a scripting language. I don't understand why. As far as i can tell java meets all the requirements of a scripting language.
And it seems to me that there is no case at all to say that scripting is going to go away, ever. The fact is that scripting languages solve a whole bunch of problems of traditional software development and because of this they will never go away.
What criteria do i use to say something is a scripting language? The following:
I don't understand why.
I understand why. Because it's verbose. Very verbose. If nothing else, this alone keeps it from being seen as a "scripting" language by nearly everybody. If you think, "This task is so simple it shouldn't take me more than 5 minutes to write a script to do it", you're not going to reach for Java. (Of course, there's always the hammer/nail syndrome; but those whose only hammer is Java probably don't believe in "scripting" anyway.)
Does not compile to native machine code but instead runs on a virtual machine of some sort.
I don't think so. There's little to stop Java or Perl compilers from targeting real machines; and a Java or Perl "real machine" could be constructed. In the real world :-), compilers for C targeting virtual machines have been around a long time. So this really can't be a discriminator.
Essentially, whether a language is a "scripting" language or not is really in the mind of the programmer. It's about ease of use; about how quickly one can go from problem to algorithm to solution. Whether the machine running that solution is real or virtual rarely if ever enters into that thought process.
perlfaq1: Is it a Perl program or a Perl script?
Most of the above is a regurgitation of a discussion that occurred in the chatterbox.
Scripting languages aren't intended for writing applications from scratch; they are intended primarily for plugging together components.In my mind, to be a script,
I also like this brief explanation of the difference.
perlmonks.org content © perlmonks.org and adrianh, demerphq, dimar, dwildesnl, jdporter, rhesa, Roy Johnson
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03