我应该如何成为编程方面的杰出学生?

1.决定为什么要成为一名优秀的程序员:是因为您想要一份工作,最好是在高薪软件公司工作吗? 大。 然后,您将设置为NOWHERE。 我认识的所有优秀程序员都很好,因为他们喜欢所做的事情。 对编程产生兴趣。 可以看到,编程是工程学中唯一可以直接应用所学知识的分支。 您的父亲可能有汽车,但他当然不会允许您调整V2或将其换成v6只是为了看看会发生什么。 但是使用计算机,您可以做任何您想做的事情。 您想模拟病毒吗? 凉。 安装虚拟操作系统并运行它。 然后,完成后,卸下虚拟硬盘。 如果您擅长于自己的工作,那么您将获得报酬,并且一定会获得理想的工作。 是的,甚至我也想在大型软件公司工作。 但这并不是因为工资丰厚。 这是因为他们所做的工作。 由于有暴露,我将拥有。 您是否曾经费心找出所有这些公司的工作以及其产品背后的支持技术或他们进行的研发类型? 工作会来的。 不要让自己成为一个傻瓜。 萨钦(Sachin)今天不是一个伟大的板球运动员,因为他决定打板球来赚钱并获得数十种职业技能。

2.编程语言:人们常常将良好的编码技能等同于已知的编程语言。 那真是太不真实了。 知道很多编程语言是好的,有时甚至是必不可少的。 更重要的是,您非常了解一两种语言。 我“知道”并且已经使用了十多种编程语言,但是C和Java是我真正适应的语言。 那真是可悲。 我真的想也擅长于Assembly和Lisp。 从来没有时间或机会来发展这些技能。 精通一种语言需要花费数年(至少2年)。 精通一种语言意味着,您会了解哪种语言最适合使用,哪种语言毫无意义。 另一方面,了解一种语言需要3天到一周的时间。 如果您是初学者,请先学习C。 不要购买Yashawant Kanetkar。 购买Brian W Kernighan和Dennis M Ritchie的书“ The C Programming Language”(如果您不知道他们是谁,请执行此操作1.自己打耳光2.用他们的名字叫Google)。 这本书不是最容易的,但是是最好的。 它是一本小书,但是它是最强大的。 一代又一代的程序员已经开始使用它了。 而且,如果您认为这本书对您来说很艰难,请不要怀any任何想成为一名优秀程序员的愿望,也不要通过进一步阅读本文而浪费您的时间。 编程是一门艺术(不是一门科学。是的,您正确地阅读了它),就像任何艺术一样,它也需要艰苦的努力。

有人建议Python是要学习的第一门语言。 Python当然是一门好语言,也很容易。 但是您将不得不主要依靠互联网来寻求帮助,因为周围的人并不了解Python。 在所有编程语言中,C的用法也最广泛。 另外,请不要使用TurboC。它太老了。 使用GCC。 如果您使用Windows,请下载Dev C ++。 它有海湾合作委员会

阅读彼得·诺维格(Peter Norvig)的这篇(小型)文章,教自己编程10年。 再次,执行Google []搜索并找出谁是Peter Norvig。

3.算法:任何优秀的程序员都对算法有很好的理解。 您不必完全了解每个算法(实际上,优秀的程序员永远不会死记硬背),但是您必须了解何时使用什么。 算法将拓宽您的理解范围,并为您提供解决问题的新方法。 另一个重要的事情是数据结构。 它比算法更重要。 一旦选择(或开发)了正确的数据结构,该算法就变得显而易见。 对于算法,请阅读Thomas H Cormen等人的“算法简介”一书。 您还可以参考Andy Tanenbaum的“ C和C ++中的数据结构”。 另外,如果您希望参加编码竞赛(受人尊敬的竞赛),则必须使用Donald E Knuth撰写的“编程艺术I至V”。 也可能是唐纳德·克努思(Donald Knuth)的“具体数学”。 再读一次并不意味着要记住一切。 只是尝试并了解所写内容。

4.编码竞赛:编码竞赛有利于提高算法能力,并且可以使您快速思考。 参加ACM ICPC或在世界上工作的地方是一个好主意。 然后是编码竞赛(例如Sun的Code for Freedom,Google的Summer of Code,Microsoft的Imagine Cup),您可以在其中开发完整的软件。 这样的比赛分散了许多个月。 两者都需要不同的技能。 您可能在一个方面是好事,而在另一个方面是坏事,但是您可能是一个好的程序员。 像ICPC这样的比赛需要大量的练习和快速的思考,并且您应该把算法放在脑后。 另一方面,CFF,GSoC要求创造力和专注力长期分散。 您不必太快提出解决方案,也不必弄乱算法。 ICPC就像T10,CFF,GSoc和Imagine Cup就像测试比赛。 我建议您同时参与这两种类型,然后决定是否要专注于其中一种或两种。

5.参与FOSS项目:您必须参与一些免费软件项目。 太多了。 我现在正在研究SCALASCA,然后我将继续研究Sun Grid Engine和Sun xVM Hypervisor并在其中贡献代码。 您可以从中学到很多。 您将看到很多代码并学习最佳实践。 我也提到过,这对您的简历也很不错。 大多数人在经历此类项目的某些先例时会感到冷漠。 以Thunderbird为例。 您将需要了解很多C / C ++和Javascript(用于开发模块)。 现在,不要等到您是这些语言的专家之后再进行贡献。 编程是一门艺术,不要在绘画时浪费时间削铅笔。 你可以问我问路。

6.设计模式:任何艺术都是通过模仿来学习的。 因此,您必须效法最好。 设计模式是经过尝试和测试的(软件类型的)体系结构解决方案,用于解决一些常见的软件设计问题。 因此,如果您打算开发甚至相当复杂的产品,则需要一些常见设计模式的基础知识。 我建议将Oreilly的“ Head First设计模式”作为第一步。

7.通过模仿学习:模仿最好。 通过阅读最好的书和/或浏览一些最好的自由软件项目中的代码,这是可能的。 我会敦促任何认真学习编程的人阅读Eric S Raymond的书“ Unix编程的艺术”(不要忘记先打耳光,因为不知道Eric Raymond是谁,然后搜索他的名字)。 如果您还没有读过那本书,那么您不是程序员。 期。

现在让我解决一些常见的问题

一种。 我对计算机没有兴趣,想攻读MBA:主要是二年级(大二)学生经常重复的陈述。 那真的是你的问题。 我没有要求您参加计算机课程,甚至没有加入Engineering。 当您开始从事此工程学的工作时,您不知道或不知道找到什么,我很确定您也不会费心找出在MBA课程中等待着您的东西。 我也很确定,在读完MBA两年后(如果不是更早的话),您也会对自己的工作说的差不多。 好吧,我能说什么。 祝一切顺利

b。 我不喜欢阅读您上面提到的书(或与此有关的任何书):嗯,这还不是Matrix的世界,我只能在其中学习编程技能。 不要强迫自己阅读它们。 你不能。 仅在需要时才这样做。 如果您不这样做,请忘记成为一名优秀的程序员。 可能是您使用上述借口的时候了(点a)。

C。 请给我一种能完成所有任务的编程语言:没有。 每个都有不同的目的。 这就是事情的发展伙伴。

d。 我想要一个“真实的”项目:太好了。 您可以做两件事:1。 自己创建一个。2.加入FOSS项目。 但是大多数人对此并不满意。 他们希望我“给”他们一个简单的项目(阅读,不应该涉及C以外的任何东西,您需要包含的唯一文件应该是stdio.h,conio.h(是,这里的人仍然使用Turbo C) (可能是string.h和math.h),我应该告诉他们学习什么。 当人们这样说时,他们期望乘坐自动驾驶仪。

e。 我将在这个学年/学年/学年学习X编程语言:您不可能坐着书来学习语言。 您需要使用它进行一些实际的工作,开发一些实际的软件,而不仅仅是在书中进行这些练习(当然这是必要的,但还不够)。 我学到的大多数语言是因为在某些项目中我被迫这样做。 只需在一两天内掌握基础知识,然后将其应用于现实生活中的项目。 需要想法吗? 过来。

最后,正如拉里·沃尔(Larry Wall)在《 Perl编程》中所说:“我们将鼓励您开发程序员的三大美德:懒惰,急躁和自负。”

懒惰:这样您就可以尽全力减少总体能源消耗。 它使您可以编写其他人会发现有用的省力程序,并记录所编写的内容,因此您无需回答太多有关它的问题。 因此,程序员的第一大美德

不耐烦:您在懒惰计算机时会感到愤怒。 这使您编写的程序不仅可以满足您的需求,而且可以实际预期它们。 或至少假装。 因此,程序员的第二个优点

狂妄自大:过分的自豪感,宙斯(Zeus)为您服务的那种东西。 还有使您编写(和维护)其他人不想说坏话的程序的质量。 因此,程序员的第三大美德。

因此,要着手成为一名优秀的程序员,例如Richard Stallman,Rithcie,Brian,Raymond和Torvalds。 祝一切顺利

资料来源:互联网

编程需要更多的练习,因此请使用“边做边”的方法来学习编程。

  • 练习更多示例程序并尝试理解。 程序员的另一个重要技能是解决问题。 学习创建解决问题的良好算法。
  • 在软件技术中选择您喜欢的并尝试深入学习它们。 例如,我最喜欢的编程语言是Python,操作系统是Linux,RDBMS是PostgreSQL,等等。
  • 做项目将有助于学习更多的知识。 因为您必须结合许多软件技术才能完成项目。
  • 提防新技术,因此请不断更新您对软件技术的了解。

这将有点哲学而不是技术。

您想成为一名出色的学生。 首先,让我解释一下使某件事变得出色所需的东西,而不仅仅是编程。

如果您不喜欢它,或者不喜欢做某事,或者一整天都不能认为只是在做那件事而不是在做什么,那么您就无法在某件事上表现出色。

因此,您想精于编码,请首先知道是否喜欢这样做。 如果您愿意,那么您将无所不能,如果您不喜欢编码,那么您永远也不会无所不能。

只需练习,搜索新资源即可学习有关编程的新知识。 最重要的是,在学习时创造对他人或自己有用的东西,因为它会使您感到无聊,因为有时候不断学习就很无聊。

您只能做一件事。
练习并做正确的练习
编程全都与逻辑有关。您只需要开发逻辑即可。当您开始获得结果时,它会变得很有趣,因此您将变得越来越好。

不是通过学习。 学习编程是很无聊的事情。 构建您将在代码段中将在现实世界中发挥作用时会喜欢的东西。 还是解决在线裁判参加比赛的感觉都不错。

只有一个字为您解答。

继续练习,不要以为您已经学过任何编程知识。