[Israel.pm] What does this code do? (No. 2)
shlomif at iglu.org.il
Tue Jun 22 12:29:24 PDT 2004
On Tuesday 22 June 2004 22:20, Eli Billauer wrote:
> I tell you what the code does: It disgraces the language. While Perl
> golf is a matter of taste, this piece of shitty code is something I
> would never want anyone to see.
I don't know if it "disgraces" the language, but I agree it is not very
Perlish. I explicitly stated that I originally wrote it in C, and then
translated it to Perl. The entire point of this exercise is so people will
understand what it does, and try to re-write it better.
> It makes the Perl language look
> ridiculous as if it was something like a distorted and slower version of C.
You are allowed to write C-like code in Perl, and sometimes you even have to,
because the built-in mechanisms don't give you what you need. You can't do
everything with regexps, at least not always efficiently.
> Anyone who knows Perl, and will care to read that idiotic piece of code,
> will soon realize that it can be written in one or two lines of real
You are right. It _can_ be written in a few lines of Perl.
> But this is something I wouldn't like "the children to see". And
> mind you, there are children around (newbies, I mean, of course).
While it is not example of the right way to do things in Perl, it is still
something that we can show newbies, at least as something not to do. I
believe knowledge of the C language is something every programmer needs to
acquire after a while. So why do you think a C-like Perl program, and
especially one that was given as an exercise in understanding code, and not
as a model for good or efficient way of doing things, is something newbies
are not allowed to see?
> I've never liked the way you presented Perl in your "Perl language
It is possible my "Perl for Perl Newbies" lecture series, could use some
rework. What do you find wrong with it?
> and neither do I think that you ever grasped the sting about
What makes you think so? (note that this particular example is not a prime
example of my Perl programming, nor was intended as such).
> as well as other languages that you've managed to present in a
> disgraceful way (Haskell, for example). But this was really too much!
> Keep in mind that everything written in this mailing list is archieved
> and googled, and may be used as a reference for programming. The example
> you've shown is exactly what is going to appeal to a typical C
> programmer, and it's sooooo totally wrong!
I realize that. However, it was labeled as an exercise in understanding code,
and I explictly stated that it was written in C and converted to Perl, and
that it is possible to write a more Perlish version. I didn't even note what
it does in that context, so I don't expect people to copy and paste it into
their programs. (much less find it in interesting Google searches)
So far, three people have replied, with their take at understanding what the
program does and more Perlish versions. Through their programs I was able to
find bugs in their versions, bug in my Perl versions, overlooks of the
test-suite, and also learned some new things about Perl. So, in my opinion it
was a success, and I'll post a summary and conclusions of it after a week
Shlomi Fish shlomif at iglu.org.il
Knuth is not God! It took him two days to build the Roman Empire.
More information about the Perl