English Original: Don ' t Learn to code, learn to think
Translation/Rai Shintao
This is a time when everyone is learning to program: Code.org The celebrities such as Bill Gates, Mark Zuckerberg and Chris Bosh to tell you that everyone can program, CoderDojo's in every country, and in the UK, programming is a formal course for students of all grades.
I think there is a misunderstanding here. Don't get me wrong--if everyone gets some programming knowledge, the world will certainly be better--but learning to write code shouldn't be our goal. Computers and programs are just a tool, a way to achieve a certain purpose.
The real goal should be to learn how to think. In other words, we should try to teach computer science instead of teaching writing code. In this article, I'll explain the difference between the two, and why the latter is the key to success in the next school programming wave.
If you like the explanation of the video, I highly recommend Simon Peyton Jones's ted,teaching Creative computer science. This coincides with the argument in this article.
After reading, still want to see the text version? Good. Let's start with a key question: Why do you want to learn programming or computer science?
Before we answer this question, we'll sell a xiaoguanzi.
Welcome to the real world.
Now, you may be using Chrome or a Firefox browser to read this article, running a laptop or desktop computer on a Windows or OS X operating system. I guess you spent some time today checking emails, swiping Facebook, or watching videos on YouTube. Nowadays, people's lives depend more and more on computers: medical records are stored in databases, resumes are placed on LinkedIn, Google or Facebook is used to promote your products, Amazon is used to buy things, online tax is reported, online management of your bank's accounts, and even bitcoin is involved.
Now, remove your eyes from the screen: in your pocket, bag, or next to the table, there may be a smartphone. It is equipped with GPS, camera, touch screen, and thousands of applications. If you are in the living room now, you may also have a networked LCD TV, a Dvr,dvd player, an apple Tv,xbox, or a PlayStation. The movies you watch every day, the music you listen to, the games you play, are encapsulated in these device graphics cards and sound cards.
Software is seizing the world, but it's just the beginning. Unconsciously, you wear all kinds of wearable devices, use a computer to lock the door, use robots to transport goods, clean the room. Have your own electronics, run your own production plant, live in a virtual world, travel by auto-driving cars, and even fly to space.
Code everywhere
There is no doubt that the source of the technology I have described above is software. Every aspect of your life is surrounded by code. A lot of code will make the future better.
However, just being a technology is generally not a good reason for you to learn it in school. It's like we're flying, but the pilot's license is not in the kindergarten to Grade 12 course.
However, the principle of flight is part of the curriculum:
- Physics and mathematics let you know about gravity, elastic components, pressure, speed, friction, and climbing.
- Biology allows you to understand the human body in high altitude, low oxygen, extreme cold and other circumstances of the reaction.
- History explains the invention, evolution, and the role it plays in travel, business, and war.
When you graduate from high school, you already know what a plane is, how it works, and how to fly safely. General courses, such as physics, mathematics, history, teach you how to think about all kinds of problems, including airplanes; In contrast, you are taught a course of tools, like teaching you how to drive a particular type of airplane.
What is computer science?
Computer science is a subject of research and computation: that is, how to express and process information. Here are some of the concepts you'll learn:
- solve the problem : You will learn the algorithms--that is, some common methods, such as divide and conquer algorithms, recursion, genetic algorithms, greedy algorithms--to help you model, decompose, solve a variety of problems.
- Logic : You will begin to use sophisticated and formal methods to think about problems, such as abstraction, logical algebra, number theory, and set theory, to solve problems with rigorous logic.
- Data : You will be exposed to information theory and begin to think about what is the message? How to express? How to model the real world?
- system : How to design and build a complex system to achieve a range of requirements? Systems engineering is an important topic that is involved in almost every field.
- thinking : The best way to understand the human brain is to try to replicate it. Topics such as artificial intelligence, machine learning, computer vision, and natural language processing are not only in the field of computer science, but also in the forefront of mathematics, biology, physics, and philosophy.
Note that the above list does not refer to code or programming because they are just tools for computing: They are not computer science in themselves.
Computer science is not about the science of computers, just as astronomy is not about the science of telescopes, biology is not about microscopes, and skiing is not about beakers and test tubes. Science is not a research tool. --michael Fellows and Parberry
What is programming?
Programming, or writing code, is instructing the computer to execute which instructions. If you have never written code, you may also interact with your computer by manipulating your application. Internally, the application is also code to tell the computer what to display, where to retrieve the data, and what to respond to your click.
All programming is based on the principles of computer science discussed above. It is worth noting that the same set of concepts-logic, algorithms, data, systems engineering-can be used to build any software, as small as you now read this article with this browser, big to the plane of automatic driving software. Although it involves some knowledge of mathematics and architecture, it is a very creative activity: You turn your ideas into reality, one line of code at a time.
Programming as part of learning computer science has the following benefits:
- DIY: If you are programmed, you can make something. You can start with the simplest: make a script that can rename the photos in bulk, or write an Excel formula to help you calculate the tax; Then, start a fever level: write a browser for your own file system, make an app for your company, or write a game that you can play with your friends.
- Problem Solving : Once you've made a few apps, it's much easier to figure out the rest. Once you're no longer afraid of computers-the uncharted realms-you'll be a technology man. As technology has been linked to every part of our lives, mastering them becomes as important as learning to read.
- Career : Our goal in computer science is not to become a professional programmer. We all learned math, physics, chemistry, but we didn't all become experts in this field. However, if you are passionate about this, software engineers are a highly rated, highly paid, and fast-moving career.
Comprehensive consideration
Brief recap:
- Computer science is a new way of thinking. In this age of technology, the concepts are very helpful to everyone.
- Programming is an important part of learning computer science to realize these new ways of thinking. However, programming itself is not a goal.
Confusing these two ideas has led to some problems in the circle of learning the programming craze now. Slate published an article, "Maybe not everyone needs to learn programming," Atlantic wrote a "journalism school should ask reporters to write code?" No, Jeff Atwood wrote, "Please don't learn to write code," which raises an incisive question:
"If Michael Bloomberg (Mayor New York, the translator) is a professional Java programmer, can he better lead a big city in America?" ”
Of course, this is a wrong way of asking. This means that the goal of these activities is to learn the code, not to learn how to think. If a seasoned programmer like Jeff Atwood is mistaken, the average person is more confused. The question should be asked like this:
Can Michael Bloomberg (or someone else) work better if they are trained to improve their abilities by learning how to solve the problem and to train rigorous logic?
I believe that the answer is obvious. And with the development of science and technology, the answer will become clearer. That's why we have to focus our teaching on computer science, not code.
How do I get started?
The good news is that you don't have to wait for code.org to announce that you've started studying computer science. In fact, this is one of the easiest subjects to learn, and you only need a computer and a network cable. I think you are reading this article now, so it is possible that you have both.
Here, share some good resources:
University Courses
- Coursera
- Udacity
- MIT OpenCourseWare
- Stanford Engineering Everywhere
- Academic Earth
Online Tutorials
- Khan Academy
- Treehouse
- MIT Scratch
- Codecademy
- Code School
Communities and clubs
- CoderDojo
- Girls who Code
- Girl Develop It
- Code.org
- Coding Meetup Groups
Http://kb.cnblogs.com/page/208800/
Don't learn code, learn to think (turn)