Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
For those of you without computer science degrees, how did you become experts at programming? Was it through the applied use of a programming language or through the study of more abstract programming theory, or a little bit of both?
Same way you get to Carnegie Hall. "Practice, Practice, Practice."

But yes, to answer your question, "yes". I spent most of my time faced with a programming problem in front of me, and a stack of manuals to my side. Nothing like a paycheck to motivate you to solve problems in your programming.

But in the "off hours", I also spent hours and hours just reading code. I can't emphasize this point enough. Get all the code you can already written in the language you wish to learn. And in languages you don't know yet.

What happens over time is that the "rhythm" of the language starts pounding inside your head. And then you start noticing that "rhythms" from one language can be reused in another, as long as they're from common families.

If the reference manual is like the dictionary, existing code is where you learn the "idioms". How do people typically write a subroutine call? Where does argument parsing get placed? How do you handle errors? What are hashes commonly called, and why? This is makes someone fluent in the language.

For example, the Schwartzian Transform was nothing more than an idiom I had learned in LISP, recoded to Perl. That's why I was able to hack it up in a few minutes in response to a question in CLPM, and nearly without even thinking about it, because I already had thought about it when I was first playing with list processing.

And then comes along a tool like YACC, where I'm puzzled about what the term "LALR(1) Grammar" means. So I do grab theory books from time to time, and learn just enough to be dangerous. {grin} But what I learned there applied a lot to Parse::RecDescent, and I end up already writing columns using it within a short time of being exposed. Because I'm reusing the patterns in my head. The idioms of the languages.

-- Randal L. Schwartz, Perl hacker


In reply to Re: Delving Deeper into the World of Programming by merlyn
in thread Delving Deeper into the World of Programming by nysus

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (2)
As of 2024-04-25 20:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found