10 years of programming no teacher
Original: Teach Yourself Programming in Ten Years Author:????? Peter Norvig translation:? Guo Xiaogang (foosleeper@163.net) Last Modified:? 2004-3-19 Chinese translation of this was Peter Norvig's license.
Why do everyone are in a hurry?
Walking into any bookstore, you will see "Teach? YourSelf? Java? IN? 7? Days" (7 days Java no teacher, there is a similar book, you can't see the end, they want to teach you Visual • Basic, Windows, Internet, etc., but only a few days and even hours. I have downloaded the following: pubdate:? After? 1992? And? Title:? Days? And? (Title:? Learn? Or? Title:? Teach? YourSelf) (Publish date: After 1992? And? Title: God? and? (Title: Society? Or? Title: Normal Universities)) I got 248 search results. The previous 78 is a computer book (79th is "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 the 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 what the topic like "Learn? Pascal? IN? Three? Days" (3 days Learn Pascal) is what it means:
?
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), knowing the translucent is dangerous (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 chairman, Tu Lord Award winner, 1922-1990) once said: "If a language can't affect your idea of programming, it is not worth learning." Another point of view is that sometimes you have to learn a peer 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) have shown that approximately 10 years in many areas can cultivate professional skills, including chess, composing, painting, piano, swimming, tennis, and neuropsychography and topology. Research. There seems to have no real shortcut: even Mozart, he shows that the music genius is revealed, and it still has been used for more than 13 years before he wrote world-class music. Look at another music type representative ?? Beatles, they seemed to take their heads in ED? Sullivan programs in 1964. However, in fact, they started from 1957, even if they show great appeal very early, their first real success is "sgt.?peppers" to be issued in 1967. Samuel? Johnson (translation: British poet) believes that 10? Year 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.)? 叟 叟 (注) : Chaucer, the British poet, 1340-1400) also complained: "Life is so short, the skill is so long." (The? Lyf? 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 learning requires a specific individual to formulate appropriate difficult tasks, meaningful feedback, and chances of repeating and correcting errors." (P.?20-21) "cognition?in? Practice:? Mind,? Mathematics,? And? Culture? In? EveryDay? Life (Cognition in practice: Culture of mind, mathematics, and daily life) is an interesting reference book about this 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 hacker dictionary) The author is like it. 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's author).
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 (such as LISP or ML), a support function abstraction (such as LISP or ML), a SyntActic? Abstraction Language (such as LISP), a language that supports illustrative stations (such as ProLog or C template), a language (such as ICON or Scheme), and a support parallel processing (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. Can you be an ANSI? C committee, or it is also a decision to use 2 space indentation or 4 in the coding style of your team. 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 established three-step planning of outstanding software designers in his essay "NO? Silver? Bullets" (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 NO.? 4,? 1987,? p.? 10-19.? Hayes, john? r. 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 in 2001: Perform a single instruction 1? Naosecond? =? (1/1,000,000)? Second from the L1 cache to take a Word 2? Naose from the main Take a Word 10 in memory in the memory takes a Word 200 in the continuous disk location to take a Word (Address) 8,000,000 nanoseconds from the new disk location? =? 8 milliseconds
footnote
The Japanese translation of this article is to thank Yasushi? Murakawa, Chinese translation to thank Guo Xiaogang, Spanish liteography wants to thank Carlos? Rueda, German translational Thank Stefan? RAM. T.?capey pointed out the page of "Complete? Problem? Solver" on Amazon, "Teach? YourSelf? Bengali? IN? 21? Days" and "Teach? YourSelf? Grammar? And?" Is listed in "Buy this The customer also bought the following books "column. I guess one of the people who look at these two books from me. Peter? Norvig? (CopyRight? 2001)?