original:
Teach Yourseelf Programming in Ten Years
Author:
Peter Norvig
Translation: Guo Xiaogang (
FOOSLEPER@163.net)
Last revision date: 2004-3-19
2005-01-12 Added new translation link.
The translation of this Chinese has been licensed by Peter Norvig.
Why do everyone are in a hurry?
Entering any bookstore, you will see the "TEACH YOURSELF JAVA IN 7 Days" (7 days Java no post-Tong) is a long-awaited similar book, they want to teach you Visual Basic, Windows, Internet Wait, but only a few days or even hours. I'm here
Amazon.com is made as follows
search for:
Pubdate: after 1992 and Title: days and (titles: Teach YourSelf)
(Publishing date: 1992 after andtot Name: Day and (Title: Society OR Title: Non-Passion))
I got a total of 248 search results. 78 in front is computer books (79th "
Learn Bengali In 30 Days, 30 days learn Bangladesh). I changed the keyword "days" to "hours", I got very similar results: this time there is 253 books, the head 77 is a computer book, the 78th is "
TEACH YOURSELF Grammar and Style In 24 Hours "(24-hour learning grammar and style). In the first 200 book, 96% is computer books.
Conclusion, either people are very eager to learn to learn computers, or do not know why computers are amazing and simple, easier than anything. No book is to teach people in a few days to appreciate Beethoven or quantum physics, and even how to dress up.
Let's analyze the like "
What is the meaning of Learn Pascal in Three Days (3 days learning pascal)
Learn: In 3 days, you can't write some meaningful procedures for time, and learn from their failure and success. You can't work with some experienced programmers, you won't know what the taste is in that environment. In short, there is not enough time to let you learn a lot. So these books talk about only the proficiency on the surface, rather than in-depth understanding. As far as Alexander Pope (Translation: British poet, writer, 1688-1744) is a little learning is a dangerous thing. Pascal: You can learn the syntax of Pascal in 3 days (if you have a similar language), but you can't learn how to use these syntax. In short, if you are, for example, a Basic programmer, you can learn to write Basic style programs with Pascal syntax, but you can't learn the true advantages (and shortcomings) of Pascal. Where is the key? Alan Perlis (Translation: ACM First Chair, Tu La Prize Winner, 1922-1990) I have said: "If a language can't affect your idea of programming, it is not worth learning." Another point is that sometimes you have to learn a pestle that Pascal (more likely to be Visual Basic and JavaScript), because you need to contact existing tools to complete specific tasks. But at this time, you are not learning how to program, you are learning how to complete the task. 3 days: Unfortunately, this is not enough, just as the following section. 10 years of programming no teacher
Some researchers (
Hayes,
BLOOM) shows that in many areas, it takes about 10 years to cultivate professional skills, including chess, composing, painting, piano, swimming, tennis, and neuropsychography and topology. There seems to be no real shortcut: even Mozart, he revealed the music genius at the age of 4, which still used more than 13 years before he wrote world-class music. Look at another music type - the Beatles, they seem to be suddenly taken in the 1964 ED Sullivan program. However, in fact, they started to perform since 1957, even if they have shown great appeal very early, their first real success is "sgt. Peppers" will be released from 1967. Samuel Johnson (translation: British poet) believes that 10 years is still not enough: "Excellence in any field can only be obtained through a lifetime; a little low price will not change." (Excellent in Any Department Can Be attained ONLY by the labor of a lifetime; it is not to be purchased at a lesser price.) Joe (translation: chaucer, British poet, 1340-1400) also complained: "Life is so short, the skill is so long. "(The Lyf So Short, The Craft So Long To Lerne.)
Here is the prescription that I have successfully programmed this line:
Interested in programming, because of fun and programming. Determine It is always enough to stay enough to put 10 years of investment. Talk to other programmers; read other programs. This is more important than any book or training course. Program. The best learning is to learn from practice. In a more technical language, "The highest level of individuals in a particular field is not automatically obtained as the result of long-term experience, but even very experienced individuals can improve their performance levels through deliberate efforts." (P. 366), and "The most effective study requires a specific individual to formulate appropriate difficult tasks, meaningful feedback, and the chance of repeating and correcting errors." (P. 20-21) "Cognition In Practice: Mind, Mathematics, And Culture In Everyday Life (Cognition in practice: the culture of mind, mathematics, and daily life) is an interesting reference book about this point of view. If you are willing, spend 4 years in college (or spend a few years to study graduate students). This allows you to get some work. It can make you more in-depth understanding of this area, but if you don't like to enter the school, you can also get similar experience in your work. In any case, it is not enough to learn from the book. "Computer science education will not make anyone become a programmer, just like researching brush and pigment will not let anyone become a painter", Eric raymond, "The New Hacker's Dictionary" (new hack dictionary) author is . One of the best programmers I have hired have only high school education; but he created many great software, and even discussed him himself, and the stock option made him reach the degree of richness I can't enter. Refers to the author of Jamie Zawinski, Xemacs, and Netscape Navigator. Complete the project with other programmers. Be the best programmers in some projects; in other projects is the worst one. When you are the best programmers, you have to test your ability to lead your project and encourage others through your cave. When you are the worst, you learn what your masters are doing, and what they don't like to do (because they let you do those things). Each other programmer completes the project. Understand the procedures written by others. Look at what is needed to understand and modify the program when there is no initial programmer. Think of how to design your procedure can make someone else to maintain your programs. Learn at least half of the programming language. Including a language (such as Java or C ), a language that supports functional abstract (such as LISP or ML), a language that supports syntactic abstract (eg LISP), a language that supports Declarative Specification (such as ProPog or C Modules), a language of the Corordine (such as Icon or Scheme), and a parallelism Language (such as sisal). Remember the word "computer" in the phrase "Computer Science".
Understand how long your computer executes a directive, take a word from memory (including cache hgyet summation), how long it takes from disk to read continuous data, positioning to disk How long is the new location. (The answer is here.) Attempts to participate in a language standardization work. It can be an ANSI C committee, or it can be determined that the coding style of your team is indent still 4. No matter which kind, you can learn what people like in this language, they like, and even if they can have this feeling. It has a good judgment from the language standardization work as soon as possible. Holding these ideas, I am very suspicious to learn how much things from the book. Before I was born in my first child, I finished reading all the books of "how ...", but still feeling that I am a novice. After 30 months, when I was born in the second child, did I repay those books? Do not. On the contrary, I rely on my own experience, and the result is more useful to live more than thousands of pages written in experts.
Fred brooks in his short message "
"No Silver Bullets" has established three-step planning of outstanding software designers in (no silver):
The best designer group is identified as soon as possible. Assign a business tutor responsible for the development of potential objects, carefully helping him keep your career history. Let the growing designers have the opportunity to influence each other, motivate each other.
This is actually assumed that some people themselves have the necessary potential to become outstanding designers; they must only guide them to advance.
Alan Perlis is more concise: "Everyone can be taught to sculpture; and how to teach him how to teach him how to sculpt it. Outstanding programmer is the same."
So even if you buy those Java books; you are likely to find some uses. But your life, or your true expertise as a programmer, it will not have a real change within 24 hours and 24 days or even 24 months.
references
Bloom, Benjamin (ed.)
Developing talent in Young People, Ballantine, 1985.
Brooks, fred,
NO Silver Bullets, IEEE Computer, Vol. 20, NO. 4, 1987, P. 10-19.
Hayes, John R.,
Complete Problem Solver, Lawrence Erlbaum, 1989.
Lave, Jean,
Cognition In Practice: Mind, Mathematics, And Culture In Everyday Life, Cambridge University Press, 1988.
answer
Timing of various operations, in 2001, in a typical 1GHz PC on a typical 1GHz PC:
Perform a single instruction 1 nanosecond = (1 / 1,000,000) seconds
Take a Word 2 nanose from the L1 cache
Take a Word 10 nanose from the main memory
Take a Word 200 nanose from a continuous disk location
Take a word from the new disk location 8,000,000 nanosecond = 8 milliseconds
footnote
T. CAPEY pointed out the top of Amazon "
In the page of Complete Problem Solver, "Teach Yourself Bengali In 21 Days" and "Teach yourself grammar and style" are listed in "Buy this book also bought the following books" column. I guess one of the people who look at these two books from me.
Translation
Thanks to the following authors to translate this article into other languages:
Yasushi Murakawa, Chinese (Guo Xiaogang),
Traditional Chinese (jason chen),
CARLOS RUEDA,
Stefan Ram,
French (P. E. Allary),
Turkish (çağğl uluşahin).
Peter Norvig (Copyright 2001)