Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Learning Perl?

by davido (Cardinal)
on Sep 06, 2003 at 19:04 UTC ( [id://289497]=note: print w/replies, xml ) Need Help??


in reply to Learning Perl?

Everybody learns differently, which is, in part, demonstrated by the existance of bright and motivated kids failing in certain subjects as taught in school, only to find later that they really have a knack for it when they approach the problem a different way. Many great minds have been poor performers at one style of learning, and excelled beyond anyone's expectations in another style of learning. What works for one, doesn't necessarily work for everyone. That said, there are principles that are applicable to just about everyone (everyone capable of learning in the first place, that is).

What I feel is probably the most important philosophy behind learning anything, Perl included, is keeping an open mind. This is the notion of teachability. The chances are strong that if someone explains a 'best way' to do something in Perl, and you disagree, with much less experience than the 'expert', you probably are not fully comprehending the whole problem. Stay open to proven methods. Just because it's cool to be different in High School doesn't make the herd always wrong. That isn't to say that fresh ideas can't lead to innovation. It simply means that there is usually no need to invent a round thingy with a tire on it and a hub in the center, when a wheel already exists. The existing wheel may be improved upon and better tailored for your situation, but you may as well start with the wheels that you find in the store first, so you can fully understand in what ways it needs to be adapted to your situation. There's no need to go through the steps of developing a log, and then a skid, and then a sled, and then a sled with runners, and finally realize that the whole contraption is incapable of travelling at 80mph because of friction, and that wheels would have been better all along, just like everyone's been saying.

Of course early explorers had to kick against the pricks to discover new horizons beyond the ends of the earth. But they first became experts in navigation, and learned firsthand exactly why traditions were wrong. Don't expect to be the expert who knows best until you understand why everyone else thinks the way they do. Early explorers understood that people believed the world was flat, and that it had ends, because they understood that in fact, its roundness gave the impression of an end called the horizon. And in understanding that, they found new horizons. You too may discover new horizons, but you must first understand what a horizon is.

Now I can explain how I have engaged in my effort to learn Perl. I am still engaged in that effort, as long as Perl remains a topic of interest and efficient tool of implement, I will continue to learn, so long as I continue with an effort to hone my skill. There is no end to the process of gaining wisdom, just as there is no end to what we now understand to be the Universe (well, ok, maybe there is, but we'll never get there).

  • Read. Some of the books out there are lousy. But there are some true gems, written by some of the greatest minds on the subject. The more popular books undergo occasional revisions and withstand the firey furnace of real world test by the hundreds of thousands of people who read them. The books I have found to be of most value to me are, Learning Perl, Programming Perl, Mastering Regular Expressions, and The Perl Cookbook. I am certain that Advanced Perl Programming, and many other books published by O'Reilly are equally fantastic as I discover new areas of understanding to explore. O'Reilly is not the only good publisher, and there are many other good books out there. But they seem to be the publisher capable of gaining the cooperation of the founding fathers of whatever topic a particular book is intended to cover.
  • Read Usenet and the posts that come through this site. You will be able to see discussions that explore many areas of understanding that you never even considered. Light bulbs will come on, ideas will spring into your mind. You will see some do things "the wrong way", and others do things in many "right ways". It's all great experience.
  • Read the Perl documentation. Some of it is written for Mr. Spock. But some of it is also written for you. And the more you learn, the more you will find is within your relm of comprehension. Don't be afraid of the Perl documentation. My secret has been to download it to my PDA in HTML format, so that I can use the PDA as a handheld reference to all of Perl's documentation and FAQ's. It is surprising how much good information is taught in the FAQ's. It is surprising how many mistakes are made, and questions asked by folks who simply haven't tried to find the answer on their own. You will learn an awful lot by reading POD.
  • Learn the science of computer languages, computer networking, and so on. Many questions that start "How do I..." are not necessarily Perl questions, but are more general Computer Science questions. The principles of algorithms, flow, and code structure are applicable across a broad range of languages. Consider Perl, the trees, and the broader relm of Computer Science, the forest. The forest exists in a world. But before you can be good at finding your way through trees, you must see the forest, and before you can be good at finding your way through forests (plural), you must understand the world out there.
  • Come up with an idea and write some code. I know I just said not to reinvent the wheel, but why not start by trying to rewrite some of the core utilities in your operating system? That doesn't mean you're going to write production code, but you're going to be forced to think through strategies, and create solutions. Once you begin this process, it's time to read more, and maybe even ask your first question.
  • Ask questions. Not the same questions that you can find by Googling or searching, but the kind of questions that you have trouble finding an answer to. There are plenty of good questions. There are plenty of FAQ ones too. Try to learn the distinction, and you will find that others are very helpful. Forget that principle, and you're likely to catch flack.
  • Don't try to be the social anomoly. The world is full of people, and each person believes he or she is different from everyone else. But in the aggregate people are largely the same. It's likely that ones problem has a solution that has been considered already. It's possible that ones personality is not as uncommon as he or she thinks it is, and it's even likely that ones attempts to defy social norms, or think outside the box, have already been tested. The good ones have succeeded, and the others have nose rings and no jobs, spending their days trying to push hippie pseudo-art at Venice Beach (no offense; I'm sure it's a great lifestyle to some).
  • Answer questions online. Just be sure you're right. In other words, look at other peoples' questions, work your way through their problem, and once you're confident that you've got it right, post your answer. If you're wrong, you'll certanly hear about it. If you're right, you've helped someone. And either way you've learned something. I'm not condoning posting crap (mistruths). I'm saying, take the time to learn the answer, and then give it. By undergoing the process, you will expand your knowlege into areas you hadn't previously considered.

Sorry to have become so long winded, but my point to all this is that you can apply the same principles to learning Perl that you apply to learning any other broad, intricate subject. And most of all, don't give up.

Dave

"If I had my life to do over again, I'd be a plumber." -- Albert Einstein

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2024-03-28 20:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found