从重要性的角度出发,如果可能的话,可能的话,了解编程的最重要基础是什么。算法,迭代,递归等?
请注意,我放在哪里等是我的问题所在。我最近在互联网上看到一则帖子,说10个程序员中有9个无法喘息!
http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html
我想对自己实际上在编程时要完成的工作有深刻的了解,并对我可以使用的基本工具进行详尽的理解。基本上,我希望能够用风的所有颜色绘画。
从重要性的角度出发,如果可能的话,可能的话,了解编程的最重要基础是什么。算法,迭代,递归等?
请注意,我放在哪里等是我的问题所在。我最近在互联网上看到一则帖子,说10个程序员中有9个无法喘息!
http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html
我想对自己实际上在编程时要完成的工作有深刻的了解,并对我可以使用的基本工具进行详尽的理解。基本上,我希望能够用风的所有颜色绘画。
Answers:
此列表是一个开始...您在问一个大问题!
我在这里按照相似的方式(内容相似)回答了另一个问题:
在“ 等 ” 的标题下出现的内容很容易占用您50%或更多的时间。
了解如何调试。
这意味着学习科学方法。我的意思是真正学习。然后以残酷的自尊心来运用它。了解如何准确陈述您所知道的是真实的,您所知道的不是真实的以及您不知道的那些事情。你草率的项目分配给错误类别的任何时候,你只是做你生命中的很多困难。
学会说“我认为”而不是“我知道”。当您“认为”某件事是正确的(或错误的)时,您只会说“我知道”,然后您就可以证明它!
许多错误是微不足道的,但是很难看清,因为您“知道”代码应该是什么……除非不是。找一个朋友解释一下。要求他们成为“专家白痴”:一个不知道您的代码,但您知道的人,不能让BS过去。如果在向他们描述的过程中突然停下来说:“这样您就可以……看到……看到……谢谢。”不要感到惊讶。
不重要的错误需要大量技术。在阿拉斯加的Wolf Fence是一个可以迅速发现大多数与计时无关的错误的经典之作。阿拉斯加某处有一头狼。建造一道篱笆,将状态削减一半。狼在哪一边?切成两半。泡沫,冲洗,重复。在代码中精心选择的位置执行此操作20次,可以将错误(狼)的区域减少到1/1048576。杀死那只狼。
提示:查找handwaves -物理,心理,或任何其他形式。一旦您(或您的同事)退缩/转移/最大程度地减少了对一部分代码的关注,便会变得很疯狂。因为即使您已经花了数小时/天的时间来寻找d * mn东西,但仍然找不到它,但是您仅仅知道该bug 的区域仍然无法找到……这是该bug发生概率最高的位置。没有人得到“再见”,没有人(包括机器,操作系统,编译器或您)得到任何形式的“应有的尊重”。有个错误。期。句子结尾。现在去杀死d * mn东西。
我知道没有一所学校将调试作为自学课程。IMNSHO,这可能是他们(大学/教授)没有教您成为程序员的唯一最明显的证据,而是教您成为……的他们。苛刻?也许。真正?你自有主张。现在证明这一点。
恐怕对于任何人来说,无论是结论性还是权威性的回答,这都是一个很大的问题,尤其是考虑到您想要优先列表时。那里有很多程序员,他们从事非常不同的工作-当然,基本原理保持不变,但是保持活跃在内存中所需的内容却可能完全不同,并且确实有很多任务可以使您保持漂亮的状态。高层次而无需深入。
尽管您似乎真正地在担心如何成为一名更好的开发人员,而不仅仅是一个千篇一律的交易。我感到很佩服,可以分享一些帮助我学习编程的知识。
几乎所有的编程都归结为算法和数据结构。反过来,它们又是一个更大问题的示例-我们如何将现实世界中的事物和过程建模为计算机可以理解的表示形式。如果您只是入门,那么使用高级编程语言(如Java,Python等)可能会很有用,以熟悉实现数据结构和算法。
到了某个时候,在研究了数据结构和算法之后,您可能会开始提出一个令人讨厌的问题:“但是,从告诉计算机要做什么到实际执行计算机,我们应该如何做呢?” 然后,您可以研究计算机的实际计算方式-内存和CPU如何共同执行指令,操作系统如何抽象化硬件,以便您编写一个程序(例如,打开文件)而无需编码为特定的低级代码硬盘驱动器接口。
这可能是一个很好的起点-算法和数据结构如何模拟现实世界中的问题以及计算机如何实际执行计算。了解后者对于掌握像C这样的低级语言非常有用,C比OO和脚本语言使用的烟雾和镜像少得多:)
关于成为一名程序员,最重要的一点是,编写代码是一种磨练,而像工人一样的“蓝领”态度对待产生要付给您的酬劳的行为会使您比任何深奥的学习走得更远。
学会进入区域。我的意思是说,当您只专注于任务时,就可以保持精神状态,您可以开始将很多事情放在脑海中,以及它们如何立即互操作。一旦习惯了随意进入区域,就开始担心其余的问题。除非您可以像处理某种代码那样处理代码,否则其余的几乎没有用。
编辑:
如果您不相信这一点,并且对我投了反对票,那么我相信您不知道您是否有决心在20年内做到这一点。我知道我这样做是因为我接受这一点。;)
最近的一个问题,以某种方式与此问题相关,“ 答案” 链接到“ 此博客”,该博客从不同角度讨论了相同的问题。
对于任何开发人员来说,最重要的概念可能就是“谦虚”。一旦您接受了您并不了解的一切,您就可以探索解决方案。大多数在编程方面写博客的人都处于最高百分位,问题是许多人仍无法控制自己的自恋倾向。这就是为什么他们写博客的原因。忽略那些怨言
链接的博客实际上只不过是a之以鼻-在每个行业中,抱怨最近的毕业生毫无用处是普遍现象,要使他们变得有用和富有生产力需要花费数年的时间。也许问题在于这些自称为大师的人实际上期望过高,并且忘记了一旦他们无法解决FizzBuzz的问题。并不是每个人都可以进入前十个百分位,按照定义,一半的程序员低于平均水平……