想做程序员但还在迷惘和摸索吗?

本文探讨了成为一名优秀程序员所需具备的热情、毅力及正确学习方法。强调兴趣的重要性,并提供了避免常见误区的建议。
  
自从上大学选择了计算机专业后,我就深深地热爱上了软件开发,并已经立志把自己的毕生精力都奉献给软件开发事业.一直以来,我都充满了激情去学习,去写程序,去接受新的知识和技术.几年来,付出很多,收获很多,也走了不少的弯路,感触甚多.每次登上论谈,看到那么充满热情和执着的朋友们那种对知识和技术的渴求,我很是感动;但看到许多朋友还重复着自己以前走过的弯路时,内心又多了几分焦虑和担心.由于本人学稀识浅,不敢妄加言论,在这我仅结合自己几年学习,实践和感触谈谈自己的感受,以此献给想做程序员,但还在迷惘和摸索中的朋友,希望此贴能给你们一点帮助.同时也
希望大家都把自己的经验,想法拿出来共亨!
(
本文的部分内容摘自网上文章和杂志)

    
你适合做程序员吗?
    1.
首先,你应该清楚自己为什么选择程序员这个职业?现在很多人是因为软件行业的薪资高才进入的,其实没有人不想挣钱。但我的看法是,程序员是没有办法一夜暴富的。甚至可以说如果你聪明伶俐的话,做程序员不如去做销售人员的待遇和收入上升得更快一些,真的.做程序员首先一定要从兴趣上爱这个行业,否则根本无法忍受成为一个真正程序员要付出的代价.请记住,程序员这种职业是非常辛苦的,需要全身心的投入,如果舍不得付出和牺牲自己的青春的话就最好不要选择这个职业.

    2.
程序员应该是一种充满激情的人,他们喜欢挑战,喜欢接受新的技术和知识,对好奇和不懂的技术总刨根问底的精神,并以此乐此不疲.他们最大的精神享受是自己的努力成果给别人带来方便,快乐,能够得到别人的肯定和重视.优秀的程序员应该是完美主义,他们对自己开发的软件一丝不苟,从功能到界面到软件的健壮性等.他们甚至会为界面上的一个按钮的外观折腾半天,直到满意为止......一个缺乏激情的程序员的职业生命是很短暂的.


    
做好准备了吗?,继续往下看......
    
如果你是初学者(俗称"菜鸟"):1.好高骛远是许多初学者的通病,总幻想自己发疯似地努力几天或几个月就成为"高手"(谁不想呀,看他们多受人尊敬),正是由于自己的这种好高骛远的"雄心壮志",往往给自己定下一些不切合实际的太多的目标,比如:"这个月学汇编,下个月学C语言,再下个月学C++,然后进入VC++集成开发环境做开发...",结果到头来经过几个月的努力,却发现与原定的目标相去甚远,激情和信心也没有了,而且什么东西都没学好.其实并不是因为你笨,学习能力不强,而是太心急了,看看身边的高手们,哪一个不是至少有几年功力的酝酿的?如果你觉得自己很聪明,但请记住这句话:"天下的聪明人太多了,你想在三到五年就把别人十年做的事情做一遍,那你也一定会把别人在十年中所受的苦难在这三到五年中经
历一遍."

    2.
学问是堆积起来的。基础越深,堆得越高,基础越广,堆得越快。如果你还是在校学生,请重视基础理论课程,像数据结构,编译原理,组成原理,数据库理论等,学过这些基础课程的人编出来的程序一定会比没学过的人编的程序技术含量更高,更具灵活性.这是一个最坚难的时期,基础理论课程比较枯燥,难懂,而且往往这种教材陈旧,许多朋友开始学习的时候充满激情,到后来学觉得没味,教材也太老陈,我们诚认,我国的本科教育教材落后是不争的事实,但计算机始终是二进制的,那些最基础的理论一直没有变.如果你觉得大学里的教材实在学不进去了,我的建议是不妨去上机实践,学一门程序语言和开发工具(比如VC,VB),因为只有在实际编程的过程你才会明白那些基础理论的重要性,比如在编程过程中遇到设计结构体,设计遍历,匹配等算法时你才会明白数据结构的重要性.另外,打好基础,以后学新的东西就会很快,举个例子,我的一个网上的朋友,他有十年的DOS汇编基础,而我只有几个月的基础,我们两差不多同一时间开始学习win32汇编,到现在他的进度已经远远超过我了,而且写的程序技术含量高,更底层.
    3.建议初学者特别要注意"知识断层"这个问题.经常有朋友问我"为什么我学不懂操作糸统?","为什么我觉得C++那么难学?"  我可以简单地这样回答你:因为你存在"知识断层".换句话说,你的知结构不完善,基础不扎实.我个人认为操作糸统原理没有几年实践编程和扎实的基础是不可能有较深刻的理解的,所以建议初学者才开始不应该在操作糸统原理上花太多时间,才开的时候只需建立一些基本概念,只有在以后的编程实践过程增加感性认识(从操作糸统程序级接口来看),多问几个为什么,带着问题和感性认识再回过头来看操作糸统原理,你会发现理解起来容易了.我曾经就是这样,才开始看操作糸统原理怎么也看不懂,直到有一定的编程经验后再回过头来看就感觉轻松多了!再来说C++,我个人观点认为初学者不要学C++,OOP,因为没有编程经验和一定的理论基础你就很难理解为什么要"封装",为什么要"继承",为什么一个程序搞得那么复杂,C语言不是功能很强大了吗?所以建议在没有一定的编程经验之前,不要学C++,不然你会感觉到底层的空虚,候捷说得好:"浮沙不能筑高台"!

    4.
你的电脑里面不应该装游戏,不要忘了游戏也是程序员编出来的,如果你真的热爱编程的话,你就不会沉溺于游戏而是沉溺于程序代码了.我有一个朋友,是电子科大的,学的是计算机.他非常聪明,但整天沉溺于游戏,到现在什么都没学到.我过去也很喜欢打游戏,"英雄无敌","星际争霸",一玩就会把用电脑的时候全用上,虽然计划学一些东西,但实际上收获甚少,我想许多还在玩游戏的朋友都是有同感的.其实你可以思考一下游戏是怎么做出来的,和普通的应用程序有什么区别,虽然不一定会有实质的收获,但它会让你带着好奇心和问题去学习,去编程.请记住,要想学好编程,就不要玩游戏.

    5.
尽快找一个突破口.一个人的精力是很有限的,不可能什么都学,不可能,也不现实.现在流行的程序语言就有好多种,不要道听途说,今天听人说JAVA有前途,就看几天JAVA;再过几天听别人说C#出来,又去学C#,那样只会让人很累,结果什么都没学好.建议初始者学编程的时候选择比较底层的程序语言,比如汇编(win32汇编),C语言(SDK)等,那样你会学到更多东西.(当然在学汇编之前最好学过一门高中级语言).一旦做出选择,就不要轻易放弃.其实许多计算机程序语言都是相通的,学精了一门,再学其他语言就水到渠成了.我是把win32汇编作为突破口,现在感觉学了很多东西,搞懂了许多API函数的用法,由于汇编的底层性,我对windows操作糸统的一些机理也有了一定的认识.如果现在叫我用C(SDK)写程序,就容易多了,根本不用花太多时间去学.

    6.
认真地写几个软件.要敢于去想,并且付诸行动,你才会收获更多.记得才学DOS实模式下汇编的时候,我很想做一个简单的打字游戏,才开始的时候我以为自己做不出来,但我敢于去做,自己去问高手,去查资料,乐此不疲,最后把这个游戏做出来了,并且放在aogo汇编小站供大家下载,看到这么多人下载我写的程序,很是有成就感.在编程的道路上我始终坚信一句话:"没有做不到,只有想不到".前段时间我想用win32汇编写一个桌面小工具,才开始的时候不知该怎么下手,于是到处查资料自己摸索着写,还真写出来了,才发现其实很简单,甚至没什么技术含量.这个桌面工具叫"桌面魔术师1.0"
    最后,送大家一候捷文章中的诗句: "时人不识凌云木,始到凌云方道高。"
    
由于笔者水平有限,说得不对和有失偏颇的地方还请大家批评指正.
课程介绍 第1章 预备知识  1.1 汇编语言的由来及其特点   1 机器语言   2 汇编语言   3 汇编程序   4 汇编语言的主要特点   5 汇编语言的使用领域  1.2 数据的表示类型   1 数值数据的表示   2 非数值数据的表示   3 基本的数据类型  1.3 习题 第2章 CPU资源存储器  2.1 寄存器组   1 寄存器组   2 通用寄存器的作用   3 专用寄存器的作用  2.2 存储器的管理模式   1 16位微机的内存管理模式   2 32位微机的内存管理模式  2.3 习题 第3章 操作数的寻址方式  3.1 立即寻址方式  3.2 寄存器寻址方式  3.3 直接寻址方式  3.4 寄存器间接寻址方式  3.5 寄存器相对寻址方式  3.6 基址加变址寻址方式  3.7 相对基址加变址寻址方式  3.8 32位地址的寻址方式  3.9 操作数寻址方式的小结  3.10 习题 第4章 标识符表达式  4.1 标识符  4.2 简单内存变量的定义   1 内存变量定义的一般形式   2 字节变量   3 字变量   4 双字变量   5 六字节变量   6 八字节变量   7 十字节变量  4.3 调整偏移量伪指令   1 偶对齐伪指令   2 对齐伪指令   3 调整偏移量伪指令   4 偏移量计数器的值  4.4 复合内存变量的定义   1 重复说明符   2 结构类型的定义   3 联合类型的定义   4 记录类型的定义   5 数据类型的自定义  4.5 标号  4.6 内存变量标号的属性   1 段属性操作符   2 偏移量属性操作符   3 类型属性操作符   4 长度属性操作符   5 容量属性操作符   6 强制属性操作符   7 存储单元别名操作符  4.7 表达式   1 进制伪指令   2 数值表达式   3 地址表达式  4.8 符号定义语句   1 等价语句   2 等号语句   3 符号名定义语句  4.9 习题 第5章 微机CPU的指令系统  5.1 汇编语言指令格式   1 指令格式   2 了解指令的几个方面  5.2 指令系统   1 数据传送指令   2 标志位操作指令   3 算术运算指令   4 逻辑运算指令   5 移位操作指令   6 位操作指令   7 比较运算指令   8 循环指令   9 转移指令   10 条件设置字节指令   11 字符串操作指令   12 ASCII-BCD码调整指令   13 处理器指令  5.3 习题 第6章 程序的基本结构  6.1 程序的基本组成   1 段的定义   2 段寄存器的说明语句   3 堆栈段的说明   4 源程序的结构  6.2 程序的基本结构   1 顺序结构   2 分支结构   3 循环结构  6.3 段的基本属性   1 对齐类型   2 组合类型   3 类别   4 段组  6.4 简化的段定义   1 存储模型说明伪指令   2 简化段定义伪指令   3 简化段段名的引用  6.5 源程序的辅助说明伪指令   1 模块名定义伪指令   2 页面定义伪指令   3 标题定义伪指令   4 子标题定义伪指令  6.6 习题 第7章 子程序库  7.1 子程序的定义  7.2 子程序的调用返回指令   1 调用指令   2 返回指令  7.3 子程序的参数传递   1 寄存器传递参数   2 存储单元传递参数   3 堆栈传递参数  7.4 寄存器的保护与恢复  7.5 子程序的完全定义   1 子程序完全定义格式   2 子程序的位距   3 子程序的语言类型   4 子程序的可见性   5 子程序的起始结束操作   6 寄存器的保护恢复   7 子程序的参数传递   8 子程序的原型说明   9 子程序的调用伪指令   10 局部变量的定义  7.6 子程序库   1 建立库文件命令   2 建立库文件举例   3 库文件的应用   4 库文件的好处  7.7 习题 第8章 输入输出中断  8.1 输入输出的基本概念   1 I/O端口地址   2 I/O指令  8.2 中断   1 中断的基本概念   2 中断指令   3 中断返回指令   4 中断子程序  8.3 中断的分类   1 键盘输入的中断功能   2 屏幕显示的中断功能   3 打印输出的中断功能   4 串行通信口的中断功能   5 鼠标的中断功能   6 目录文件的中断功能   7 内存管理的中断功能   8 读取设置中断向量  8.4 习题 第9章 宏  9.1 宏的定义引用   1 宏的定义   2 宏的引用   3 宏的参数传递方式   4 宏的嵌套定义   5 宏与子程序的区别  9.2 宏参数的特殊运算符   1 连接运算符   2 字符串整体传递运算符   3 字符转义运算符   4 计算表达式运算符  9.3 与宏有关的伪指令   1 局部标号伪指令   2 取消宏定义伪指令   3 中止宏扩展伪指令  9.4 重复汇编伪指令   1 伪指令REPT   2 伪指令IRP   3 伪指令IRPC  9.5 条件汇编伪指令   1 条件汇编伪指令的功能   2 条件汇编伪指令的举例  9.6 宏的扩充   1 宏定义形式   2 重复伪指令REPEAT   3 循环伪指令WHILE   4 循环伪指令FOR   5 循环伪指令FORC   6 转移伪指令GOTO   7 宏扩充的举例   8 系统定义的宏  9.7 习题 第10章 应用程序的设计  10.1 字符串的处理程序  10.2 数据的分类统计程序  10.3 数据转换程序  10.4 文件操作程序  10.5 动态数据的编程  10.6 COM文件的编程  10.7 驻留程序  10.8 程序段前缀及其应用   1 程序段前缀的字段含义   2 程序段前缀的应用  10.9 习题 第11章 数值运算协处理器  11.1 协处理器的数据格式   1 有符号整数   2 BCD码数据   3 浮点数  11.2 协处理器的结构  11.3 协处理器的指令系统   1 操作符的命名规则   2 数据传送指令   3 数学运算指令   4 比较运算指令   5 超越函数运算指令   6 常数操作指令   7 协处理器控制指令  11.4 协处理器的编程举例  11.5 习题 第12章 汇编语言C语言  12.1 汇编语言的嵌入  12.2 C语言程序的汇编输出  12.3 一个具体的例子  12.4 习题 附录
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值