成为优秀码农的十二项自我修养
2019/9/30 10:15:33
 
 
业界有着这样一个普遍的误解:要成为一名优秀的程序员,就必须掌握许多种编程语言和工具。实际情况是这样吗?也许下面给出的十二条建议会让您或多或少地改变对此的认同感。1.研究数据结构
计算机科学家Niklaus Wirth曾经有过一个著名论断:“数据结构+算法=程序”。可见,数据结构是计算机程序的基础,它们就像构造房屋的砖头一样。实际上,数据结构决定了程序将如何快速有效地解决问题。一旦使用了正确的数据结构,您的程序方案会变得既简单,又省时。
那么,我们该如何研究数据结构呢?  首先,选择一本好书,以理解并掌握有关如何设计和执行数据结构。在此,我推荐Narasimha Karumanchi撰写的《轻松实现数据结构和算法》(Data Structures and Algorithms Made Easy,https://amzn.to/34DxomJ)一书。这是C/C++版本的,您也可以通过链接:https://amzn.to/2NZ3W4E,找到其对应的Java版本。 其次,尝试从头开始实现一些数据结构,例如:列表、堆栈和队列。您不仅可以深刻地理解到它们的工作原理,而且还能够通过“重新发明”这些数据结构来提高编程的技能。 第三,试用那些由自己常用的编程语言所提供的内置数据结构(如果是Java,则对应的是Collections框架)。例如:使用不同的列表,通过索引来快速访问各种元素;将集合用于元素的随机排列;使用队列进行producer-consumer的处理等。 第四,在编写代码之前,请认真思考并选择出最适合于解决问题的数据结构。当然,您不必重复造轮子,请尽量利用当前编程语言所提供的现有数据结构。 
2.学习算法
如果说数据结构抽象出了问题的输入和输出的话,那么算法则决定了系统该如何解决问题。优秀的程序员一般都能善于使用经过实际检验的算法、并编写出新的算法。
由于算法不仅需要良好的逻辑思维,而且需要一定的数学能力,因此它是编程中最难学习的部分之一。如果您能够灵活运用自己擅长的各种算法,那么您将很容易从编程人群中脱颖而出。
不过,好消息是:您不必从头开始发明各种算法,只需要学习和使用那些经过实际检验的实用算法便可。我建议您至少对如下基本算法有一定的了解:排序(快速排序、合并排序等),二进制搜索,递归,图检索,greedy,密码学相关基础知识,以及复杂的big O表示法。
那么,我们应该如何学习算法呢?除了上述提到的数​​据结构书籍之外,我建议您通过选读《算法简介》(Introduction to Algorithms,https://amzn.to/2NWOoyw)一书,以获取相关的概念,并从头开始实现那些热门的算法。通常,您可以试着通过自行编程来模拟算法的运作原理。例如,您可以编写一个程序,以可视化的方式显示快速排序算法的工作方式。籍此,您不但可以学到许多相关概念,并且能够大幅提高自己的编码技能。
3.研究设计模式
虽说编程就是为问题寻找的某种解决方案,但是方案本身也可能会面临各种问题与挑战。例如,我们往往需要更好的性能、更灵活的设计、更可靠的体系结构、更少的错误、以及更少的潜在瓶颈。因此,设计模式是解决在软件设计中各种常见问题的一种行之有效的解决方法。
要成为一名优秀的程序员,您应该能够将恰当的设计模式应用到程序的技术实现上。那么我们应该如何学习设计模式呢?在此,我建议您从著名的设计类书籍:《设计模式:可重用的面向对象软件的要素(C/C ++实现)》(Design Patterns: Elements of Reusable Object-Oriented Software,https://amzn.to/2Q6B2Cy)入手。如果您经常使用的是Java的话,我建议您阅读《深入浅出设计模式》(Head First Design Patterns,https://amzn.to/2LtXu44)。通过学习,您可以迅速地掌握各种基础的设计模式,其中包括factory、builder、strategy、command、template、fac

下一页
返回列表
返回首页
©2025 人工智能世界_专注人工智能领域,汇集人工智能技术资料 电脑版
Powered by iwms