怎样成为一名优秀的程序员

我是一名大一的计算机科学与技术的学生,快大二了,我不知道现在该学什么以及怎么学,我目前仅仅略为学习了一下C和C++,我本来想报名ACM的,但是又没准备,所以没加进去。我每天都看看C++的书,可是我不知道我该怎么才能提高能力,怎样才能拥有一名优秀程序员甚至以后成为一名架构师,希望高手能给我一个努力的方向,拜谢!

你好,我是大二的学生,我曾经也想你那样迷茫过,觉得学这些东西没用,做不了实际开发。不过现在我已经找到方向了。首先必须先说明,想学东西,有用的而不是只是理论层面的话,千万千万,12个千万不要只靠学校。自己一定自主的学自己想学的东西。
我觉得首先你要确定你想从哪方面学起,例如学完c++可以学MFC,也可以学学C#,做软件很方便。你可以上网了解一下他们的用途之类的。
然后是要找到相关的书或教材,学MFC我推荐你看王艳平的《windows程序设计》或者孙鑫的MFC视频教程。入门很合适。
你学了c++的话我建议你学MFC,MFC程序是用c++写的,非常强大,做出的程序运行效率是最高的,不过开发难度也比其他方式开发都要难。
如果你按我说的做了,例如MFC入了门,你就可以自己开发一些实用程序用了。我说的这些希望对你有用!追问

光C++就够我学四年,很深啊,谁知道什么时候开始学你说的MFC合适啊

追答

c++是语法,怎么学你四年?一般学校都教你一年,如果自己要超进度的话,一个星期全天候看,就可以把c++搞定了。我是转专业的,大一第二个学期转,利用课余时间补第一学期的c++,也只是用了半个学期就赶上进度了。语法学完c++就基本结束了,下面就是你能不能灵活运用的问题了。
我觉得你应该去了解一下。至于你说的很深不知道你是指哪里很深。
另外,MFC是封装了windows API 函数的类库,他支持可视化编程。只要你会c++语法,就可以学MFC。windows API 才是你需要花一辈子去学的东西!
我的专业也是计算机科学与技术。可以告诉你大二上学期 学到有用的 只有 《数据结构》,介绍c++算法的,下学期学java和数据库。学校是不会教你用c++开发可视化程序的。也就是说按照学校的课程,你学到的c++根本没有运用的机会。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-09
你好。我是学JAVA的。
我把我们的一段教程发给你吧。
熟练掌握开发工具

  做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C和JAVA是重点推荐的开发工具,C/C以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVA One很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。

  

  熟知数据库

  为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。

  对操作系统有一定的了解

  当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。

  懂得网络协议TCP/IP

  在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。

  明白DCOM/CORBA/XML/WEB Services存在的意义

  随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。

  不要将软件工程与CMM分开

  现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。

  拥有强烈的好奇心

  什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。

  如果您正为如何成为一名合格的程序员而发愁的话,希望以上文字能为您排除一些顾虑和问题。如果您想获得更多有关程序员的信息,那么请随时关注天天招生网,我们将在最短的时间内提供最真实,最准确的相关信息。
第2个回答  2011-06-09
一位仁兄说的“程序员写的程序不是‘算法+语法’,而是要能够满足用户需求的工具”我非常赞同。要想达到用户需求就必须从各个方面来考虑,如业务、人机交互 、效率等方面,而不只是一个语言(语法)的问题,语言(语法)只是工具,只知语法不知其他那就真是编程机器了!编程机器在印度高中生经过几个月培训,按照严谨的软件工程方法,加上较高的管理,就可以胜任了!大家相信吗,我是相信的!如何判断自己是否是编程机器? 1、面对需求不考虑用户,只是考虑用哪些程序技术展示自己的语言语法技巧。2、学习了 N 种语言。 3、从来不学习或实践软件工程。4、语法语言水平在众人中遥遥领先、特别是一些稀奇古怪的语法。凭着兴趣和创造力去干,却 重复繁琐的劳动,做着没有意义——唯一意义是赚钱,而且真是出了半斤力,拿不足八两。终日劳 累,却不能学自己想学的。最终结果是跟不上社会科技的发展 ,人已衰老。悲哀!!!开发软件的关键是要有想法,一个好的想法比什么都重要。尤其是有关网络方面的就更是如此。实际上一个程序员最终的技术需要和实际相结合。当编程水平到达一定水平时候,语言的使用并不 是最大的障碍,对整个项目的把握、软件工程的把握、数据库的设计以及执行效果的分析等等才是 需要进一步考虑的东东!否则,为何大多数公司要求有编程经验了!这些不是程序员必须学的。但 软件工程、数据结构、离散数学、编译原理、操作系统原理等是必须要学好的,英文也要多看, 不懂计算机英语可不行。程序员不应依赖开发工具,程序员更应该拥有的是一种思维、一种精神、一种观念。就像 Richard.M.Stallman 一样,有自己的精神,为自由软件而奋斗。就像求伯君,为民族软件的振兴而奋斗。这才是真正的程序员。应该说,他们更注重的不是技术,而是软件的思维,软件的灵魂!!每个人都有自己的学习方法,也许这种方法对我来说有用,但不见得就对所有的人有用。所以, 请不要盲目的跟着别人的学习方法学习,要思考属于自己的学习方法。
第3个回答  2011-06-10
基本功不行,什么都不是.
光看书也不行,得实练.
第4个回答  2011-06-10
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C和JAVA是重点推荐的开发工具,C/C以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVA One很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
第5个回答  2011-06-10
去书店买三百六十五本C++,在买三百六十五本C,然后回家,每天吃一本C和C++书籍各一本,如果你能坚持吃365天,而且能正常的看见第366天的太阳,那么恭喜你,你已经成为一个业内一流的程序员了.
相似回答