Can I become a good programmer without math and algorithms knowledge?
来源:互联网 发布:南洋华人 知乎 编辑:程序博客网 时间:2024/06/05 04:54
To explain why, I'm gonna assume you have little to no programming background and try to use an analogy. I apologise in advance if this answer becomes long.
Say you wanted to build a small toy house with a kid. You buy some lego bricks and you two work piling bricks in such a way that the end result looks
like a house. You are happy and the kid is happy. The toy house stands on
its own for a while, since lego bricks are lightweight and basically indestructible.
Now say you want a real house. One in which you can live with your family. Would you rely on a house which was build the same way, using no
engineering knowledge whatsoever to guarantee its safety? I'd argue most sane people on earth would not.
Programming without a good background in algorithms and math is akin to building the toy house out of lego. You may get pretty good at it with practice. You may even start noticing patterns with time, such as the fact that some arrangements of lego pieces lead to better results. Still, it will be next to impossible to make statements regarding it such as: "this can handle up to X kg" or "this house is safe to live in" or "we could build one of these out of cement and it would stand on its own".
Worse, the gap in reliability between the two approaches to house building grows larger the more complex the project. Building a small cabin like kids build toy houses out of lego might work, but its very unlikely that a huge bridge made following that same approach would stand. Similarly, simpler tasks such as writing a small website will be feasible for a team or programmers without a background in math and algorithms, whereas keeping something as big as amazon or google working will be next to impossible.
The idea that math and algorithms are not important is not uncommon among undergrads or even among experienced programmers. I used to think like that years ago myself. Then I got into college and started learning algorithms and mathematics and probability and so on. I even trained for ICPC, which is a competition amongst undegraduate programers that requires quite a bit of knowledge in these fields.
The end result of that process is that now I can write better code in less time. I am also capable of writing code for tasks I had no clue how a computer could perform years ago. And I know how to analyse code so that I have a good idea on how it will perform when executed. In summary, I am orders of magnitude better than I used to be in many different ways.
Finally, I'd like to add something regarding the idea that you learn basic algorithms to be able to do pattern matching. By that, I mean being able to recognize when these algorithms are needed and then use them unchanged. That idea is plain wrong. While knowing which algorithm to employ is a valuable skill, the main reason why one should study these things is to learn how to think and solve new problems.
Say you wanted to build a small toy house with a kid. You buy some lego bricks and you two work piling bricks in such a way that the end result looks
like a house. You are happy and the kid is happy. The toy house stands on
its own for a while, since lego bricks are lightweight and basically indestructible.
Now say you want a real house. One in which you can live with your family. Would you rely on a house which was build the same way, using no
engineering knowledge whatsoever to guarantee its safety? I'd argue most sane people on earth would not.
Programming without a good background in algorithms and math is akin to building the toy house out of lego. You may get pretty good at it with practice. You may even start noticing patterns with time, such as the fact that some arrangements of lego pieces lead to better results. Still, it will be next to impossible to make statements regarding it such as: "this can handle up to X kg" or "this house is safe to live in" or "we could build one of these out of cement and it would stand on its own".
Worse, the gap in reliability between the two approaches to house building grows larger the more complex the project. Building a small cabin like kids build toy houses out of lego might work, but its very unlikely that a huge bridge made following that same approach would stand. Similarly, simpler tasks such as writing a small website will be feasible for a team or programmers without a background in math and algorithms, whereas keeping something as big as amazon or google working will be next to impossible.
The idea that math and algorithms are not important is not uncommon among undergrads or even among experienced programmers. I used to think like that years ago myself. Then I got into college and started learning algorithms and mathematics and probability and so on. I even trained for ICPC, which is a competition amongst undegraduate programers that requires quite a bit of knowledge in these fields.
The end result of that process is that now I can write better code in less time. I am also capable of writing code for tasks I had no clue how a computer could perform years ago. And I know how to analyse code so that I have a good idea on how it will perform when executed. In summary, I am orders of magnitude better than I used to be in many different ways.
Finally, I'd like to add something regarding the idea that you learn basic algorithms to be able to do pattern matching. By that, I mean being able to recognize when these algorithms are needed and then use them unchanged. That idea is plain wrong. While knowing which algorithm to employ is a valuable skill, the main reason why one should study these things is to learn how to think and solve new problems.
2 0
- Can I become a good programmer without math and algorithms knowledge?
- Can I become a good programmer without math and algorithms knowledge?
- How To Become a good Programmer?[摘]
- Become a Good Programmer in Six Really Hard Steps
- How to become a programmer
- Take a lifetime to be a good (and happy) programmer
- what should you be as a programmer?To be the last one and become experienced!
- How to become a better programmer
- How to become a proficient Python programmer
- How to become a proficient Python programmer
- To be a good programmer
- What makes a good programmer
- What Makes a Good Programmer Good?
- How can I start a VM without getting a window?
- How to become a good DBA?
- How can I become data scientist?FAQ
- how to become a data scientist - see knowledge graph
- I would become a real dramer,not a day dreamer and night dreamer
- java高级之类反射
- apache下设置缓存方法详细介绍
- iOS Today Extension/widget编程小记
- Howto: Make Your Own Cert With OpenSSL
- 百度最新面试题集锦
- Can I become a good programmer without math and algorithms knowledge?
- Processing 教程(0): Get started!
- SQL Server 2008 R2创建定期自动备份任务
- 2014ACM-ICPC亚洲区域西安赛区 G题 / GYM 100548 G
- System V 信号灯
- JSON 入门
- iwi的模板
- Intellij idea 中 JUnit 的简单配置
- 求余数