There's A Big Controversy going on these days...
It sometimes shows up as Java versus Perl|PHP|Ruby, but it's actually about bureaucracy and CYA versus getting the job done. It used to show up as "nobody ever got fired for buying IBM," but these days, it's "web systems need to be enterprise-ready."
I let my programmers talk my partner and I into building our second generation web hiring app in Java with EJB on JBoss, and, yes, they were able to get it working and it's nice, but now, as we add features and bifurcate for modular products, they're discovering how much of A Big heavy Rock all that support code is and how little they need it. They're trying to slip little things like "rewrite in Spring instead of EJB" into the timeline for the separated products. Hmmm...
Meanwhile, in my day job here at SNL, as I've told you, I've been cranking out dozens of Really Useful Things using Embperl and Ruby that are solving problems for people in their daily lives.
I'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 -- just look at all the hiring Home Depot is doing in Austin, TX on Dice.com -- but they are really few and far between. There are advantages to be had on many levels through developing upon these foundations, certainly, but a carefully crafted scripted web system is a better choice for 95% of all projects, in my !(so humble) opinion.
<ADVICE> So, the next time you're faced with a Management Decision to implement An Enterprise-Ready Application, just roll the Dice and do a search for 'Software Development'. There's certainly going to be at least one monster project going on somewhere at any given time, and all you have to do is count the number of people being hired. Show that to your PHB, and then be ready with your proposal for getting the job done effectively with far less cost.
</ADVICE>
Don Wilde
"There's more than one level to any answer."
UPDATE corrected title spelling; tnx jdporter!
Re: Whither scripting? Will scripting wither?
by dimar (Curate) on Feb 01, 2006 at 00:19 UTC
|
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.
=oQDlNWYsBHI5JXZ2VGIulGIlJXYgQkUPxEIlhGdgY2bgMXZ5VGIlhGV
| [reply] |
Re: Whither scripting? Will scripting wither?
by adrianh (Chancellor) on Feb 01, 2006 at 11:27 UTC
|
'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.
| [reply] |
|
| [reply] |
|
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.
| [reply] |
|
|
|
I agree with most of your points. I don't have enough experience with large management structures to say anything concrete about it, but it does sound plausible that most decisions in those environments aren't primarily based on technical considerations.
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:
- I can have any number of frontend webservers
- Those reverse-proxy to any number of mod_perl application servers
- Those communicate with any number of database servers
That means there is no single point of failure, and increasing scalability simply means adding another box to one of the tiers. Since mod_perl apparently outperforms J2EE, that means you need less machines for the middle tier.
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.
| [reply] |
|
|
|
Re: Whither scripting? Will scripting wither?
by demerphq (Chancellor) on Feb 01, 2006 at 16:30 UTC
|
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:
-
Does not compile to native machine code but instead runs on a virtual machine of some sort.
-
Does not require (one might even say does not allow) the user to manage memory.
---
$world=~s/war/peace/g
| [reply] |
|
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.
We're building the house of the future together.
| [reply] |
|
| [reply] [d/l] |
|
| [reply] |
|
|