取消
显示结果 
搜索替代 
您的意思是: 
cancel
公告

December 2020

December 2020

【原创】成为优秀码农的十二项自我修养(1)

764
查看次数
0
有帮助
1
评论

引言:业界有着这样一个普遍的误解:要成为一名优秀的程序员,就必须掌握许多种编程语言和工具。实际情况是这样吗?也许本文给出的十二条建议会让您或多或少地改变对此的认同感。

业界有着这样一个普遍的误解:要成为一名优秀的程序员,就必须掌握许多种编程语言和工具。实际情况是这样吗?也许下面给出的十二条建议会让您或多或少地改变对此的认同感。
1.研究数据结构
计算机科学家Niklaus Wirth曾经有过一个著名论断:“数据结构+算法=程序”。可见,数据结构是计算机程序的基础,它们就像构造房屋的砖头一样。实际上,数据结构决定了程序将如何快速有效地解决问题。一旦使用了正确的数据结构,您的程序方案会变得既简单,又省时。
那么,我们该如何研究数据结构呢?
· 首先,选择一本好书,以理解并掌握有关如何设计和执行数据结构。在此,我推荐Narasimha Karumanchi撰写的《轻松实现数据结构和算法》(Data Structures and Algorithms Made Easyhttps://amzn.to/34DxomJ)一书。这是C/C++版本的,您也可以通过链接:https://amzn.to/2NZ3W4E,找到其对应的Java版本。
· 其次,尝试从头开始实现一些数据结构,例如:列表、堆栈和队列。您不仅可以深刻地理解到它们的工作原理,而且还能够通过“重新发明”这些数据结构来提高编程的技能。
· 第三,试用那些由自己常用的编程语言所提供的内置数据结构(如果是Java,则对应的是Collections框架)。例如:使用不同的列表,通过索引来快速访问各种元素;将集合用于元素的随机排列;使用队列进行producer-consumer的处理等。
· 第四,在编写代码之前,请认真思考并选择出最适合于解决问题的数据结构。当然,您不必重复造轮子,请尽量利用当前编程语言所提供的现有数据结构。
2.学习算法
如果说数据结构抽象出了问题的输入和输出的话,那么算法则决定了系统该如何解决问题。优秀的程序员一般都能善于使用经过实际检验的算法、并编写出新的算法。
由于算法不仅需要良好的逻辑思维,而且需要一定的数学能力,因此它是编程中最难学习的部分之一。如果您能够灵活运用自己擅长的各种算法,那么您将很容易从编程人群中脱颖而出。
不过,好消息是:您不必从头开始发明各种算法,只需要学习和使用那些经过实际检验的实用算法便可。我建议您至少对如下基本算法有一定的了解:排序(快速排序、合并排序等),二进制搜索,递归,图检索,greedy,密码学相关基础知识,以及复杂的big O表示法。
那么,我们应该如何学习算法呢?除了上述提到的数​​据结构书籍之外,我建议您通过选读《算法简介》(Introduction to Algorithmshttps://amzn.to/2NWOoyw)一书,以获取相关的概念,并从头开始实现那些热门的算法。通常,您可以试着通过自行编程来模拟算法的运作原理。例如,您可以编写一个程序,以可视化的方式显示快速排序算法的工作方式。籍此,您不但可以学到许多相关概念,并且能够大幅提高自己的编码技能。
3.研究设计模式
虽说编程就是为问题寻找的某种解决方案,但是方案本身也可能会面临各种问题与挑战。例如,我们往往需要更好的性能、更灵活的设计、更可靠的体系结构、更少的错误、以及更少的潜在瓶颈。因此,设计模式是解决在软件设计中各种常见问题的一种行之有效的解决方法。
要成为一名优秀的程序员,您应该能够将恰当的设计模式应用到程序的技术实现上。那么我们应该如何学习设计模式呢?在此,我建议您从著名的设计类书籍:《设计模式:可重用的面向对象软件的要素(C/C ++实现)》(Design Patterns: Elements of Reusable Object-Oriented Softwarehttps://amzn.to/2Q6B2Cy)入手。如果您经常使用的是Java的话,我建议您阅读《深入浅出设计模式》(Head First Design Patternshttps://amzn.to/2LtXu44)。通过学习,您可以迅速地掌握各种基础的设计模式,其中包括factorybuilderstrategycommandtemplatefaçadevisitorsingleton
当然,这是一个反复的过程,您只有通过阅读案例,研究设计模式,编写各种代码,测试不同的模式,才能真正理解并自信地将自己的设计模式应用到程序之中。
4.读书
您会坚持每年阅读几本编程书籍吗?如果您的答案是少于三本的话,那么您该适当地反省一下了。毕竟,那些优秀的程序员都会表现出对新知识的如饥似渴。因此,我建议您每年至少阅读五本书。这些书籍不但是过往经验的集合,而且能够拓宽您的视野,帮助您更快地获取新知,以及向您展示如何以正确的方式实现软件与产品的功能。
那么,我们应该阅读哪些书籍呢?我推荐您从如下的必读书目开始:
· 程序员修炼之道(The Pragmatic Programmerhttps://amzn.to/2Q6NUso
· 代码大全(Code Completehttps://amzn.to/2IhRA4f
· 程序员职业规划之道(The Passionate Programmerhttps://amzn.to/2NXF0uz
· 软件工艺(Software Craftmanshiphttps://amzn.to/2Lv7kTv
而对于Java编程爱好者而言,《Java 高效编程》(Effective Javahttps://amzn.to/2Q82yzr)也是必读书目。择日不如撞日,咱们现在就开始规划一年内需要阅读的书籍吧。
不过,您在阅读时请记住如下两点:
· 不必从头到尾地读一本书。这样您可能没有足够的时间和耐心。请试着采用一种明智的方式:首先只阅读您需要的内容,然后在有时间的情况下阅读其他的部分。例如,如果您需要应用Strategy模式,则应当重点阅读涉及到该模式的章节;而如果您需要编写servlet,则请关注servlet的相关章节。
· 请认真做好笔记与练习,好脑筋不如烂笔头,这样会加深您的阅读印象与效果。
评论
Tiandao
Beginner
这个太厉害了,网工小白表示天书级别!
不能显示该小部件。