Date: Wed, 3 Apr 1996 23:06:36 -0800 (PST) From: Jake Kauth <jake@xanadu.cyborganic.net> Subject: my perl-penguin rant To: libwww-perl@ics.uci.edu, ptk@guest.WPI.EDU Reply-to: jake@cyborganic.nethello libwww-ers and ptk-ers! here is an exchange i had with a colleague regarding penguin/perl/java...
i thought you might be interested.
--- begin ---
colleague said on April 3, 1996:
I have taken a look at Penguin and I am not impressed. It
is still more or less a scripting language with a bunch of
extensions that make it more or less object oriented, and
more or less secure. It isn't inherently multi- threaded,
it doesn't do any runtime linking (or any linking at all for
that matter). I will grant that it is easier to learn than
Java, but I don' find that to be a relevant argument in the
selection of a development language. If you are looking for
a way to extend your web site's capabilities, Penguin may be
a contender, but if you want to do any serious cross platform,
hardware independent development, you would have to pick
Java. There is room for both in the programming world.
Different tools are suited to different jobs, but while you
can pick up a bowling ball with tweezers, it is rather
difficult and ultimately unrewarding.
i just now downloaded penguin and read the Announcement. i note several things:
being offered is basically a safe way to encrypt code and ship it to another machine, where it is verified with your PGP key signature, and given access if you pass the test.
(jake reads the Safe documentation...)
additionally, the perlsafe module restricts what may by executed on the remote machine. restricted namespace, restricted filesystem access, some other stuff.
pretty basic. i agree, penguin is NOT a java killer yet :)
so here's my response:
re: penguin not object-oriented: the foundation of penguin is perl version 5, which IS object oriented. it may not be the BEST object oriented language, but then neither is java.
re: penguin is "more or less secure": the same can be said for java. admittedly, i don't know enough about security to say that java is or isn't secure. but java certainly hasn't been around long enough and wrung out by a large programmer/user community, that it should be called secure. maybe in theory, but it hasn't withstood the acid test of long-term, heavy use.
trust goes hand-in-hand with security, and i don't trust java or the monolithic mentality that has come with it. the most popular application that supports java is Netscape, and i don't like Netscape on principle. they are trying to "pull a microsoft" and become a giant (which is admittedly good business) but i don't trust 'em one bit. java is being shoved down everybody's throats.
take a look at the, "Perl Versus the World" page. you'll see critiques of tcl, java, python... and at the bottom you'll find a self-critique:"the seven deadly sins of perl"
i don't see anything like that about java, all i see is Sun blowing sunshine up my ass. how appropriate. perl openness promotes trust, and openness promotes fixing security bugs. security holes are going to happen in both perl and java, but the perl community is in a better position to find and FIX them.
re: not multi-threaded: nope. perl doesn't have "threads" per se, but it is an extensible language and fork() works, so there's no reason a "thread class" couldn't be written that does what java does.
re: selection of a development language: YES ease of learning is CERTAINLY a factor in selection of a development language! if i can learn how to use a language quickly, that means other people are learning it quickly too, which means the established programmer group grows quickly and the language will mature faster and there will be more readily available support!
ease of learning means i can get productive faster. PERL has a huge established group of programmers, and perl popularity is growing by leaps and bounds, becoming the "cgi programming" language of choice! in fact, the term "cgi programmer" has become synonymous with "perl programmer"!
re: perl/penguin not cross platform, hardware independent: perl currently runs on DOS, Windows, 95, NT, Unix, Mac, Amiga... it's a long list.
there is also the perl-Tk interface for GUI development. (i only know of perl-TK for Unix machines, but tcl-Tk is available for Mac and Windoze/95/NT, so it is a conceivable that the ports could be done creating a standard platform-independent GUI API)
now i'm just gonna "go off" on java in general...
penguin is grass roots. that is a big plus for any project that wants to earn wide-spread acceptance and trust. java is anything but grass roots.
java was created by a skunk-works and basically handed fait accompli to the computer community. rumors abound about java being "written by a hacker" who doesn't know a) language design or b) security, both of which are supposed to be the major selling-points of java!
java as a language was created in a closed environment in a lab somewhere, springing full-grown from the forehead of the sun folks.
I DON'T TRUST A LANGUAGE THAT HASN'T HAD TIME TO MATURE!
looking at the major programmin languages in use today, i see MANY YEARS of testing. language syntax, compiler optimization, better ways to represent algorithms, making the language work FOR you. these languages (i'm thinking of C, C++, objective C, smalltalk, lisp, fortran, pascal... you can add your own) all have good foundations and have MATURED. java has been around (available to people outside of sun) for all of a year now, and has only just begun the long haul to maturity.
yet java is being pushed as the end-all and be-all of programming languages. yuck. slick marketing, but rotten underneath.
comparing that to penguin (perl, actually), i see a language that is much more mature. perl as a foundation has been around for a lot longer, and has been tested a lot more thoroughly than java.
on a different note, the heterogenity of the internet is what has saved it from getting completely wiped out by viruses. PC viruses don't wipe out the Macs, Mac viruses don't wipe out the PCs, and Unix remains, safe from both. (aside from that little worm deal... ahem! :) but that is a case against both java and penguin, and all agent languages in general!
so i guess i'm saying that java is like "BASIC" for the internet. java will be supplanted by the better big brother, and java will go away.
i wouldn't want a huge information infrastructure built on "BASIC", would you?
java isn't the answer. i agree with you that penguin isn't the answer (yet).
BUT...
perl has a much larger user base. it is MUCH more mature. perl may or may not be easier to learn, but there are many people out there who know perl and can help me. perl is a community supported standard, promoting openness and problem solving, not big licensing fees and proprietary secrets.
i don't like bandwagons, java or penguin, but in this case i'm rooting for the underdog.
in a perfect world, java will mature, and in about 5 years (at least!) we might start using it for "mission critical" applications.
more likely, java will get the shit kicked out of it by perl :)
in the meantime, several projects that are currently being worked on will be coming to fruition:
- libwww-perl (a HTML/Web perl-module) will be finished, providing a standard interface to network resources
- perl-tk will have been ported from Unix to Mac, Win3.1, NT and 95, thereby giving programmers a standard API for GUI development
- Safe Perl and Penguin will mature and be tested by the fleet of perl developers out there. they will find lots of security leaks, and they will be fixed, because of openness.
- Safe Perl and Penguin will provide seamless security, encryption, authentication, and access control to allow remote execution of agents and programs.
and then we'll REALLY start kickin' butt!
the net community will produce a "netscape killer", a beautifully crafted piece of programming art, an extensible browser and intelligent agent surfing tool without huge licensing fees, secure and free. it will have seamless download, authorization and decryption of code from the "Wuh Wah Web", allowing the USER to control who gets what access on my machine. and fine granularity of control, not just a radio-button that says "Disable Java". Gimme a BREAK!
perl will provide the foundation, Tk provide a gui environment, perl-Safe and penguin will make it secure. it will run on Mac, Unix, Windoze and job-bob's-OS.
java applets that currently bring my computer to it's knees will be a thing of the past. i'll coin a phrase now and call this java-killer PETROL:"more power than caffeine, and what a gas!"... i'll think up what it stands for later. :)
so let's say i need an intelligent agent that i want to "wander the web" for me and gather data. i whip up my perl code, "sign" it with my digital signature, shoot it out to the world, and go have a cup of coffee.
meanwhile my little perl-agent is running around, transferring itself from one machine to another, running seamlessly on different architectures, only getting the access that is allowed for "untrusted" agents, and reporting back to me. if my agent wanders onto a site that "knows" me and my digital signature, it gets more access and more processor time! the sky's the limit! (this sounds suspiciously like the description of a virus, but with complet control!)
that's certainly not something in the java spec...
i've said enough.
jake
jake kauth page/vmail: 415/582.9620 email: jake@cyborganic.net
Read also the followup by Peter Prymmer.