White Camel Award Nominations
Idmat writes "Nominate the Perl community's unsung heroes for the first White Camel
awards. Three awards--for outstanding contributions to Perl Advocacy,
Perl User Groups, and the Perl Community--will be awarded at O'Reilly's
Perl Conference 3.0 on August 24, 1999. Nominate the folks who have
made these important non-technical contributions to Perl at
perl.com All nominations must be in by August 2.
The White Camel awards are sponsored by Perl Mongers, O'Reilly &
Associates, and sourceXchange.
See the press release for more info " Anyone want to share
their ideas?
Just like COBOL before it, Perl is a disaster because it allows idiots to program. Who the hell do these people think they are?
We didn't spend tens of thousands of dollars going to university for years just so some punk idiot can take our jobs away by writing in Perl.
Leave programming for the professionals, and get these secretaries back to their word processors.
The reason there's so much terrible Perl code is because there are so many morons programming in it.
Throw it out, and you get rid of the morons. C++ is a good replacement, because that way the idiots know they can't code. Perl tricks them, and then we all pay the penalty.
> Throw it out, and you get rid of the morons. C++
:)
:)
> is a good replacement, because that way the
> idiots know they can't code. Perl tricks them,
> and then we all pay the penalty.
Oooh, yeah! Why don't we get rid of cars, too? Oh, and computers in general! That'll get rid of all the idiots...
Really, I see no reason why I should do things the hard way just to prove myself. Perl can be impossible to read -- *IF* the person writing it doesn't know how. It can also be very clear and easy to follow.
The advantage to Perl is it's flexibility, but the same thing that allows you to do more good allows you to do more evil.
Perl doesn't kill programs, people do.
WWJD? JWRTFM!!!
Posted by Volkadav:
:^) Don't get me wrong, the times I've encountered Python I've liked it, and intend to try it more. Language debates are a little pointless in the final analysis for most of us who don't have advanced CS or Linuguistics degrees anyway... ("And just how many EBNF syntax definitions have _you_ written today, schmarty pants?! >:)")
I use perl fairly often, and while it can be written in a _highly_ obfuscatory manner, it is just as possible to write very clear code (c.f. English.pm to take care of the $@ phenomenon). IMHO C is a thousand times worse, and I don't see (no pun intended) anyone calling it a sinking aquatic transportation method.
Actually, Perl is more like the Rexx of the '90s. Python, if we're drawing analogies not in language model but sociologically is barely even the PL/1 of the 90's.
IBM et al. fully intend to make Java the COBOL of the 00's - literally a common business oriented language. If the industry makes it the Ada of the 00's too, then so much the better (but I do very much like Ada). And I hope they succeed. COBOL itself is obsolete (even Microsfocus Object COBOL) and C++ ins't suitable for large scale projects (for many reasons, many of which are detailed in the Java white papers).
Personally, I prefer to use PL/SQL, and that's going to be the de facto business language for a good long time yet. With that and Java, I don't expect to be obsolete for the next couple of decades.
I rather "count" curly braces than whitespaces, but since I let GNU Emacs take care of the "counting" for me it doesn't matter to me.
/mill
IMHO Python is close to impossible to read when on paper because of its use of indentation.
And I wish PCRE was as optimized as Perl's regex code, or that the regex code was available as a standalone library; unfortunately that seems very difficult to do, and unlikely to happen.
When Java was first introduced, there was much excited chatter about it killing off other languages; I think Sun is still half-heartedly arguing that. Yet interpreted languages have adapted to Java quite nicely, thank you -- consider Jacl and, of course, JPython. So get used to the diversity -- it doesn't look like it'll be going away, particularly since component architectures like COM and CORBA grant a lot more flexibility in choosing a language.
Hmm? You can quite happily store your data in interwoven dictionaries, lists, and tuples if you like, and never write a single class. If you want to talk about classes being a requirement, talk about Java.
There's a Python-to-C translator, though it seems very experimental and I'm not familiar with its status; the author claims it will handle almost all Python code, but you know what those programmers are like. Of course, you can compile Python to Java bytecodes quite nicely using JPython.True, but it also means you can leave it out if pattern matching isn't of interest to your application domain. People who want to run massive numeric simulations, build virtual environments, or run a large online role-playing game may not care about processing text. (Coincidences are funny things; while checking the third link, I went to reference.com and was startled when my search pulled up Python code on my screen -- someone forgot to make a CGI script executable, I suppose. reference.com is an application that does care about text searching, I would imagine.)
The greatest problems with regexes in Python 1.5 are:
- Parts of re.py are still written in Python, not C, and are therefore slow. Fixing that is on my list for 1.6.
- PCRE doesn't do a lot of optimizations and analyses. Mostly this is because the compiler doesn't build a parse tree and traverse it, but instead tries to construct a string of bytecodes in a single pass.
- Unicode regexes are an open issue at this point. I've been casting longing glances at the regex engine in Mozilla, which does build a nice parse tree and supports Unicode, and hope to work on splitting it out into a separate library.
Python doesn't have the idea of scalar/array/etc context, so I don't see the relevance. If you're generating multiple blocks of code, then generating curly brackets and indentation are isomorphic problems; replace { with \n + indentation-level spaces, and replace '}' with newlines. PyApache (don't ask me why it's not called mod_python). Zope is more interesting still.# sourceXchange is that HP program to link up
# developers with software projects. what easier
# way to find good developers than to ask the OSS
# community?
Um, the awards are for NON-technical contributions. Maybe some really good developers will be nominated, of course, but I wouldn't think a good place to look for developers is nominees for a non-technical award.
# Does that mean we can't nominate Tom Christiansen # for his years of advocacy work just because he's
# also a technical contributor?
No. It just means that awardees will be awarded for non-technical contributions.
Hey what about nominating Rob, for his most amazing use of Perl to create this most amazing of sites?! Plus He makes the source available to those at large for their pearl learning.
---- Fight to protect your right to keep and arm bears! ummmm... ya I think that's right....
Hmmm, yeah, right.
So Rob and the boys are Cobol nerds eh ?
VB is the Cobol of the 90's.
Perl is the C or maybe the Lisp of the 90's. Python looks like it may end up being the Eiffel of the 90's.
I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
> You find that perl is often snubbed by all CS courses, for traditional imperative programming languages
:)
> (and ofcorse the almost useless functional and declarative languages)..
*giggle* Have you ever done any programming in a functional language such as, say, Haskell? I find it to be a very elegant expression of certain algorithms. Of course it's not best for everything, but nothing is. Perl is best for text processing, and in my opinion second best for everything else (that's one of the reasons i really like Perl). Also, would you inflict Perl on someone as a first language? However, I'd agree that Perl would be a far better choice than the languages used in my last CS class (COBOL and C++).
Perl is a kluge, but it's the only kluge you'll ever need.
And what else can PHP do? Perl is a complete language, which I use almost every day for application prototyping and general scripting. Can PHP do SMTP? IRC? IPC? XML? You're being rather narrow.
Hear, hear, Abigail's Perl prowess is well known throughout the USENET community. :)
A small example of her handiwork, if I may:
sub A::TIESCALAR{bless\my$x=>A};package B;@q=qw/Hacker Another
Perl Just/;use overload'""'=>sub{pop @q};sub A::FETCH{bless\my
$y=>B}; tie my $shoe => 'A';print "$shoe $shoe $shoe $shoe\n";
Huh? So how do you read C code that's printed on paper? Do you count the braces, or pay attention to the indentation? I doubt it's the former, and the latter is the same as Python.
I've used both Perl and Python quite a bit. I have to say that Python code tends to be somewhat easier to write, and significantly easier to read.
I at first thought Python's "indentation == block structure" was pretty gross, but it actually makes sense. People pay attention to indentation, so it only makes sense that the computer should too.
But really, anyone who bases their conviction that Perl is better than Python because they think Python's indentation thing is "yucky" obviously hasn't taken a real look at Python, and deserves to be ignored.
I used to use Perl. Then I went and learned Python despite my reservations about it's indentation scheme. Since then, I've converted to Python. Anything Perl is good at, Python is better at. It's easier to write, and easier to read. Even before I learned Python, I found it to be easier to read than Perl. I normally don't "convert" to a language. I know more languages than I have fingers, and quite a few of them I use on a regular basis.
The only "advantage" Perl has is that it's installed on more systems than Python. That's the only reason I use Perl at all actually. When I have to write a script that will run on a machine that has Perl but not Python installed. That is (thankfully) becoming more rare.
My point is that while having C vs Java arguments (for example) are futile -- each languange has its valid uses -- Perl is essentially holding us hostage. There's no reason to use Perl, because Python is strictly better. No reason that is, except for the large installed base of Perl. I won't even mention the obvious parallel to Windows and Linux. D'oh! Looks like I just did.
Someone asked for some Python sample code. I was going to post some, but /. seems to have a bug where even stuff posted as "HTML Formatted" undergoes "entity translation". Of course, that doesn't have anything to do with the Perl code in /. being hard to maintain... right?
That's what I'd like to know: what can you do in Perl that you can't do in Python? My guess is nothing. As for what you can do in Python that you can't do in Perl: Python code is actually maintainable. Perl code generally isn't. And Perl makes it hard as hell to make code that even comes close to readable.
What is it that turns Linux users into crusaders against Windows?
Several of the points on your list are wrong. Several others are irrelevant. What disturbs me the most is that you had to stoop to personal insults. I won't go into what that implies.
How about this: find your most readable piece of Perl code that you think can't be easily reimplemented in Python. Post it here. Nothing silly like executing chunks of Perl code allowed. It's just as hard for Perl to execute chunks of Python code.
Remember: it has to be readable code.
Comment removed based on user account deletion
Comment removed based on user account deletion
The OSS community should have more of these kinds of awards, aiming for public recognition of various folks helping OSS in both technical and non-technical areas.
Certainly this would help to futher motivate advocates and developers alike.
There's plenty of people out there still using Perl. In the US, where leased line prices are comparitively cheap, the majority of companies who want to take their web presence seriously will have their own server. In the UK (and much of Europe) it costs an arm and a leg to host a server, so small-medium businesses and even the occasional large company host their sites with ISP's.
Unfortunately, many ISP's don't provide much more than the usual cgi access for functionality, so a lot of people are writing some very interesting and often quite complex systems in Perl.
Of course, this isn't an ideal state of affairs and I for one would much rather be using PHP style solutions, but often the choice just isn't there.
A little planning goes a long way...
I'm sorry, but Perl is by far one of the best (if not the best) utility languages it out there. Granted I wouldn't want to make a ray tracer with it, but still you can't beat it for all the miscellaneous tasks that come up during the day.
Most of the posts I've seen deriding Perl, can be summed up as, "Ehh Perl! _____ is much better for CGI and WWW!" Now I'm not here to debate that, but I can't stand by and let people pigeon hole it as simply a "web" language. It's a general text manipulation language. Yes you can do CGI with it, but it can also do so much more. I've used it as a code generator, and for numerous build scripts.
Perl is somthing that should be every hacker's toolbox. It just makes life so much easier. Sure you can probably do all the stuff I use Perl for with something else (shell scripts come to mind), but why would you? Perl may not be the perfect too for the job, but it certainly gets the job done.
I don't know about snubbed. Every professor I had sung the praises of Perl. The reason why Perl isn't used, and the reason it is so powerful, is because it abstracts out so much detail. You don't need to know anything about memory management, the garbage collector takes care of it. Want a hash table? Just type, "%htable"!
I occasionally interview people at work. I met a 4.8 GPA master's student who didn't know the first thing about advanced data structures. Why? He was taught using Perl!
I_wish_I_could_use_python_but_my_space_bar_is_brok en!
James
To be fair, you should actually compare the technologies -- and not in your Prisoner Of Bill little box, either. Feel free to post, and we'll be happy to show you how underwhelming PHP is compared with dynamic Perl solutions.
Those of you who haven't seen Writing Apache Modules in C and Perl", by Dr. Dr. [he has too many degrees :-] Lincoln Stein and Doug MacEachern, really should check it out.
Now, what can Perl do that Python cannot do? I don't know what you're looking for here. There's a remarkably long list of things you can't do in python than you can do in Perl. Some of these are severe. Others are not.
- With python, the object is the way, the truth, and the light. Let no man cometh unto his data save through the object. In perl, OO is an option, not a requirement.
- With python, you cannot pass in chunks of anonymous code and access variables in that code chunk in the correct scope. That's because Python has no understanding of proper closures. Perl does.
- With python, you cannot generate C code to compile into an a.out.
- With python, the pattern matching is not tightly integrated into the language. It is merely loosely bolted on, which introduces inefficiencies and quoting clumsinesses.
- With python, class methods and object methods are treated dissimilarly. This is unclean.
- With python, you cannot access your overridden superclass's method in a portably symbolic fashion -- there's no SUPER or super().
- With python, you cannot implement a class in whatever way makes sense to you. You must use its system. That means, for example, that you cannot use a closure as an object. No big surprise, I suppose. Python never did figure out closures.
- With python, you cannot correctly garbage collect lost circular references when the interpreter thread shuts down. This makes it completely unsuitable for use in embedded applications. It fails to follow proper finalizer semantics for things it forgets about!
- With python, you cannot tie arbitrary semantics to variables and handles through the tie machanism to trigger implicit object calls.
- With python, you cannot set watch points on variables.
- With python, you cannot catch compile-time errors using function prototypes.
- With python, you cannot determine your calling context, nor behave differently dependent upon the same.
- With python, writing an eval string is a pain in the royal butt due to the insane whitespace problem.
- With python, you have significantly less control of compile-time versus run-time issues. Yes, this matters.
- With python, you have no equivalent to CPAN or the CPAN.pm module to support a system for automatatic registration, distribution, replications, and installation of 3rd-party modules.
- With python, you cannot write poetry, because of the white space issue -- again.
- With python, you have no equivalent to Apache's mod_perl.
There are doubtless many others. These are just off the top of my head. You should visit the Perl OO links I gave in a different followup so you actually know what you're talking about next time.If you're counting braces in C, Java, troff, awk, C++, Perl, Javascript or any of the rest, you're doing something fundamentally wrong. That's the computer's job. Perhaps you should try a more sophisticated editor than ed. :-) Really, balanced braces and alignment of code are the job of your editor to help you with.
When it came time for the object design, he rejected much of the C++ model. That's probably just as well, since C++ has so many oddities not found in any other language with object support. Python's model seemed sufficiently clean and appealing that, as with so many other tools and languages where Larry "cherry-picked" the coolest property from eclectic sources, he took most of the object stuff from Python.
For example, the object's self reference (the "this" pointer) coming in as the initial argument in a method call rather than as a formally defined variable comes right from Python.
Of course, we weren't really content to stop there. One difference from Python is that the class itself can serve as something of a meta-object. This has some rather nifty ramifications to this. If you're filling out a check-list of features, you'll find that Perl OO programming supports classes and objects, single and multiple inheritance, instance methods and class methods, access to overridden methods (a virtual SUPER class), constructors and destructors, operator overloading, proxy methods via autoloading, delegation, a rooted hierarchy for all objects (class UNIVERSAL), and two different levels of garbage collection.
Before you diss it too much, you should know what Perl OO is actually about. If you're looking for more information or examples on Perl OO, here are some suggestions:
I don't mean to pretend that Perl's OO doesn't have its host of issues. The biggest one is that unless you're careful in your design, one class needs to get unnaturally chummy with its parent class to avoid accidentally overriding or interfering with not just functional members (methods) but also data members (attributes).
But as Larry has said: `Concentrate on Perl's strengths, not its weaknesses.'
Perl, being a great language, doesn't get much recognition from the academic community.
How many times do you see perl mentioned in a programming language text book??
You find that perl is often snubbed by all CS courses, for traditional imperative programming languages (and ofcorse the almost useless functional and declarative languages)..
My guess to why this is occurring is that perl brakes away from the traditional programming language design rules (or current trends) so much that it is viewed as inferior. While every traditional imperative language can have a 'record' data type, Perl can have none... Pointers in Perl are all but gone.. and all variables are global, unless explicitly declared.. - and those are just one of the many examples to why this language is viewed as a step back. However, these features are what make the language better, and I could go on about the many superior features that perl has that are not found in any of the major languages..
I nominate the person who's quest would be to re-write the text books, and put at least a page on the most Practical language on Earth, Perl!
The White Camel Awards are sponsored by Perl Mongers. Nobody but Perl Mongers gets to see the nomination information. Perl Mongers will select the award recipients.
:)
The idea is to recognize persons who have made significant, non-technical contributions to the Perl community. I like giving stuff away, and that's why I created these awards and organized the necessary people to raise funds and so on. That's it.
If sourceXchange wanted to find developers, this would be a really stupid and expensive way to go about it. The people being nominated aren't exactly unknowns, after all.
I'm famous now!
--- Abigail