http://qs321.pair.com?node_id=1176527


in reply to How does one learn perl programming efficiently - if they do not come from computer science background?

Hello ktsirig,

despite my high level here at perlmonks I just pass the basic usage of Perl. I've studied medieval history and never gone beyond trigonometry in math. Now Perl is my best friend for my sysadmin job. I've a little codebase running since 2004 (?) that speed up a lot my daily work and monitoring tasks. My code base is objectively horrible and given to me the possibilty to rewrite it i'd do in a very different way.. But my little codebase get the job done.

During these years Perl has become my only sane interaction with the machine: i've produced many standalone applications i'm proud of and a lot of one-shot little programs to get the life simpler.

Another personal example: i get interested with the Pascal's triangle (well i call it Tartaglia's triangle..). I wrote a little piece of code to produce the triangle, i read other intersting solutions and i'v also understood many but i've not learn how to get the rigth intuition to produce the triangle with a oneliner like:

perl -e "while((@_=(1,map$_[$_-1]+$_[$_],1..@_))<=$ARGV[0]){print qq(@_\n)}"

By the other hand my lack of math geniality has not stopped me to produce a full program i'm still proud of: TkTartaglia's triangle. Doing so i had fun and I lern a lot about how using different tools.


That's the point: Perl is a tool.

Programming Perl can be a tecnique (τέχνη is the best word), a craft or even an art.


What you can do, as i do, is to practice the tool and learn from others to use the tool in the appropriate way, possibly in the best way. Perlmonks.org as you already know is a wonderful place to learn how others approach a problem.

For example I never done a multithread program, but i followed the matter over the years (my restyled homenode has bunch of links about..) and know i know what tecniques i have to follow, what code i can borrow, which pattern i must follow in the case i want to do paralell programming.

That said intuition cannot be teach.

You can practice appropriate methods to get particular jobs done, learn which idioms are preferred and why and your knoweledge baggage will become richer and richer, adding possibilities to your own intuitions

L*

There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.