Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Not-So-FAQ about learning Perl

by ichimunki (Priest)
on Dec 26, 2000 at 22:27 UTC ( #48331=perlquestion: print w/replies, xml ) Need Help??

ichimunki has asked for the wisdom of the Perl Monks concerning the following question:

I have some questions about learning Perl (specifically books on the topic, since I have gift certificates to use). And maybe one of the better answers to this will be "Learning Perl" (which I've not read, since when I was first learning Perl, I accidentally got hooked on a cargo-cult type book or two, and then found my way to online tutorials-- and later figured I go with the larger ORA tomes when it came time to buy more hardcopy)...

What I'd like to know more about is whether there are any program design books written from a Perl-centric point of view (specifically with OO design in mind-- which seems to be a much different thought process than the old main loop, GOSUB type of flowchart)-- most of the theory books I've seen have examples in some idealized language or C. I'm interested in (if there are any) good books related to thinking about programming in Perl, moreso than simply guides to the language.

I am also wondering if there are any Perl for Kids types of books (for my daughter, not me!), or what recommendations the Monks might have for getting a child into Perl programming (as a first language-- and please don't recommend some other language, I think Perl is well suited to this task). If nothing exists, are there any working projects along these lines that you know of which could use some actual children to test the material?

Replies are listed 'Best First'.
Re: Not-So-FAQ about learning Perl
by coreolyn (Parson) on Dec 26, 2000 at 23:01 UTC

    If your looking for perl centric OO design then Damian Conway's Object Oriented Perl is exzactly what you are looking for.

    I wish you luck on getting the kids into programming, and I'm on the side of 'perl as a first language' camp though there is disagrement on that opinion by some. I haven't been able to get my kids to touch code beyond html. There's nothing to win in coding I guess.

    However I should mention Andrew L. Johnson's Elements of Programming with Perl. I own it only because I'm obsessive about buying perl books. As a starter language book it's pretty good. I haven't finished it yet but I see the last chapter even gets into OO basics. Just the basics. If your kids are over 14 or so this might be a good book to attempt to start them on. I'm finding it's helping me to get my perl 'jargon' a little better understood. It is just a little patronizing, so if you can't handle an author giving you 'kid glove' treatment stick with Randal Schwartz (aka merlyn) and Tom Christiansen's Learning Perl. Either way You'll need The Camel for reference. Unless you don't mind On-Line documentation.

    coreolyn Duct tape devotee.

      Thanks! The Manning books (especially "OOP" for myself) are two I don't have that I will consider more carefully. "Elements" looks like it would be great for high school kids just starting out with programming. But I should have given some background to be clearer, I've read the Camel, I've got Nutshell and Perl/Tk. I rely heavily on PODs, other online resources, and subscribe to TPJ.

      For me, the mechanics of Perl are coming along nicely. What I'm looking for is more along the lines of design/engineering. I'm probably going to pick up "Pragmatic Programmer", but I'm wondering if there are other classics in the realm of non-language-specific programming theory that relate well to Perl, or that use Perl examples.
        The only text that comes to mind is the almost-universally-liked Mastering Algorithms with Perl. (The only person I've known to dislike it is the enigmatic Abigail, who has high expectations.)

        You wouldn't do badly with decent books about programming, whether Design Patterns, Code Complete, or even Extreme Programming Explained. I'm not aware of any books discussing functional programming design, at least from a language-neutral point of view, but there are bound to be a couple out there worth your time.

        Having just used closures and recursion to solve a rather nasty puzzle, I'm a big believer in mixing different techniques when appropriate.

Re: Not-So-FAQ about learning Perl (possibly helpful nodes)
by ybiC (Prior) on Dec 27, 2000 at 08:25 UTC
Re: Not-So-FAQ about learning Perl
by Falkkin (Chaplain) on Dec 27, 2000 at 13:15 UTC
    This is complete vaporware at present, although it maybe won't be, starting tomorrow...

    A friend's daughter, who is in her early teens, wants to learn how to program, so I had her download ActivePerl today and install it. Haven't gotten to any actual teaching yet, though. I was originally planning on teaching her mainly through e-mail, but it turns out that her mom wants to learn as well. So, I've decided the best way to do this, without repetition, is to simply write a Perl tutorial in HTML, and post it on the Web. Neither of my "students" has had any previous programming experience, so the tutorial will be written at a very basic level.

    I guess all I can say for sure is that I'll keep you and the Monks other posted on my progress, if anyone is interested.

      Please do keep us posted!

      One half-baked notion I've had for younger, beginning programmers is that lessons could be written as POD or XML, then presented via a pager script. At appropriate points in the reading, the lesson would stop, and accept user input. The input would then be eval'ed for full effect. If there are errors, the pager script can assist in parsing the problem.

      This way, learning the ins and outs of emacs (or vi or notepad or Komodo) can be saved until after the larger introduction to programming and Perl is done. Also, scripts can be partially prepared. The student doesn't need to spend time typing #!/usr/bin/perl (or even figuring out what the correct shebang is on their machine), it can be prefilled (so for the bits that are not integral to the lesson, this means that stray typos in those other areas will not interfere with learning progress). For students my daughter's age (8) I think not having to go through a lot of steps would keep them more focused during the learning process.

      This type of interactivity was one of the things that made getting into BASIC on the old Apples and C-64s so easy. You typed your next line on the command line and it got put into your program in the appropriate spot. It was easy to LIST [start_line#-[end_line#]] your program.
        The fill in the blanks part is good. That is how some of the early assignments I did at Uni worked.

        If the problem is "Write a program to print the integers from 0 to 9, modify this program":

        #include <stdio.h> main { int i; for (i = 0; i < 10; i++) { /* You're code here */ } }

        Okay, that's a really simple one, but you get the idea... I assume that the Comp Sci department at my old Uni (VUW) is the only one that does that...


Re: Not-So-FAQ about learning Perl
by InfiniteSilence (Curate) on Dec 27, 2000 at 21:02 UTC
    Do you teach people a useless (or highly inefficient) language for the sake of explaining the mechanics of programming languages, or can you teach them something practical instead?

    Children do not have the cognitive power to understand and interpret lots of compacted, detailed information. They also lack the attention span necessary to process such info.(please, please read A Child's Understanding of Number to understand this better) You must not try to force difficult language constructs on children lest they learn to despise computers altogether.

    Thinking along these lines resulted in languages like LOGO, Dartmouth BASIC, PASCAL, and other 'teaching languages' which explain good programming practices, file I/O, simple data structures, and more. The recent industrial push for programmers has contorted regular learning cycles in colleges and high schools toward languages like C, C++, Java, and Visual Basic -- languages that push the limits of people's understanding (and sometimes utterly confuse people).

    What about Perl? I have long been professing that Perl is the ideal language to BOTH educate students AND provide them with professional training. I would suggest easier programs in Perl for starters...mainly scripts that utilize simple GD graphics; and eventually move upward toward more complicated data structures and so forth.

    The important thing to remember is that, in teaching either uninitiated programmers or children, is to start small and engender thier interest. This is what LOGO and PASCAL were all about. Using Perl in this fashion teaches the 'CAN' aspect of programming while consciously excluding the many exceptions that exist.

    Lastly, if you have spent time searching the market for a children's book on Perl, and you have not found one...haven't you considered writing one yourself (all it really takes is interest, research, time, and proofreaders)?

    Celebrate Intellectual Diversity

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://48331]
Approved by root
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (1)
As of 2023-09-24 04:29 GMT
Find Nodes?
    Voting Booth?

    No recent polls found