Ahhh, you are talking about the quality that cannot be named :) I can't tell you what good practices are, but I can tell you that I know them when I see them.
My advice would be to stick around and read. Read some of the modules that you download from CPAN. After a while you will begin to get a feel for things you like, and things you think stink.
Not to mention that one person's good practice is another person's poison. Just ask about whether one should leave off return at the end of a subroutine, or whether it's better to say $bar and foo() or foo() if $bar. Or even if( $bar ) { foo() }. It depends on the circumstances.
- another intruder with the mooring of the heart of the Perl
| [reply] [d/l] [select] |
| [reply] |
"Trying to be a programmer without understanding how a CPU works is like trying to practice medicine without learning anatomy. Sure, you can have limited success curing patients with medical advice gleaned from Google, but on the whole you're going to be a pretty bad doctor. For those who missed out on learning assembly language, I highly recommend working through this book, even if you'll never program in assembly again. I promise that all kinds of lights will go on in your head and you'll be a vastly better programmer."
Joel Spolsky
Mago
mago@rio.pm.org
| [reply] |
"Trying to be a programmer without understanding how a CPU works is like trying to practice medicine without learning anatomy.
While at some level that's still true, it's certainly less true these days than it once was. That's at least partially—and maybe mostly—due to the ubiquity of high level languages. Since this is Perl Monks, it seems relevant to point out that your Perl code will run unaltered on all manner of CPU architectures.
The other side to the coin is that trying to be a programmer without an understanding of how various (mostly) theoretical machines work is like trying to practice medicine without ever learning anything about biology. You don't see many real live Turing machines around, but an understanding of them will do a lot more for you programming than an understanding of "Hyper-Threading Technology" will.
-sauoq
"My two cents aren't worth a dime.";
| [reply] |
I'm not so sure of that. It's important to learn how a real computer works -- not down to the level of the copper on the board, but the basics of what a pointer is, for example. While turning machines and real computers are largely equivlent after an isomorphisism, it's a fairly harsh isomorphisism. Understanding a turing machine won't allow you to grok pointers, because turing machines don't have pointers, or, indeed, RAM -- Random Access Memory. Memory on a turing machine is purely serial, and infinite in extent.
On the other hand, the differences between the arch of an x86 box vs a PPC box are at a level of detail to be irrlevant to most perl programmers.
Knowing how a water pump works, even though a water pump is isomorphic to a heart, isn't all that useful for a heart surgon. OTOH, knowing how a rat's heart works would be very useful even though there are differences between a rat's heart and a human heart.
Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).
| [reply] |
| [reply] |
I disagree. But you should an read an article of Spolsky's that makes a similar point (I can't find the one with the original quote), he says it much better than I could in a short post: Back to Basics
Makeshifts last the longest.
| [reply] |