Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: How to learn Perl efficiently

by KeighleHawk (Scribe)
on Sep 01, 2004 at 18:59 UTC ( #387649=note: print w/replies, xml ) Need Help??

in reply to How to learn Perl efficiently

I also take a mostly minority view on this. I do agree the O'Reilly books are generally a fail safe and I own almost all the Perl related ones. I would also add to the list any writings by Damian Conway. If you get the chance to hear him speak, do so. It's down-right inspiring.

However, "just coding" in Perl will lead you down all kinds of dark and vile paths and trying to read other peoples' Perl code will likely make your head explode. There is a reason advocates of other languages refer to Perl as a "write only" language.

However, if you have a quest to "do it right" a lot of what was suggested here will hamper you. Perl's greatest advantage as well as its achilles heel is the infamous TIMTOWTDI (There Is More Than One Way To Do It).

Since you are a Comp Sci student that suggests two things to me. 1. You have little coding experience. 2. You are already supposedly being taught the "right way" to code. Therefore, rather than "do it right" I would suggest two alternative paths.

First, rather than trying to determine what is "right" about Perl, just make Perl do what you **want**. This is a big reason why I like Damian Conway. Perl did not support Design by Contract, so he created a module to make it do so. Perl is so rediculously flexible, trust me, you can make it do what you want and not be constrained by what it currently does, nor by what others currently do with it.

Second, as you gain more experience coding **then** start to really explore what makes Perl unique. If you follow the first path, you will begin to find this out anyway.

Keep in mind, you can do almost anything in almost any language. The only real reason for learning multiple languages is to gain "alternative" view points to solving problems. You don't really have enough experience (I am guessing) just yet to make that a worth while effort. However, by applying what you **do** know to Perl, you can begin building that experience as well as see what it takes to twist Perl into your prefered view point...

Replies are listed 'Best First'.
Re^2: How to learn Perl efficiently
by theroninwins (Friar) on Sep 02, 2004 at 09:31 UTC
    Well I already know C C++ Pascal Java Javascript and so on, but I have to use Perl at work and now after just a few days of working I must say I really start to like, love it. So I want to learn it a "good" way not like other languages which might be nice as well but I just learned them in a way that I just can't stand them anymore ( eg C ). (OK my Prof was really bad at that time but still)
      Then I would suggest doing some more generic software engineering reading and then applying those concepts to Perl. That's the nice thing about Perl; if it does not support what you want, you can add the support yourself. But thanks to CPAN, it is very likely what you want has already been done for you. Other languages will generally constrain you to the thinking of the time.

      Authors I like in this realm include: Robert Martin and Steve McConnell

      Others I can think of right off include Martin Fowler, Grady Booch, Ivar Jacobson and Donald Knuth. I could probably list some more but would have to go home and look at my bookshelf.

      Concepts you might find interesting include: Literate Programming, Extreme Programming, Aspect Orieinted Programming, Design by Contract and Functional Programming.

      You might not agree with all of these but applying them in Perl will certain have some interesting results as well as expanding your skills.

      When it comes right down to it, the only thing really **right** about Perl is that it may be the only language in which you can apply ALL software development concepts, good and bad, new and old and those yet to come. Other languages tend to do what they do and that is it. Applying new concepts to the language means either waiting for the language designers to pick up on the idea or corrupting the concept in some way so you can crowbar it into that language.

      In otherwords, don't worry so much about learning Perl. Use Perl as a self-learning sandbox to learn generally good programming techniques. Since Perl makes so much of TIMTOWTDI, in the end, as far as Perl is concerned, there is no right way...

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2022-06-25 04:45 GMT
Find Nodes?
    Voting Booth?
    My most frequent journeys are powered by:

    Results (81 votes). Check out past polls.