第一篇:如何成为优秀的程序员
如何成为优秀的程序员?
1)学习应该从基础打起,不要一开始就尝试最高深的技术。
2)每看一本书,不要说这章我以前学习过了,也掌握的很好,因此我可以跳过这一章看更重要的了。
3)对于作业,遇到不会的尽量不要立刻向别人请教。如果实在解决不了的问题,可以先 完成你会的,然后把一些特别的难点提炼出来,向高手请教。
3)不要指望书本和行家能帮你解决一切问题,因为并不是所有问题都能由别人教给你。
4)向别人请教问题应该把问题说明白。对于错误提示信息应该原样提供出来,不要按自
己理解的信息提供。因为既然你自己做不了,说明你理解一般都有问题。
5)问问题最好能带代码。
6)不要说“编译通过,可是运行时...“,因为编译错误和运行错误可能根本没有关系。
一般来说,编译是语法问题,而运行是逻辑问题。
7)书看千遍不如做程序一遍,应该尽量尝试去写程序。
8)做程序千个不如做好程序一个。应该尽量完善你现在做的程序,而不要不断开新的计
划,而每个计划都虎头蛇尾。
9)要想到你不是一个人写程序,而是和大家一起写程序。
10)高深的技巧虽然显示了高深的本领,但是对于合作往往是有害的,应该尽量写出简
单易读的代码。
11)编制程序应该尽量做到自注释,即代码本身一读就懂,好象自己在说明自己的逻辑
一样。
12)复杂的代码如果实在做不到自注释,应该给出适量的注释。
13)注释在修改代码的时候应该相应修改,不能用陈旧的注释去误导别人。
14)代码应该尽量可重用,相同功能的代码应该由相同的函数完成,重要函数应
试信息,以便调试时及早发现问题。
15)应该尽量写小函数,每个函数尽量不要超过40行或者更少。这样不用滚动屏幕也许
就可以读完整个函数。
16)对于switch语句,尽量不要有过多的分支,如果分支太多,可以考虑用跳转表。
17)尽量少使用一些有争议的语句,如goto和三目运算符,既然有争议,它肯定有一定的缺点。
18)对于goto,许多工程师技术高到可以合理使用,而不至于导致问题。但是你的程序
并不一定给你同水平的人看和修改,他们可不能保证合理的读和修改这些相关代码。
19)代码编写时应该有一定的格式,其基本要求是对理解代码有一定帮助。
20)如果数据是多个模块共有的,应该提供一个封装的类来管理它,并提供一个合适的接口给各个模块。这样,如果数据内容有重大修改,则只要接口不变,基本上可以保证
程序不要很复杂的修改。
21)应该尽量考虑到数据的并发控制。
22)数据的并发控制应该封装在接口内,而不要暴露给其他模块,这样可以减少因为并
发原因导致的程序死锁。
23)数据本身结构不可以太复杂。应该尽量把不相关的数据分割成为两组数据。
24)对于数据量比较大的情况,应该考虑数据库。
25)数据库接口应该采用标准ODBC或者ADO接口,尽量不要根据实际数据库DBMS提供的接
口来处理,因为你可能在实际使用中更换DBMS。
26)小的数据可以考虑文件,文件路径应该必须设计成相对路径。
27)在一个函数中,应该尽量打开文件后使用完后立刻关闭,这样其他程序可
件。
28)不要尝试把文件全部读到内存中,应该分次处理大文件。
29)编写程序应该提供相关的测试程序,以提供测试手段。
30)应该考虑代码、函数的使用情况,不要超越函数可以使用的范围使用之。
1.扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专
业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2.丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问
题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除
计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也
是一个很好的途径。
3.最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换
原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被
人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单
方案不能满足要求时再考虑复杂的方案。
4.不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听
轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类
游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得
到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5.对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你
才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6.多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸
出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7.良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始
终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程
序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了
你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8.韧性和毅力。这也许是”高手"和一般程序员最大的区别。A good programming
is 99 weat and 1ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个1
0000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一
工作,你就可以满足这一条。
比较宽的知识面,并且能够时时补充自己的知识和完善自己的知识结构
* 耐心好,特别是在调试和学习阶段,世界上没有聪明的人只有刻苦的人。做开发其实
就两件事情学习和改错,在这两件事情中间的开发过程其实是比较简单的* 永远记住:代码是给人看的而不是给机器运行的,计算机在执行程序时是不怕累的,而人在看代码时是非常累的* 良好的编码习惯,至少保证自己能够随时看懂几个月前自己所写的代码
* 尽量让你的代码能够很容易的被别人理解,写代码时想想你会不会在两个月后被别人
骂
* 不要容忍自己犯重复的错误和写重复的代码
* 知道如何做比得到代码更重要
* 尽量不要做已经有很多人已经做过的事情
* 学会尊重别人的开发成果,除非不得已不要下决定全面替换以前的系统
* 珍惜自己的时间与工作成果,尽量让别人分享自己的开发成果
* 避免假设,多思考极端情况与引起错误的可能性,努力减少低级错误
* 不要相信至少是不要轻信自己为自己所做的测试结果
* 懂得坚持自己的开发思路,并懂得理解与吸收别人的思想
* 学会与其他人保持一致,但不能放弃自己的开发特色
* 懂得向你周围的人学习,不论是开发能力上的还是开发经验上的* 懂得软件结构的的重要性,分析代码前先分析代码的结构
* 学会总结,定期总结自己所学会的知识,看看自己前段时间因为各种原因所浪费的时
间
* 学会计划,尽量不要认为通过延长自己的工作时间来完成任务
* 学会正确估计自己的能力和工作时间
下面这些是我认为一些比较适合我自己的方面,不一定对每个人都合适:
* 多看些杂志,没事情的时候可以看看以前看过的参考书,书中很可能有你以前没有注
意到的一些细节
* 不要太早去做一些与开发无关的事情,因为学习的黄金时期是很短暂的* 学会分析别人的系统,多看看别人所开发的系统的先进的一面。这里包括别人的开发
思路,实现时所采用的结构
* 时常感到自己将被淘汰,经常埋怨自己的不努力
* 知道自己缺少什么
* 强迫自己做一些自己不喜欢做的事情,比如说写文档
* 能够有勇气重写自己所开发的系统,但当你重做时你应该采取和前一次不同的工作方
式和方法,否则重做就没有必要
* 将问题简单化而不是复杂化
* 将维护时会产生的一部分问题转移到开发时或是设计时来解决
* 有时候也不妨问问自己:我不做开发时去做什么
* 坚持为自己做每周的开发计划,在事情没有做完以前不要轻易转移自己的注意力
* 尽可能多的将你所做的教给别人,因为你有一天可能不再负责这个系统
* 做事一定要有始有终,除非是有不得已的理由否则不要在工作完成前提前离开
* 不要将你为公司做的东西带走,你因该带走的是开发经验和对开发的认识而不是代码
和产品
* 感到累时就休息一下,给自己放个假也无妨,毕竟人不是机器
做程序员很累的,够你受的,加油吧!
第二篇:如何成为优秀的Java程序员
如何成为优秀的Java程序员
每一个优秀的人在做事的时候都有自己的做事风格,那么那些优秀的Java程序员的编程风格如何呢?下面我们具体讲讲,希望对想学习或正在学习编程的同学有一些帮助。
优秀JAVA程序员几个原则如下: 1.保持原有风格 2.坚持最小惊奇原则 3.第一次就做对 4.记录所有非规范行为 格式规范:
1.缩进嵌套的代码:在每个代码块和嵌套中加入缩进,缩进代码,加强可读性。这些地方包括【类定义,内部类定义,方法定义,静态块,for循环语句,if-else语句,try、catch和finally块,匿名内部类,while语句,do-while语句】
2.断开很长的句子:第一,如果包含了逗号,那么在每一个逗号后面都另起一行,把逗号后面的每一个表达式都和逗号前面的表达式的第一个字母对齐。第二,应该在优先级最低的运算符之前断行。
3.使用空白:关键字和左括号之间,右括号和紧随其后的关键字,除了”.”之外的运算符与其前后的表达式之间用空格隔开。每个逻辑上独立的方法和代码段之间,定义类或者接口的成员之间,每个类和接口之间应该加入空白行。
4.不要直接使用Tab控制符:不同环境对Tab控制符的解释也是不同的。命名约定:
1.名称应该具有实际意义
2.使用人们熟悉的名称
3.谨慎使用过长的名字,可以使用简明通用的缩写 4.尽量保留元音字母 5.缩写词的第一个字母大写 6.不要使用大小写来区分的名字 包命名:
1.用你所在组织的域名的倒序小写形式作为包的根限定词 2.使用单独的小写词作为每个包的根名
3.仅当新旧版本二进制兼容的时候,其包可以使用相同的名字,否则,请使用新名字 类型命名:
1.类和接口名中的每个单词的第一个字母大写 类命名: 1.用名词命名类
2.具有成组相关属性,静态服务或者常量的类名字使用复数形式 接口命名:
1.用名词或者形容词命名接口 方法命名:
1.方法名中的第一个单词小写,其后每个单词的第一个字母大写 2.用动词命名方法
3.遵循JavaBean中命名属性访问函数方法:set,get,is 变量命名:
1.变量命中的第一个单词小写,其后的每个单词的第一个字母大写
2.用名词命名变量 3.集合引用名要用复数形式
4.为不重要的临时变量简历并使用一套标准名字 字段命名:
1.使用this字段变量可以区分开局部变量 参数命名:
1.构造函数或者”set”方法给字段分配参数赋值,参数名应该和字段名相同 常量命名:
1.常量的每个单词均大写,单词之间使用下划线连接 文档约定:
1.为使用和维护你的代码的人编写文档 2.注释和代码要同步
3.使用积极的语气,省略无用的词语 注释类型:
1.用文档注释来描述编程接口
2.用标准注释格式隐藏代码而不必删除它们 3.用单行注释解释实现细节 文档注释:
1.在编写代码前描述编程接口
2.为公用,受保护,包,私有成员建立文档 3.为每个包编写总结和概述 4.为包的每个应用程序或组编写概述
注释风格:
1.对所有文档注释使用统一的格式和组织结构
2.关键字,标识符和常量应放到…
标签中 3.将代码放入
…标签中 4.在标识符第一次出现的时候用{@link}标签 5.为Javadoc标签简历并使用一套固定的顺序 6.使用第三人称叙述的形式 7.编写独立的概述
8.省略概述中动作和服务的主语 9.省略事物概述中的对象和动词
10.使用this而不是the来指代当前类中的实例
11.方法名或者构造函数名不需圆括号,除非你想突出一个特殊的签名 注释内容:
1.每个类、接口、字段和方法都编写概述 2.完整描述每个方法的签名 3.包含示例
4.为前置、后置、不变条件编写文档 5.为已知的缺陷和不足编写文档 6.为同步语法编写文档 内部注释:
1.仅添加有助于理解你的代码的内部注释 2.描写代码为什么这样做,而不是在做什么
3.避免使用行尾注释
4.用行尾注释解释局部变量声明
5.建立并使用一套关键词来标识尚未解决的问题 6.在嵌套程度高的控制结构中标记出嵌套结束位置
7.如果两个case标记之间没有break语句,就在中间加入“fall-through”注释 8.标记空语句 编程约定:
1.将表示基础数据类型的类声明为final类型 2.通过本地类型和其他具体类型建立具体类型 3.定义小的类和小的方法
4.定义子类,以便任何使用超类的地方都可以使用子类 5.使所有字段私有
6.使用多态来替代instanceof 类型安全:
1.以java.lang.Object包装通用类,提供静态类型检查 2.以类的形式封装枚举类型 3.尽量使用泛型 语句和表达式:
1.用等价的方法替换重复的、复杂的表达式 2.使用块语句代替控制流结构的表达式 3.使用括号明确操作顺序
4.在switch语句中的最后一个case体使用break语句
5.使用equals(),而不是==来检测对象的对等关系 构造:
1.构造状态有效的对象
2.不要从构造函数中调用非final方法 3.用嵌套的构造函数消除冗余代码 异常处理:
1.使用不受检查、运行时的异常来报告可能在程序逻辑中出错的严重未查明错误 2.使用检查异常来报告可能发生,而在正常的程序运行时极少发生的错误 3.用返回代码报告可预知的状态改变 4.仅转化异常来添加信息
5.不要私自处置运行时或者错误异常 6.用finally语句块释放资源 断言: 1.按照约定编程
2.用无用代码消除机制实现断言 3.用断言捕捉代码中的逻辑错误 4.用断言检测方法的前置条件和后置条件 并发:
1.仅在适当的地方使用线程 同步: 1.避免同步
2.用同步的包装器,提供同步接口
3.如果方法包含几个不需要同步的重要操作,那么不要同步整个方法 4.读写实例变量的时候避免不必要的同步 5.使用notify()而不是notifyAll()6.为同步初始化使用双重检查模式 效率:
1.使用懒惰初始化 2.避免创建不必要的对象
3.重新初始化并重新使用对象,尽量不要新建对象 4.把优化工作留在日后 打包约定:
1.将经常使用、更改、同时发布或者互相依存的类型,放在同一个包里 2.共同封闭原则 3.重用/发布等价原则 4.无环依赖原则
5.将不稳定的类和接口隔离在单独的包中 6.易于修改的包不要依赖于难以修改的包 7.最大化抽象最大化稳定性
8.将高层设计和架构作为稳定的抽象,组织为稳定的包
如果你想在IT技能上得到提升,那么北大青鸟就是不错的选择。北大青鸟是中国电脑教育著名品牌,积累了雄厚的师资和丰硕的教学经验,学校的管理、就业、环境等都很优越。学校拥有多个IT相关专业,是西北地区比较齐全和综合的大型电脑培训学校。
学以致用,所学即所用,是北大青鸟多年如一日的秉承的教育方针。不让学生浪费无谓的时间和精力在那些并不重要的技能学习上。为学生节约时间和精力去学习那些在工作中需要经常用到的技能,那些重点技能,才是学校教授的重点,也是学生需要学习的重点。
详情点击咨询。
第三篇:如何成为一名程序员
苦逼中的战斗鸡:如何成为一名程序员
下面要说的是我在成为一名程序员的道路上做的几件事情。写在这里除了要让自己铭记在心外,我还希望它能对别人有些用处。1.建立一个博客
这是我后来才认识到的事,其实应该很早就去做。如果你是跟我类似的情况,你应该尽早开通一个博客——尽管还不知道该写什么。注册一个域名,买一个 空间。你会惊奇的发现有很多可写的东西。你可以记录下你成为一名程序员的过程,或写一下你感兴趣的技术方面的东西。我一直以为没什么好写的,可当真正思考 这些问题时,却发现有很多值得写的。最重要的事情是开始去做。2.开发一些东西
开发什么并不重要。选一种编程语言,任何一种都行,开始干。你不必去花大量的时间来决定应该使用什么语言。直接开始学一种语言,事实上最重要的是学习编程语言的基础知识,而不是劳神费力的去选择一种“最好的编程语言”。我选择的是PHP。因为它是一种被广泛使用的语言,在网上有大量的学习范例,我已经通过搭建一个WordPress网站而熟练的掌握了它。没有丝毫的遗憾。它使我学到了很多 基础知识。我还学习了其它语言吗?当然,我后来涉猎了很多脚本语言,我要在下一个项目上试试Ruby。编程语言不断的在变化,不要只盯着一个不放。3.注册你的GitHub帐户
我已经在Bitbucket上有了一个代码库。我最初选择注册Bitbucket是因为它能提供5个免费的私有库。后来我决定在GitHub上注册。事实上,我丝毫没有拖延,看看我的成果吧。4.向开源项目捐赠代码
我早该如此做了。我起初低估了做这种事情的重要性,说老实话,我现在仍需要进一步重视。向开源项目捐赠代码,这是一种很好的学习别人如何编程的方法,并且能把自己的代码公开。我今晚的就要去列一个准备去参与的开源项目的清单。5.热心参与
这也是我需要改进的方面。我应该到stackoverflow网站上去回答更多的问题,在一些博客,科技网站上分享自己的东西。去那些网站,让大家看到你。不在网上露面,就相当于待在屋里不出门却想找一份做巴黎导游的工作。重复做第2,4和5点 其它一些事情
很明显,每一个有志向的程序员都应该每天阅读Hacker News和其它开发/科技/编程类的博客文章。
我打听到了不少的技术讨论会。这周末我准备去参加一个。我会把那里的情况写出来。我在这里并没有提读书。我喜欢阅读,但我们没有买任何的关于web开发的书籍。这是我个人的做法。我相信很多人都会建议首先买一本书看看。
找一些能和你讨论你的web开发/技术/编程想法的人和群体。如果我做了更多的第5项,我可能找到了更多的这样的人。
好了,这就是我要说的。这些就是在过去的一年里我成为一个程序员的成长之路上做到事情。如果有人觉得在这个清单里我还应该加入什么,请给我留言。我永远都希望听到新的观点。
第四篇:如何成为优秀的Java程序员成都Java培训
www.xiexiebang.com
如何成为优秀的Java程序员成都Java培训
成都国信安Java班由副教学总监,优秀讲师带队并亲自授课,秉承成都国信安一贯的专业品质态度,在课程质量,学生素质,就业服务上相当严格要求,并以学业满意就业为目标,打造国内优秀Java培训班,感兴趣的同学不妨关注国信安教育基地了解一下吧。
在求职旺季,面对新的工作,你磨刀霍霍,投了简历,马上要去面试的时候却又怂了,面试官会问我哪些问题呢?万一他问的我答不上来怎么办?是不是很丢脸,是不是就错失了一次良机,成都国信安职业规划师来帮你,轻松搞定求职中,面试官的那些套路!
你有没有发现,只要是资深HR,也就是老司机,貌似都会问这些个问题,往往让你措手不及,又让HR暗自叫爽。
请你简单介绍一下自己。
这是一个送分题,但是却是一个大陷阱。HR一般上来喜欢甩手问这个,看似让你简单介绍,请注意关键词,是简单介绍。你说多了,会嫌弃你啰嗦,你一句话概括,会觉得你敷衍,口才不行,或者就是个大傻缺。所以,真的是不好控制节(字)奏(数)啊!
HR内心戏:如果将自己的名字、职业、上一份工作、出身等说一通的人,肯定是个大傻缺,我难道不会自己看简历吗?然而,99.9%的人都会这么做。面了那么多次,都是“假”的面试。
www.xiexiebang.com正确做法:将自己的主要成就和擅长领域介绍一遍,不用浮夸,如实反馈并稍加包装即可,言简意赅,直戳重点,最好是和该行业相关的。如果实在没啥成就,例如应届毕业生,可以将自己在校组织的活动或者一次比较好的经历拿出来做自我介绍。请注意,HR就是想知道你在自我介绍中所透露的主要技能和独特之处,并不是想听你流水账式的将自己的简历说一遍,这样很LOW!
小编点评:这么多年了,希望你们可以学学乖,这一招学会,记得下次去装逼!绝对会有意想不到的收货,祝愿我的小伙伴们都能轻松应对求职,谋的好工作。
四川地处中国大西南,肥沃的土地,丰富的自然资源,悠久的历史和绚烂多彩的少数民族文化,构成了多样性的自然和文化旅游资源。每到中考季,很多初中生总是为自己的未来前途担心,尤其是一些学习成绩不好的初中生,他们不知道中考没考上怎么办。同时许多家长也担心,自己的孩子年龄还小,进入社会显然不合适。这个时候职业培训学校更加适合,放眼众多学院,四川国信安职业培训学校无疑是非常合适的。
一说起IT培训,很多人都表示苦不堪言,总有人被虚假信息坑过。很多人表示自己对其一窍不通,实在不知道怎么办才好。别着急,让小编为你奉上这些必备小技巧,带你快速简单的上手。那么,实用的攻略有哪些?一般会选择哪家呢?哪个是最实用呢?下面就随小编来看一看吧~
www.xiexiebang.com 很多刚刚从事Java编程职场的同学进入企业,没有了授业解惑的老师,没有了可以互相讨论代码的同学,更不清楚在职场中应该学习的方法,今天小编就分析下Java程序员的职场经验,希望对大家有所帮助。
首先要懂几门语言。
可能你会想,不就是开发语言麽,这有何难,懂一门就够了,好吧,我不反驳你,就拿Javaweb程序员举例吧。Java语言是基本的,各种Java框架你得会,html、css、Java网页前端语言也需要会,不会前端语言不能说自己是web程序员。这些在web应用中都是非常重要的。photoshop基本的切图也得会一点,总不能每次切张小图也去找美工吧,你要知道,很多公司是没有美工的,遇到这样的情况还得是我们程序员自己来做。
观察总结项目或生活中想到的亮点,每一个项目都有它独特的亮点所在,甚至是一个小小的页面功能,都会有它特有新颖的亮点设计,我们看的不仅仅是它的展示效果,更重要的是我们能通过这个效果,联想到什么,学习到了什么。
不要把手上的工作拖到明天,那样会积攒的越来越多,也不要在工作期间老是打酱油,否则经理一怒之下,临下班的时候,给你发过来一个任务,让你务必今天完成,那你就悲剧了。
要做好吃苦的准备
www.xiexiebang.com所谓苦练七十二变,方能笑对八十一难。我刚开始学编程的时候,有时候一个程序报错了,找了一天没找出是哪的错,此时叫天天不应,叫地地不灵,有种想砸电脑的感觉,最终还得耐着性子把错误找出来,因为这个错误如果不解决,你的程序没法往下进行,后面的工作就没法展开了,而且只有你遇到的错误越多,你的水平才提高的越快,一个好的程序都是在不断调错中完善的。
学好编程决不是一个简单的事情,它是一个长期的过程,需要你不断的尝试,不断的练习,不断的总结,多做项目,在实际开发中总结经验。书本上的知识只是理论,最终还需要实际电脑操作,以实战为主才行。可能你会说,我见过很多程序员,三个月就学会了一门编程语言,而且找到了一份工作。我想告诉你的是,你没有看到他背后的付出,这样的人往往是从学编程开始起,每天只睡几个小时,其余时间全部在写代码,三个月写的代码量是别人一年的还多。而且即使找到工作,如果基础没有打好,到工作中压力是很大的,所以建议大家学编程时不要着急,把底子打好,是金子在哪都发光。我身边经常有这样的例子。有一个朋友,他没有任何的编程基础,英语水平也很差,计算机打字都得现学,但就是想学编程,每天凌晨四点起床背英语单词,别人在休息,他在写代码、练打字,奋斗程度不亚于高考,就这样凭着顽强的毅力,最终成为了一个很出色的Java程序员。
想学好编程,成为一个优秀的程序员,一定要多做项目,编程的很多知识书本上都没有,只能在实际做项目中找到答案。所以大家不要放
www.xiexiebang.com
过每一次做项目的机会,在做项目中总结经验,与项目一起共同成长。相信每一个人都可以成为出色的程序员。
成都国信针对上班族,在校生,自学者开设了Java周末课堂学员在业余时间学习,为没有时间全日制面授的学员打开通往Java工程师之路的大门。Java夜校班由副教学总监,优秀讲师带队并亲自授课,秉承成都国信安一贯的专业品质态度,在课程质量,学生素质,就业服务上相当严格要求,并以学业满意就业为终极目标,打造国内优秀Java业余培训班,感兴趣的同学不妨关注动力节点了解一下吧。
国信安IT培训基地专注java培训、php培训、UI设计培训、软件测试培训、大数据培训、web前端培训等培训课程。你们准备好怎么学习IT技术了吗?来参加国信安IT培训课程,你的选择不会有错!
第五篇:如何成为一名优秀的程序员
如何成为一名优秀的程序员?
一位仁兄说的“程序员写的程序不是算法+语法,而是要能够满足用户需求的工具”我非常赞同,要想达到用户需求就必须从各个方面来考虑如业务、人机交互、效率等方面,而不只是一个语言(语法)的问题,语言(语法)只是工具,只知语法不知其他那就真是编程机器了!编程机器在印度高中生经过几个月培训,按照严谨的软工方法,加上较高的管理,就可以胜任了!大家相信吗,我是相信的!谈到这里我就不禁说到了国内教育界最近在探讨的问题“计算机科系的毕业生特别是本科大专生到底出来干啥、如何适应社会要求,大家也看到了很多计科系大学生说精通N种语言,熟悉N种工具,不知道学校里的其他知识到那里去了,甘愿做编程机器,浪费了人民的纳税,干高中生能干的事,比较可惜吧!在国内现在就是这样了,看过一则帖子:清华的计科系毕业生在建筑院里搞开发还不如建筑专业的毕业生。说着说着就岔道了,国内的软件开发业到底是需要那些人:如果仅仅是编码机器,那我估计中国硅谷还是做梦去吧!
社会似乎也需要编码机器,翻翻招聘广告,做应用开发的都要求精通某某语言,熟悉某某工具,很少需要懂管理懂软工的人。以我个人一点偏激的想法,民族软件产业要腾飞,更需要的是能管理使用编码机器的人,即管理人员、国内软件产业编码机器已经很多了。希望不要惹怒了那些编程高手!system develop与Application develop在国内到底哪个能养活你,能赚钱,诸位仁兄想必也知道,况且俺也没发现几家水平高的公司招这方面的人,毕竟OS,DB MS,COMPILER都被国外做了、另外也别跟我谈LINUX,毕竟还是少数烧钱的人做的事情,我先喂饱肚皮再说。我手下的很多搞4GL语言的程序员都想转行学VC等所谓的更低级的语言,我总是说在XX城市,先用4GL工具生存,以后再学习VC吧!,说的简单一点先解决肚子问题。如何判断自己是否是编程机器?
1、面对需求不考虑用户,只是考虑用那些程序技术展示自己的语言语法技巧.2、学习了N种语言.3、从来不学习或实践软工.4、语法语言水平在众人中遥遥领先、特别是一些稀奇古怪的语法 凭着兴趣和创造力去干,却重复繁琐的劳动。做着没有意义-唯一意义是赚钱,而且真是出了半斤力,拿不足八两。终日劳累,却不能学自己想学的。最终结果是跟不上社会科技的发展,人已衰老。悲哀!!
开发软件的关键是要有想法,一个好的想法比什么都重要。尤其是有关 网络方面的就更是如此。入门还可以,但是要继续深入了解可能要难点。未必吧 偶觉得大学里的高数 数理方法之类的, 如果你不是做研究的话, 应该是很少能 用到的 不过如果说到离散之类的, 倒还是时不时的能有点用现在的程序员比起十年前是不是要花更多的时间来 查帮助呢。系统越来越大,手册越来越厚,软件开发的 周期是不是越来越多的淹没在查帮助之中了呢。
实际上一个程序员最终的技术需要和实际相结合。真正在编写程序到达一定时候,语言的使用并不是最大的障碍,对整个项目的把握、软件工程的把握、数据库的设计以及执行效果的分析等等才是需要进一步考虑的东东!否则,为何大多数公司到要求有编程经验了!这些不是程序员必须学的。但数据结构,编译原理,操作系统原理等是必须要学好的,英文的多看,不懂计算机英语可不行。其实我不是什么中专生,而是我读的中学和一个私人办的电脑学校联合开的电脑专业(并不是我中考考的差,而是这个学校太贪钱了,才被录取到这里,恼火,我们班里中考成绩从两百多到四百多的都有,我就是四百多分(重理轻文的结果,要不然...),当时读书的时候,我是班是的高手(其实只是比其它同学懂而已),大家叫我dos,因为当时学的都是dos的内容, 毕业后还没有对编程很感兴趣,只想找一个电脑的工作就可以了,哪怕是打字的,可是看报纸,去人才中心,看到都是要大学的,为此感到很失望.也对电脑失去了兴趣.后来学校打电话到我家,说厦门
厦华公司要招工,要不要去,我很快就答应了,因为当时没工作,天天呆在家里.后来打工的时候,天天象一个机械人一样,重复着同一道工序,因此经常在深夜的时候,思索着自己的未来,由此重新生起了对电脑的感情,因此经常买电脑杂志和报纸看(可以堆成一座山了).由于离我住的地方不远处,有一个电脑培训的,所以经常到那里上机,而在学校里学过的软件也只有FOXBASE和WPS,其它的不值一提,所以上机经常用foxbase,直到这时候,才对编程产生了浓厚的兴趣,一年后,自已买了一台电脑,开始认真学习编程.由于我是属于职业中专的,因此经常想,就算学得再好也没有用,所以想考程序员,而考程序员要懂得c语言,所以就学习turbo c,学完了,学数据结构,同时看'C高级实用程序设计',澳门回归和2000年的两个晚上,我都是在编程中度过的.由于我这个人对书很感兴趣,经常在星期六,星期七去书店,而在书店里,也是看编程方面的书,而看到的编程书籍大部份都是windows方面的,为此也经常思索着学dos编程到底有没有用.后来,春节放假(要2月13日上班)回老家,天天去新华书店(正月初一也去),看到也都是windows编程方面的书多得像狗屎一样,所以就下决心学windows编程,因此正月初四(快餐店还没有开张)就去厦门了,很快买了delphi的书和d版delphi5,疯狂地学习(到目前为止,买了8本delphi的书,因为国人的写的书实在太烂),而由于遇到不懂的又不知道怎么办,为此想到了网络,但在外打工不可能上网(上网吧太贵),所以就辞职了(4月21日),现在,程序员考试快到了,是报还是不报一直犹豫不觉,困此才有此问题.打工的岁夜,我永远不会忘记,因为付出太多了,也失去了太多(坏了两个光驱,瘦了几斤),直到现在,脑海里还不时浮现起那几个无眠的夜晚.忠心感谢大家.我不认为编码的人就是机器, 而系统分析就不是机器, 其实系统分析员就是销售的机器, 所有职员有是老板的机器.它们之间这是不同工种吧了, 当然对系统分析要求要高一些, 薪水也高一些, 但更让人佩服的是销售, 是他们驱动了整个的运作.我也是个中专生, 还是学机械的(后来自学了计算机), 我非常了解在传统的制造业是如何的规范, 设计人员设计图纸, 然后经审核, 再到车间试样, 再根据情况, 修改图纸, 如此反复几次后才能一个产品定型,而在软件界, 就没那么好了, 领导会说, 这个你做, 那个他做, 也没有经过很细的分析(国内很多都是这样), 在我们这里也没有系统分析员, 每个人都是设计员, 也是编程员, 虽然这样对个人来说, 能学到很多东西, 但不利于项目.我国的软件过程水平,确实令人担忧, 目前为止只是, 几个人十几个人的小软件, 还没有能拿得手的大型软件.至于中专生编程问题, 我认为只要入了这个行, 就不会比本科生差, 因为对他来说没有优越的学历条件, 那么只好埋头苦学, 但这正好适应当前计算机软件迅速发展的今天, 学历只能代表过去和基础, 更需要的是有能力的人, 解决问题的人, 实干的人.对我来说确实有时有点自卑, 没有上过高中和大学(由于那个年代, 我只知道能为父母减少一点负担就行了), 所有我一直在努力的学习(corba, uml, java, 软件过程等), 目前为止我并没有觉的我的构架能力和编码水平比他们差, 只是觉得E语言实在太差.过计算机本科又如何?我有几个同学到银行去搞业务了,有同学任教,有同学收税去了......60多个人真正现在搞计算机的还就只有几个人,再看看当时这些计算机本科生的毕业设计,//faint有的人到最后连vb都搞不定,但他们什么编译原理啦什么组成原理啦什么软件工程啦学的(应该是考试的分数)真还不错,至少我感觉有些概念比我清楚(上课没听?)所以我觉的中专生并不比一般大学生差(当然有些重点学校除外//hehe),有时中专生有更大的压力逼迫自己去学习,学历不是重要的,关键是一个人的素质.我们不能将目标定位在做程序员或编码员(Coder)上光会写代码有什么用?那叫“编码员”,在国外是属于体力劳动的,不像国内,会写程序的就叫高科技。重要的是分析问题、解决问题和规划的能力,系统分析,系统设计及项目规划才是正途。这就需要学习所谓的基础课程了,如:软件工程、离散数学、数据结构等等。
从vb到现在开始学vc后,一个人捣鼓了几天也没有什么新发现。跟本不知道VC的编程思想是什么,请大虾们告诉我,它和VB的差别真是太大了。VC的博大在于MFC的操纵,它是Win32API的封装.思想在于怎样了解MFC的内幕,它的运行机制.差别也大,差别也不大!这要看你对API的理解了,虽然VC++的可视化没有VB的好,但是不是绝对没有的,其对而且对话框的编辑是跟VB一样的,不过不是像VB那样放在第一个界面罢了,VC++的博大精深是VB难以望其项背的!:)而且VC++是完全面向对象的编程工具,而VB是不够完全的面向对象编程工具,VC++是完全编译语言,VB是本地编译语言,不够完全,VC++效率高,封装性好,继承性高,VB效率相对低了很多,但界面友好,二者只能取其一,或者使用VC++,VB辅助(因为VB开发快),当然Delphi,BCB也是不错的选择。
程序员不应依赖开发工具,程序员更应该拥有的是一种思维、一种精神、一种观念。就像
Richard.M.Stallman一样,有自己的精神,为自由软件而奋斗。就像求伯君,为民族软件的振兴而奋斗。这才是真正的程序员。
应该说,他们更注重的不是技术,而是软件的思维,软件的灵魂!我刚学VC的时候,还没有上网.身边也没有一个可以问的朋友,所以大部份都是自己啃的.那种感觉真是很痛苦.现在在网上就不同了,可以得到太多的资料了,而且还可以得到在线帮助.但这些都不是学习的关键.相信各位也知道VC的难度,并不是那么容易上手的,所以要想学会,学好VC,靠外力是不可能的.主要得靠自己.自己要有一份难得的毅力,对编程的狂热也可以在一定程序上起到帮助.我就是这样的.起初,没有人帮我,我学习VC是三天打鱼两天晒网,学习进度很慢,幸好对编程的执著,使得自己坚持下来了.如果你从来就没有接触过编程,那你学习VC的速度可能会比学过面向过程编程的人要慢一些,因为你要去理解命令及语句的含义.但只要你努力,并且可以得到别人的帮助,我相信在半年内会对VC有一定的认识.请学赤面向过程编程的朋友也不要笑,因为面向过程与面向对象实在是区别太大了.就拿封装一词来说吧.当初我是左想右想才想通的.所以不要自己学过编程,就会在学习VC的通道上比别人轻松.现在有一种现状应该让我们注意.我发现有很大一部份初学者觉得VC是一种语言,C++又是另一各语言.我在和一些初学者的交谈当中,查觉到了这一点.有的初学者竟然还认为我学VC为什么就一定要学C++?我想这个问题是我们大家都没有注意到的一个问题.就是向初学者讲述C++对VC学习的重要性.我这有个例子,跟大家讲一下.我有个同学,他接触编程比我要早,在我还在为VC中“::”符号怎么标记的时候,他已经在学习C了.后来,我对VC稍有理解的时候,他也发觉C的跟不上时代的脚步了.我便提议他从C++语言学起,可他认为自己有C的学习功底,根本就用不着再去学习C++.可在学习VC的当中,遇到的困难真是数不胜数.最近,他还是去买了一本学习C++的书.从头再来学习C++.我希望通过这个例子,能让广大的初学者知道,C++对VC学习的重要性。
学习VC必须有狂热的编程热情,否则是很难坚持下来的,我周围就有几个这样的人,他们比我先学VC近半年,但现在仍然学不会,而我现在虽说不是很厉害,但基本的应用程序是不在话下,我就是天天看书,上机实践,几乎所有的时间都泡在里面,有时连吃饭都在想,为什么,因为我确实想啃下这块硬骨头,我不想半途而废,我觉得学习VC不仅仅是学到了更多的东西,最主要的是培养了我们自己一种坚持克服困难的毅力。
对于VC,我有几点经验:
1。技术为本,语言为次.2。MFC的单个类有用,DOC/VIEW要小心。
3。OOP要小心,使用不当反而造成大量的工作和糟糕的代码。
4。如果可能,考虑选择使用Delphi(CBuilder+VCL)。
5。到了一定程度,一定要学COM。
要学VC,必须有对C++深刻的理解,对WINDOWS运行机制的深刻理解。尤其想成为VC高手。举例,对于虚函数,不仅要知道有这么一个东东,更要知道它的内存镜像。这样才能对VC中很多的东西举一反三,事半功倍。本人学习VC近2年,但自觉第一年由于心情浮躁,把VC的书翻了一遍又一遍,却每次都只看了一点就无法再深入。直到毕业前夕,痛定思痛,克服浮躁,认认真真的从最基本的开始学,把每一点都搞的水落石出,经过三个月的刻苦,终于大成。直到现在,半月搞定COM/DCOM,都托当日刻苦之福,因此劝告想学VC的朋友,一定要顶住开始的艰难岁月。成功属于刻苦者。
每个人都有自己的学习方法,也许这种方法对我来说有用,但不见 得就对所有的人有用.所以,请不要盲目的跟着别人的学习方法学习,要思考属于自己的学习方法.但我还是会向大家说出我自己认为比较好的一种方法.学习编程其实与学习其它东西一样,要想掌握它,就要实践,实践,再实践.当你学到了一种新的技术或知识时,多实践是巩固学习的一种最好最有效的方法.这个实践不是照著书上的例子做一遍,而是根据自己的能力,给自己出题,然后去完成它.只有这样,你才能发现自己的不足,同时又增加了自己的编程经验.但要成为合格的程序员,光会写代码是远远不够的,更重要的是思考.谋定而后动,是 不变的真理.在我的理解,VC只是一个编程工具,就如BC、BCB、Delphi 一样,其实对于编程最根本的就是三个方面,语言、开发包、操作系统API,他们三个方面应该说是相对比较独立的。
VC是MS开发的,所以针对的是windows api,你可以不会C++,也可以在VC下用C写出很优秀的程序,当然如果你比较熟练C++,并且熟悉开发包MFC的话,工作可能要轻松不少。所以在我看来,学习的过程可以是这样的:
1、先学习C或C++,在windows的console环境下编写不太深入涉及API的程序;
2、在基本上掌握了语法之后,开始接触简单的系统API,学习Windows的编程原理和机制;
3、在可以编写简单的菜单程序,可以简单地在WM_PAINT下操作 GDI函数后,开始学习MFC,可以从Step tourist学起,看MFC的源代码,理解几个关键的宏的定义与实现,特别是MESSAGE MAP。在学习的过程中为了给自己增加点挑战,尽量不要使用resource edit,试着自己编码实现控件的创建,消息的响应。再就是看自己的造化了,动手做一些小工具,特别是自己平常需要的,对自己的提高也应该是很有帮助。究竟我们要的是结果!良好的分析问题高效清晰地肢解问题的能力才是我们真正要不断学习的吧?和学习其他知识一样,重要的是获得提出问题,分析问题,解决问题的能力,不是为编程而学习,你具有什么样的思想,就会写出什么样的程序。学一门语言,不能仅仅是语言,要注重语言背后的思想方法,看他是如何来解决某一问题的,为什么要这样去做,他总是要符合客观事实的,就像人说的话一样,存在某种逻辑,数据的组织,信息的传递,靠你自己的头脑去建立,然后看C++中有什么可以帮你的,该怎么样用他来表达自己的想法。只要你认真实践,努力去做,寻求乐趣,就会达到目标。我虽然 真正认真学习编程的时间不长,但现在我是认真的,就有了以上的体会。
学习VC++有相当的内容要学,而最后的深度则看个人的悟性与勤奋了。
1)掌握最新标准的C++。(2个月)
如果曾经在大学里自以为学过C/C++,还对
dynamic_cast/static_cast/template/try/catch/throw/stl/...感到陌生,那你该Refresh一下新的ANSI C++标准了。----此与VC++无甚关联,g++/bcb均有所支持。
2)学习SDK编程;:-O(6个月)痛苦是暂时的,必要的,坚持就是胜利!建议用Lccwin32/Masm32/Tasm
编写小而精的工具软件; “Windows Programming Guide.”“Advanced Windows programming ”
3)研究MFC源代码。(6个月)
不要被一大堆的宏所蒙蔽,just track and dig into it!在知道MFC如何扩展,包装SDK之后,自可功力渐进,不被其MFC系统框架所困绕。“MFC Internals”
4)研究OLE/COM技术。
COM/ActiveX技术是MS的核心技术,只有彻底洞察其理论精髓才可以体会现在的操作系统的技术趋势,以不变应万变。
“Inside Ole 2”
***几点建议***:
1)Delphi/BCB/VB可以很快构筑界面,但对于想真正学习、理解系统不是一个好的平台,但如果有时间读一读VCL的源码,看看Borland是如何封装系统的,也可借鉴不少。
2)学习ASM对理解C++有很大益处。Soft-ICE也是和VC++结合在一起的好工具;
3)语言本身是皮毛,算法是筋骨;无论高级语言如何发展,在理解操作系统的基础上不断自我创新的能力是源源不断的;如果精髓一旦了然于胸,选择何种开发工具都可以驾御,一见如故了。
每个人学习的过程都会不同吧,我在98从TC转向VC时,对Windows的消息机制一点概念也没有,对着个MFC不知所措,几个月下来一点进展也没有。我于是暂时转向win32位编程。整整一年时间吧,我就是与API打交道,连编辑菜单条对话框等资源文件时也用Uedit32手工编写,为的是希望能对编译器的全过程有个感性的了解。之后我再转向MFC时,果然发现两者是相通的,虽然有一定的区加,不过有了win32位编程的基础再看MFC 时会发现它比win32位编程要方便了太多。现在市面上的VC书很多,不过大多是入门书。我以为要精通VC(只是以为,本人自已距精通还远的很)应该多看多写程序,看书只能是入门,会用了而已。我不赞成滥用ActiveX,一来我以为它的性能很成问题,真是又大又慢又不稳定(可能是我有点偏激了吧),二来用了它您的程序今后就要被别人牵着鼻子走了。有次我用了个控件,程序都写了大半了,它给我来个继续使用请支付333美元,我两个多月的工钱,烦不烦人?现在我尽可能用别人写的类源代码(我已收集各类代码3-400MB了),一样用起来方便,还能边用边学,必要时还能自已改造。
我以为在现代的网络时代,资料到处都有,无论什么先进的技术,今天我不会我只要查到资料,快的学上几天慢的一两个月我也能学会,现在已没有写不出的程序了,写不出是因为你没有耐心写完它。我以为现在的程序员不一定要多么聪明,而更需要他有完成枯燥项目的耐心,找BUG的细心,对于金钱的平常心(不要为了早日拿到钱而赶进度),最后最重要是有顾全大局,团队协作的精神。最后,王靖朋友的经历与我实在是有点相似,算是同病相伶吧,真心祝您早日实现自已的人生目标!学习VC是一项费时费力的艰苦学习过程。为了真正用好VC,你 不得不先从OOP开始学起,也许浏览一本纯理论的书要更有意思。你将从另外的角度考察OO思想。接下来学习C++,学习WindowsAPI 学习MFC,剖析MFC,扩充MFC,创造自己的类库(不要企图写一个 和MFC同重量级的类库)。如果能够精通Microsoft C编译器的各种 参数,你就可以开始研究微软C/C++语言编译器的进化历史(结合 各种背景知识)。掌握了编程的思想,征服VC只是时间问题。
学习VC是接受微软技术体系的过程。所需要学习的不仅仅是C++,MFC。需要学习所有微软的技术,包括Windows编程,Win32系统(实际上 Win32系统实现了很多我们在屏幕上能看到的东西,最起码NT的内核 并不大),COM(深入研究它,理解对象是如何跨越进程边界的,最终 能够自如地在Exe中实现自己定义的接口才算到家了。不过这多少有些 不太必要。),DCOM,ctiveX,Windows DNA...如果你想成为
大拿,学吧,没完没了。最起码,使用VC,你甚至于可以开发自己的操作系统(当然与MFC没有一点关系)。