Can I become a good programmer without math and algorithms knowledge?

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. 
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值