因为编程有的时候不是拿现成的API就可以编出来的,有的时候必须自己造些轮子,一旦涉及到轮子,算法就是必须要涉及的了。而你了解一些算法知识的话,造轮子的时候你可以正确的描述你的需求,上网搜代码的话也可以更好的找到现成的方法。其实有很多时候,只要我们能够正确的描述问题,上 stackoverflow 或者其他地方是很容易搜到代码的,未必需要我们手写。如果只是简单的搜索你的需求往往很难找到解决方案。
Ⅱ 当一个程序员需要多好的数学
任何面向工作的功利的学习行为都可以视为一种投资,必须考虑成本和收益的tradeoff;总体来看,个人认为计算机系本科不教的数学对于绝大多数程序员来说都是没有必要熟练掌握的数学。
数学不包括算法。算法一直是属于计算机科学领域的。数据结构算法能力是程序员的核心能力之一,而且永不过时。
当程序员做开发工作,有些方向不太需要数学,有些方向需要特定类型的数学(比如游戏开发、图形学会用到大量数值工具等);解决特定问题需要学习特定类型的数学;专门做特定领域的计算机科学研究需要用到大量特定领域的数学;既然如此,那就在碰到相应问题的需求去学习对应的知识就好了,没有必要非要计较到底哪个重要(前提是你应当知道你这个方向需要什么样的知识),也没有必要仅仅是为了提高“数学基础”而盲目不加选择的去学习所有种类的数学。
Ⅲ 为什么有些工作可以用编程实现
有些工作可以用编程实现的原因如下:
1、不是每个程序员都需要搞算法的。大部分程序员不用搞算法。可能面试时会有比较简单的算法作为面试题。
2、不是每个程序员都要搞人工智能的。门槛没那么高。
3、编程是个实践课。并且不需要你记忆多好。本身网上有很多程序员自嘲,复制粘贴一把梭。就你对不懂的知识边搜边学边写代码很正常。如果你刚开始搞程序员,肯定有很多东西边查边写的,搞不定的也可以请教老程序员。等你有一定经验后,就会查的少了,简单的你都会了,天天吃饭的本事,形成了肌肉记忆,就算记忆力再差,也没关系。而且计算机方面包括很广,总有你不知道或者某些东西时间长不用记的模糊了,再搜下就知道了。而且程序员主要的也是看能力,经验丰富的是随着时间增长的,而能力或天赋是在撑握基本的工具和知识后一直伴随你一生的,是解决问题的关键,这个跟记亿力好坏没关系,即使你是最强大脑。所以你可以有意识锻炼或培养自己的能力,但天赋应该锻炼不了。但如果你在干过几年之后,你发现自己有一定的天赋,你不锻炼或培养,是不是也会泯然众人。至于你问为什么这么多人可以做程序员?那肯定是大部人是没有天赋的,只是把程序员作为一个赚钱的工具,作为一个职业。那如果一开始作为一个职业的门槛,你都干不了,那要看你是否适合干这个职业了。另外我文中提到的搞个几年后会如何。我之所以这样说,我是这样认为的:因为我们刚开始接触一门语言,调用api不熟,而且程序员是不断在解决问题,是一个不断重复先痛苦后轻松的过程。几年的时间甚至更长,了解更多的知识面,还有了解更多的语言,从表面的语法到事物的本质,理解的更为深刻。这时候你是否会明悟一些东西,如程序有问题你很容易想到是什么原因导致的,光看代码就会发现代码哪里有问题。再往上设计或创造个新语言、新框架、新插件、甚至新的操作系统,或者想出个好的IDEA写个很牛逼的东西。我所理解的能力和天赋,不是停留在表面上的如我来自某个牛逼大学,我年轻,我学某个语言很快等等。我觉得程序员到某个阶段时,一个新的语言学起来不难,只是熟练度的问题。尤其熟练两门不同语法系的语言后,学第三门语言会感觉很轻松。不同语言学习曲线不同,如golang跟rust的入门门槛是完全不同的,golang简洁强大易上手,而rust虽然更强大更安全,但语法及设计理念如借用等好多概念,导致开始入坑者要学习理解很多东西,编码也很不习惯。