Peter Norvig, Google Research Director: Do you want to be a programmer? Here are the successful recipes

Author's note : Peter Norvig works for Google and his position is Director of Research. Peter Norvig is a world-renowned computer scientist and artificial intelligence expert. He is a member of the AAAI and ACM, and is one of the authors of the classic book "Artificial Intelligence: Artificial Intelligence: A Modern Approach" in the industry. Prior to joining Google, he was the principal director of NASA's Computing Sciences Division and taught at the University of Southern California and Berkeley. The first half of this article is an interview with the British Guardian and talks about many areas of artificial intelligence, personal computing, and map services. In the latter part, he talked about the attitude of self-learning programming and attacked a bunch of people who wanted to make an uproar.

(via:plus.google)

Peter Norvig, Google research director, introduced his views on many areas of artificial intelligence, personal computing and mapping services. The article provides Peter with a large number of AI notes on his personal website and open video addresses. Peter Norvig does not believe that the increase in computer power will bring us to the singularity. He also believes that it will take at least 10 or 10,000 hours to learn programming.

First of all, given some of his information, the personal website is cool, there are a lot of AI notes, the most interesting is that he once wrote 21 lines in Python to complete a full-featured spell checker. Chinese translated by Eric Xu

He also had a famous speech delivered by TED: a classroom with 100,000 people and a story about his online education website, Udacity.

He has opened two free open classes in Udacity: Design of Computer Programs , Intro to Artificial Intelligence

Part 1: The Guardian interview

The Google research team brings together top talent in the industry, but it must be for everyone. If you want to start your own company or want to work in a small company, it is not for you. In addition to driverless cars, Google will not fund research on hardware.

“We still need to make choices internally. It's a lot more free here than startups: Bad decisions don’t immediately lead to bankruptcy, but you can't say, I have to do something and give me 20 engineers.” Obviously, this involves To the problem of priority, although some of the priority items sound very weird.

In the 1960s and 1970s, many major scientific and technological achievements came from Bell Labs, IBM Watson Research Center, and Xerox PARC. They all studied technologies that were not related to the core business of the company. Many of the inventions were not obtained. Business success. Peter Novig knows this very well. He mentioned a 1999 book: "Explore the Future: How Xerox Created and Then Missed the First Personal Computer."

"The book says that they are exploring the future, but they invented the future in some way," he said. "I think they've rented the future. One day people can afford a PC, but we still haven't gotten there yet, so Take out $200,000 to investigators with personal computers so you can see what the future will look like. To some extent, what we do at Google is the same." Such as driverless cars, smart glasses, or use 10,000 computers to examine 10 million pictures to identify cat faces.

Unlike those research centers mentioned above, Google's research is closely linked to the company's other businesses . "In some ways, we do things like Intel, where the research team will try to start new businesses. If they do something, but others get more profits from new businesses, they don't worry about it. As long as the industry still buys Intel’s chips, so does ours—if we invent new things, even if we don’t own it, as long as it allows two people to start using the Internet, it’s possible that one person will become our user. If we start a new industry, it will be a success for us."

Driverless cars and smart glasses are such products. “We see them as an extension of the advantages—cars are an extension of map capabilities. Similarly, glasses are an extension of communications and local services.”

During the career of Peter Norvig, artificial intelligence was an important direction. From the mid-1980s, he began to study probabilistic reasoning and uncertainty. This involves Bayesian theory. At the time, in the field of artificial intelligence, the idea of ​​the 18th century mathematician was still full of doubts. However, with the development of computers, his theory has been widely used. Peter Norvig said that building a usable system is the best way to convince others.

He mentioned Google Translate. This service is not developed by linguists. The process of computer learning languages ​​is completely different from that of human beings. It uses a vast Internet and learns from a large number of translation documents to match different languages. This is similar to Google's use of tens of thousands of computers to identify cats, which belongs to pattern recognition.

Peter Norvig does not believe that the enhancement of computer power will take us to singularity, the moment when artificial intelligence catches up with human intelligence. His reason for supporting the Singular Institute is because he thinks everything will accelerate change and it will change society. People should realize this, but "My biggest concern is that people are too concerned about a specific date." We are not at a special time. "We are creating new things, but compared with the past, what we did today is not different."

The progress of science and technology has not changed the relationship between people and machines. "I am more resistant to intelligence that can expand my ideas infinitely. Intelligence can help you solve more difficult problems, but some problems are resistant to intelligence, and you will reach such a point Smart is not going to help you. I think many of our problems are like this. It's like politics - we don't say that if we have a smarter politician, we can solve all the problems."

Do people overestimate the value of intelligence? In response, Peter Norvig said, “Kevin Kelly discussed this issue with me; he referred to this as 'Intelligentism' – a prejudice that intelligence is the only important characteristic. We think intelligence is important and call it The race, but if we are elephants, maybe we would like to get super power, or if we are cheetahs, we would like to get super speed. Some social problems are difficult because they are like that, it is not after we are smart enough It can be solved."

Part 2: Self-Study for 10 Years

Feel free to step into a bookstore full of fast-track titles such as "7 Days to Get Java Programming". Compared to computer technology books that are so "quick", in other areas of books, you find it difficult to find things like: "Three days Learn Beethoven, or "five days to engage in quantitative mechanics," this accelerated textbook, and even the "dog feeding manual" this pet guide, there is little "to get a few days" argument. Felleisen et al. clearly pointed out this "fast-paced" trend in their book "How to Design a Program" and commented: "Garbage programming techniques are of course very easy and fools can learn within 21 days. Even if he was born an idiot."

Let's take a closer look at what the "3 Days Learn C++" quick tutorial actually means:

learn

You don't have much time to write any meaningful program in 3 days, let alone talk about learning and learning from programming. You also cannot have the time to work and communicate with experienced programmers, nor do you experience the feeling of working in a real C++ environment. To make a long story short, you just don't have time, and you can't learn anything. So this kind of book will at best give you a superficial impression, but it is absolutely impossible to have a deep understanding. As Alexander Pope said, "it is very dangerous to try something."

C++

If you have the basics of other programming languages, you may be able to learn some C++ syntax within 3 days, but even so, you still have no way of knowing how to program in that language. In short, if you were previously a Basic programmer, after three days of study, you will become a "programmer who can write Basic style programs using C++ syntax", but this is not an advantage of the C++ language itself. (Say what's wrong, you don't even make typical mistakes in C++.)

Just knowing a little grammar means what? Allan Perlis once said: “ A programming language that cannot change your way of thinking is not worth learning. ” Another possibility is that you can only learn a little bit of C++ knowledge (similar, or a little JavaScript, or a With little Flex Script, you can use existing tools to create application interfaces and complete specific programming tasks. However, such behavior does not mean that you will "program". You just use this tool to complete the task.

3 days: unfortunately, 3 days is not enough, you will know by looking down.

A series of investigations by researchers (Bloom (1985), Bryan & Harter (1899, see bibliography), Hayes (1989), Simmon & Chase (1973, see bibliography) shows that in various fields, Approximately 10 years of effort are required to obtain a professional level.Fields involved in this survey include: chess, composing, transmitting, drawing, piano playing, swimming, tennis, etc. Scientists from neuropsychology and topology From the perspective of science, we study these fields and draw conclusions. To achieve an expert-level level in a certain area, the key lies in “prudentially repeating”, that is, not mechanically, practicing over and over again. Instead, they must constantly challenge themselves, try to exceed their current level, try to challenge them through continuous trials, and analyze and summarize their own performance in the process of trying and trying, learn from experience, and correct various types of crimes that have been committed before. Wrong: To repeat this "prudent" process in order to achieve success.

The so-called “shortcut” does not exist, and even for Mozart’s genius, there is no shortcut. Even though he started composing at the age of 4, it took him 13 years to really write a world class. s work. As another example, The Beatles, they seem to have made a hit in 1964 with a series of hit singles and their performances at The Ed Sullivan show, but you may not know They performed small-scale performances in Liverpool and Hamburg as early as 1957, and before that there were countless unofficial shows. The Beatles’ main hit song "Sgt. Peppers" was released in 1967. Malcolm Gladwell published his report on a study by the Berlin Conservatory of Music that compares students in a class with three grades of upper, middle and lower grades, and asks them time for music practice one by one.

All of these three grades started practicing music about the age of five. At the beginning, everyone practiced music for about the same time, about two to three hours a week. However, around the age of eight, the difference between everyone began to manifest. The students who later became the best part of the class began to practise more than other students, about 6 to 9 hours per week, 8 hours per week at 12 years old, 16 hours per week at 14 years old, and later More and more, until around the age of 20, they have been practicing music for more than 30 hours a week. At the age of 20, elite level performers have accumulated more than 10,000 hours of music practice time. In contrast, only some of the top students can achieve a total of 8,000 hours of accumulated practice time, while those music teacher-level students, their accumulated practice time is only about 4000 hours.

So, maybe this magical time for you to reach the professional level should be 10,000 hours instead of 10 years . (Henri Cartier-Bresson (1908-2004) said, "(As a photographer), the first 10,000 photos you took were trashed.) Even if it was a garbage work, it would take him close to an hour to take a photo. Samuel Johnson (1709-1784) thinks this time should be longer: "If you want to do superbly in any area, you will certainly exhaust your life's energy, otherwise you will not be able to reach it." Chaucer (1340-1400) also issued " Life is so short and the skills are so profound." Hippocrates (c. 400BC) was praised for writing the following sentence: "ars longa, vita brevis", which was derived from a longer citation: "Ars longa, vita brevis, occasio praeceps, experimentum periculosum, “iudicium difficile”, translated into English is: “Life is short, but the skills are very deep, the opportunity is fleeting, exploration is elusive, choices are difficult”. This passage is written in Latin. In Latin, ars can be translated as "craft" or "art", but in ancient Greek, ars can only do "skills" and not "art".

Do you want to be a programmer?

Here are my programmers' successful recipes:

Indulge in programming, programming is for interest. Keep this feeling of interest so that you can put it into your 10-year/10000-hour programming time.

The best way to learn the program is to learn in practice.

More technically speaking, “A person can achieve the highest level in a professional field. It is not because the person’s experience has grown since it was automatically acquired, but because this person has made a dedicated effort to progress. Results (p. 366) “The most effective learning includes the following elements: clear and difficult tasks, adapting to learners’ personal circumstances, timely information feedback, and opportunities to restart and correct mistakes” (p. 20 -21) The book “Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life”

Communicate with other programmers and read other people's programs. These are far more important than reading books or taking classes

If you want to, choose to read a computer science major (of course you can also go to read this professional graduate student).

If you can do this, then you will have the opportunity to find jobs that require computer degree certification and will give you a deeper understanding of the industry. However, if you are not expected to go to school, then you can (of course, with enough perseverance) learn on your own, or gain experience through work. No matter which way you use, light is not enough to rely on books. "If you can't create top-notch painters just by learning oil painting and color grading techniques, then the light-learning computer science curriculum can't create top-notch programmers." Eric Raymond said that he was the author of The New Hacker Dictionary. book. The best programmer I ever hired was only a high school diploma; he wrote a lot of great software, he had his own newsgroup, and he made enough money through his shareholdings and opened his own nightclub. (The author is referring to Jamie Zawinski, who was one of the early developers of Netscape and a major contributor to the open source Mozilla and XEmacs. He started a nightclub called DNA_lounge in San Francisco. SoMa District - Translator's Note)

Do projects with other programmers.

Try to be the best in some projects, but not in some projects. When you are the best, your leadership skills will be exercised and will inspire you to have a farsighted vision. When you don’t do well, you can know what your leaders do and what they don’t like (because the leaders always throw those chores they don’t like to do to people they don’t think are powerful)

Follow other programmers try to do the project together, try to understand the code written by other people.

See if you can't find the author of the code yourself, understand the cost of the code he needs to write and fix it. Also think about how to plan your own program code to make it easier for others to understand and maintain.

Learn at least half a dozen programming languages.

Including a language that supports class abstraction (such as Java or C++), a language that supports function abstraction (such as Lisp or ML), a language that supports syntax abstraction (such as Lisp), and a language that supports declarative programming ( Eg Prolog or C++ templates, a language that supports coroutines (eg Icon or Scheme), a language that supports parallel concurrent programming (eg Sial)

Keep in mind that "computer science" contains the word "computer."

Understand how long it takes for a computer to execute an instruction and how long it takes to get a word (including cache hits and misses) from memory. If you continuously retrieve data from disk, how long does it take? And how long does it take to reposition a new location on the disk?

Try to participate in the language standardization process.

To be large, you can try to join a professional organization such as the ANSI C++ committee. To be small, you can also start with your own code specification. The limitation of code indentation requires 2 spaces or 4 spaces. Either way, you need to understand what other people like about the language and how they like it. You even want to know why they have such a preference.

Have good awareness and can adapt to the results of language standardization as soon as possible.

To grasp all the above, it is difficult to do it by reading books.

When my first child was born, I almost read all the "How To..." books on the market, but after I finished reading I still felt like a rookie.

After 30 months, when my second child was born soon, would I still have to make a bookworm? Do not! On the contrary, I rely more on my personal experience at this time. These experiences are more effective and reassuring than those of thousands of pages of books.

Lei Feng network (search "Lei Feng network" public number attention) by: The author of this article Dong Fei, data scientist, public number: Dong teacher in Silicon Valley. Reproduced, please contact the authorizing and retain the source and author, may not delete the content.

Posted on