application and web app technologies

Juha Laiho Juha.Laiho at iki.fi
Fri Jan 6 01:53:18 EST 2006


"ccc" <cartercc at gmail.com> said:
>I *am* a Perl fan, but after having looked at scripts someone else
>wrote (who is no longer with us) with a view toward updating them, I
>have concluded that a quick and dirty scripting language in someone
>else's idiom isn't a very good choice institutionally. Which is why I'm
>looking at OO Perl.

This tells a lot more about the original author of the scripts than the
language used. I'm seeing unmaintainable code written in pretty much any 
language. Java (and in some ways, especially JSP in the web side) is no
cure for that.

Having said that, it may be easier to write unmaintainable Perl than
unmaintainable Java. The key is to educate (and to a certain limit
restrict) the programmers on what kind of code is acceptable to write.
And this work I think is not that dissimilar between different
languages.

Also, OO is not a magic bullet in making code readable. At worst it
gives the programmer a couple of extra levels of indirection to use
just to complicate the otherwise streamlined program. OO is good
where the data used naturally forms nice object relationships, but
there are a good number of cases where this does not happen (or at
least the relationships do not help that much in solving the actual
problem).

If you really, as you mentioned somewhere, want an all-around-language,
then Perl might be your best bet. Java is nice for web applications,
however I wouldn't use it for sysadmin stuff (or, it could be used
for part, but part is that you need an one-off tool; something you
cook up fast and use once or twice -- or a quick modification for
the existing tools). Also, much of sysadmin (esp. on Unix side) is
processing various text formats, which is one of the great strengths
of Perl. It's not just regexes (which finally are available in Java
as well), but overall facilities of the language.

Then, regarding the performance/efficiency; yes; there are cases where
use of C is justified for performance reasons. This performance
comes at a cost of programmer productivity (and possible higher
rate of certain kinds of errors). Also, in higher-level languages
the libraries are getting pretty-well tuned at least for the general
case, so it may well be that much of the general routines you find
in the library of a given language are of better performance than
something you yourself cook in C.

Another area where C would be useful is for making the necessary
glue to access some backend system (for which only C interface
library is provided) in the higher-level language of your choice.
A good example of this are the various database connectivity modules
in Perl (part Perl, part C; linking to the database client library
code).

So, overall:
- you're a Perl shop - however have lost some of your assets
  (knowledgeable personnel)
- one problem may have been too great independence of the developers,
  and lacking maintainability guidelines for the created code
- making the hop to another language would be a major hurdle
  (possibly giving major gains, though)
- could the same potential gains be realised without doing the
  language hurdle? Potentially yes; but would require more-or-less
  redesign/rewrite of the whole current environment, so a major
  hurdle anyway
- does the current language limit what you can do - doesn't seem so
- what would be gained by another language? For some other languages
  it could be easier to find developers -- however, finding competent
  developers appears to be hard for any language (competent defined
  as "able to produce code that is maintainable in the long run")

... so, all in all, I wouldn't be that eager in shifting from the
current. Java/JSP (and higher-level frameworks built on top of these)
could be good for web side - but these require quite a lot of knowledge
to do properly (just plugging things from a full Java/J2EE toolbox to
solve your problem could well give you nothing else but horrible
performance problems -- whereas proper use of J2EE technologies could
give you a somewhat elegant solution).

Apologies for omitting completely Python, Ruby, and MS technologies;
I don't know enough of them to do any comparision.
-- 
Wolf  a.k.a.  Juha Laiho     Espoo, Finland
(GC 3.0) GIT d- s+: a C++ ULSH++++$ P++@ L+++ E- W+$@ N++ !K w !O !M V
         PS(+) PE Y+ PGP(+) t- 5 !X R !tv b+ !DI D G e+ h---- r+++ y++++
"...cancel my subscription to the resurrection!" (Jim Morrison)



More information about the Python-list mailing list