D&C GLug - Home Page

[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]

PERL, PDF and religious wars was Re: [LUG] Development (this mightbe long!)

 

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Neil Williams wrote:
| On Monday 21 March 2005 1:46 pm, Martin White wrote:
|
|>Hmm, i've not, no. To my mind it has always fallen into the category of
|>"not mainstream"
|
|
| Ooops! I think it might be best to retract that before you go joining
other
| projects! Never slag off Perl, Python, Emacs, Vi, C, C++ or Java as not
| "mainstream".

I think it is the manner people choose to slag languages and tools off
that causes religious wars. If the criticisms are valid, and the
strengths acknowledged people can accept it as fair comment. The problem
~ is it is too easy to fall into shorthand "X is bad" because you've
found something that fits your needs better, when other people have
different needs.

I get miffed when people dismiss "Java as slow", one might with more
justification dismiss "C as insecure", useful shorthand perhaps for some
sort of thinking(?), but the reality is of course much more complex.

People who understand C skip the worst of the bundled string libraries,
use pointers appropriately, and in some cases use tools to catch their
remaining errors (at compile and run time) and produce C no less
insecure than Java. But you can write an insecure program in C very easily.

Similarly Java will produce slow code if you do extensive manipulations
of strings because of how the strings class in implemented (indeed
something that is a basic type in most languages being an object will
make it slow enough if you use it), but if you use appropriate classes
and methods for text handling (byte arrays are what you'd use in C, and
they call them strings) you can implement fairly complex multi-threaded
apps using algorithmns and techniques that would make a C programmer
shake in fear at the thought of maintaining and debugging, which are as
fast or nearly as fast as their C equivalents and far less likely to
spit out garbage or segfault (witness things like the freenet project,
or the old SUN Java webserver), and far more likely to "just work" on
the next machine you port it to.

So if you have less clue than needed you produce slow Java, just as clue
deficient C programmers (myself included) produce insecure C.


The killer for me in Java was the "Elephant" story;


http://today.java.net/pub/a/today/2004/06/15/ejb3.html

Which I think sums up a lot of experience with a lot of modern
programming technology not just Java (count GNU autoconf and related
tools as an Elephant), learning to use the "big technologies" is just
too much like eating an elephant. You don't have to eat an Elephant to
use Java like you use C, but if you want to exploit the real power of
the technology it is a five course meal, all elephants.

Just like portable C requires an elephant to be consumed, where as
portable Java is easy in comparison.


PERL I find really hard to write, it lacks all user defined structures I'm use to using in programming languages (even C), and tries to replace them with about 3 structures, and a lot of hope and indirection, which tends to end up looking like a bunch of brackets, ">" and "$" signs.

On the other hand some of the little utilities I'm happiest with are
written in PERL, because it has CPAN, and the C in CPAN really does mean
comprehensive. And because PERL forces a simple modular structure on you
in simple scripts, making it also surprisingly maintainable. It also has
those little features like taint mode that make it surprisingly easy to
write fairly secure CGI scripts.

CPAN also manages to feel like a eating termites, rather than an
Elephant, there is a lot of them, but you don't usually have to eat more
than one or two at a time, and the documentation is always in the same
format, and the same place, ....

I dare say PERL has some elephants lurking, but I've escaped so far.

Interestingly if I were doing document manipulations like creating PDF
documents PERL would be one of the first tools I would look at,
precisely because I'd expect CPAN to "just do it", and sure enough...

http://cpan.uwinnipeg.ca/search?query=PDF&mode=dist

PDF creation, parsing, reusing, converters to and from various other
formats, and a load more that I don't even understand the description,
but no doubt a PDF programmer would.

Mainstream - don't you need PERL to install Solaris these days - I think
that is  close enough to mainstream - at least mainstream where the real
programmers live ;)
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCPxm0GFXfHI9FVgYRAgcLAJ0Qe1pc+fF4Gl190hRe8hcoAP2nlACgi798
UoK/yY4mKG2dx7dBQZNYCoQ=
=JzZI
-----END PGP SIGNATURE-----

--
The Mailing List for the Devon & Cornwall LUG
Mail majordomo@xxxxxxxxxxxxx with "unsubscribe list" in the
message body to unsubscribe. FAQ: www.dcglug.org.uk/linux_adm/list-faq.html