这是生娃期间,与一位朋友的邮件往来,感觉有点代表性,这里摘录出来,供大家参考。
由于这段时间太忙,很多信件无法详细回复,这里给来信咨询的朋友说声抱歉,我会逐步整理一些有代表性的内容出来,进一步分析说明,欢迎大家继续提问。嗯,如果是针对具体程序设计或调试的问题,还请到课堂中提问,我一般不做私人回答,因为这类问题我觉得拿出来大家探讨,意义更大。
一家之言哈,欢迎拍砖。
问:
肖老师:
    您好!我想是一个专科生,大三了,想学嵌入式,有一些疑问,希望能得到您的帮助。下面是我发在csdn上的一个贴子,我就直接粘上来了,如果您不介意的话,我还想多证求其他前辈过来人的意见,把这个贴子公开发到学生大本营,这样多征求点意见,综合多一点的意见。
 
原贴:
   小弟马上要大学毕业,时间不多,所以想前辈高人指点,希望给出合理学习嵌入式的方向,以及应先后学些什么,用什么样的书,小弟先在此拜谢
了!写得有点长,请耐心看完。先自我介绍一下:
    男,23岁,高中玩传世,毕业后醒悟,复读过,资质一般,所以现就读职业学院,刚上大三,面临实习找工作,学的是软件技术专业,主要是学
javaEE,asp.net也学过点。具说学校是全国十大职业示范性软件学院之一,教学模式比较新颖,有点像北大青鸟之类的学校,比较重视实践,每个学
期做个小项目。我大学吸取了高中教训,不敢再贪玩,学专业时还比较踏实,因此在学校专业(Web)还算学得比较好的那几个(不过我感觉懂得东西
非常有限),有去外资企业(过了CMM5)做外包实习的机会,还有一些其它小软件公司实习的机会,不过我没去,原因有两个:1.我不喜欢做WEB;2.
老师留我在学校参加省大学生程序设计比赛(类似ACM)。本来还打算和几个同届比较优秀的同学一起开个WEB的软件作坊,他们现在做得还不错,但
后来我发现我不只是钱能满足的。现在学WEB已经两年时间了,花了不少钱,却很想重新去学嵌入式,虽然就要到找工作的时候了。职高学费比较
贵,三年3W,加两年生活费,大概共用了4.5W多点,家里经济条件不怎么好,出了2W左右,两年来我自己借了1.2W,各种奖金及自己接的项目共收入
1.5W左右,在WEB上的投入还是比较大的.我的期望也不高,只希望用大学乘下的6个月左右时间学些嵌入式的东西,希望在明年5月份毕业的时候能
找个相关的工作,能养活自己就足够了,但我打算长期在程序员上做下去,十年或是二十年,所以我并不怕重花时间去学。
    特别值得说明一下的是,由于是职业学校,因此对计算机原理,硬件,操作系统等了解的很少,英语水平比较烂,编码水平有一定基础。这个
月刚拿到生活费,就报了软件设计师花了140块,得知大二学弟们准备去买PIC18F4520的开发板,毫不犹豫的交了300块,也买了块板子,准备到大
二学弟班上去听单片机课(以后的嵌入式课可能都会去),可怜我这个月要喝西北风了。
一.转嵌入式理由:
      1.对计算机底层有好奇感,很想了解。
      2.一直想做底层一点的东西,底层技术更新速度相对较慢,能有更多时间去学精一点.
      3.不喜欢做WEB,做WEB太累人了,自己接过几个1000元左右的jsp小网站,客户的需求天天变,跟着客户的需求去改代码,实在太累了。
      4.嵌入式相对WEB来说,挣的钱还行,而且感觉WEB竞争会越来越大,相反嵌入式市场会越来越大。
二.学过的课程:
    1.大一上,刚入学没开专业,上了二个月英语强化(我英语不好,强化后还是不好),于是我自学谭浩强的《C程序设计》,  英语强化了二个月后
,没有开C了,直接开了C++,只是些基础语法,没学标准类库,没学模版。还简单的学了Linux操作系统。期末用C++做了个小图书馆理系统。
    2.大一下学期开了XML,UML,数据库原理,J2SE,这个学期末用J2SE做了个类似QQ的局域网聊天小项目。
    3.大二上期开了J2EE企业级应用(jsp,servlet,ejb之类),期末做了个网上书店网站(jsp,servlet,ejb,tomcat).
    4.大二下学期开了.net桌面和asp.net,没有深入的学,还开了数据结构。期末做了一个企业门户网站(也有桌面客户端).这个学期也考虑过转
VC++程序员,因此又加深了一下C++,看了《C++ primer》,《设计模式》。
    5.本学期没什么课了。大一、大二整个暑假都留在学校练算法,因为要参加省大学生程序设计大赛,但由于没有牛人指点方向,资质也是一般
,所以算法也不怎么样。去年在省赛和本科学校比了一下,在中等水平(比大部分一般本科学校稍好一点)。去年省大专算法比赛拿过一个一等奖
。今年省赛专科组第二,和本科组的队伍比,在中等水平。
注意:希望给出合理学习嵌入式的方向,以及应先后学些什么,用什么样的书!!!
答:
看看我最新的几篇帖子吧,你的问题其实里面都有讲。
如果你是因为怕辛苦才不做web,我得说,你转到C和C++后会更辛苦。
因为C和C++的深度显然比Java,.net之类深得多。
不过,一份付出一份收获,你现在开始苦几年,努力学到本事,以后可能就不苦了。
但现在玩的话,以后可能会越来越苦。
问:
 肖老师:
     谢谢您能回复。您最新那篇“做什么样的软件才能赚钱?学什么样的知识才能赚钱?”,我今中午看了,让我了解了很多方向是做什么事,需要那些知识,如果刚进大学就能看到,就不用走很多弯路了。其实现在我和那位兄弟都想怎么样能够尽量的少走弯路(虽然我们知道学习没有捷径可走,但只求能快速入行,其他的入了行再加深),能尽早的找到相关的工作!我们都很迫切的想知道,应该从哪些基础的开始学,学习的顺序,用什么书和资料。哪些时期应该注意些什么。越详细越好!
     另外,我想说声,我不是怕苦。我知道无论做什么事,要做好的话,都会苦都会难,我只是想把时间和精力花在我感兴趣的和值得投入的事上面。自从我读大学以后,我基本上就没有放过什么假了,寒假做些小项目,看些书。暑假和星期六天就在学校机房训练算法,练算法的时候都是早上8:00到晚上10:00,中间去吃两顿饭。有时候题目难了,就会很痛苦,很消耗脑力的,很多人都中途退出了,最后我们这届能坚持两年的只有我和另一个同学,我成了校队核心成员,帮老师负责训练新人。感觉我还比较能吃苦,也比较坚持。
     您已经给我们很多指点,谢谢肖老师!
答:
 如果要我说,建议你把学校里面,和语言无关的计算机基础课程,什么算法语言,数据结构什么的,统统学好,再学其他什么都快。
 
问:
 唉,问题就是出这里了,我们学校是专科,而且是像北大青鸟的教学模式。除了数据结构开了,其它的什么基础课程都没开啊!像计算机组成原理,系统结构之类的都没有开!操作系统也只是学了linux上的一点东西,直接开c++,java,.net,xml,uml。
还想问您一个问题,工业控制一般研究什么系统,vxWorks?这个应该怎么来学?现在还不确定以后在什么平台上工作,操作系统也不知道学什么的啊!能推荐些书么?
 
答:
 我是学工民建的,猜猜我的老师有没有给我讲过上面的课程?
问:
 呵呵,应该没有讲吧!你是想说让我自己解决吧!嗯,是要自己去学,我现在收集资料,制定一个合理的方案,磨刀不误砍柴功。向您请教是比较快的途径之一。其它的我也找了些书。
下面这个问题能告诉我一下不:
      工业控制一般研究什么系统,vxWorks?这个应该怎么来学?现在还不确定以后在什么平台上工作,操作系统也不知道学什么的啊!能推荐些书么?
答:
 既然是工控,其实很杂,什么系统都有,从简单的51单片机,到Linux,arm,到你说的VxWorks,都有,建议都学一点。
系统虽然复杂,但在我看来,程序设计的原理是一致的,因此,学习的时候注意跨平台特性,不要把自己绑死了,记住,什么系统写出来的都是程序。
VxWorks是实时操作系统,目前华为,迈普等核心通信企业,以及军方用得较多,学了会很有用。
建议你看我的书,我认为是最快的入门捷径。
问:
 嗯,好的,早就决定买了,就等你的书出来了。做这些,有这么多操作系统,对于初学者来说,首先就不针对一个系统学习吗?不是说要很了解操作系统是怎么实现的,才可以在上面搞开发吗?比如说linux,都要看懂linux的源代码吗,而且比较难搞得懂。那其他的系统也差不多吗?得多少时间才能工作啊。
 
答:
 其实各家操作系统,抽象出来看,大同小异。
32位多任务操作系统,经过多年论证,有一定之规,只能那么写。
不管是中国还是外国,大家遵循的计算原理总是一样的。不管是我们来写,还是别人来写,很多时候方法上可能有差异,但原则不会变,否则写不出来。
我书里面强调抽象,抓公理,就是这个意思,很多时候,我是逆向思考,如果我来写操作系统的某一部分,用什么办法,通常我最后考虑到方方面面的顾虑,想出来的办法,其实就是目前操作系统正在使用的办法。
学Linux,我觉得不需要看懂全部源码,至少我就没有看,我通过思考学习的结果,和源码其实差不多的。
问:
我想应该也是,只是现在以我的水平,我的思维,还达不到您那个档次,您站得高,高屋建瓴!
谢谢您的指点,我在网上买了《计算机组成原理》(唐朔飞),《电子技术基》(康华光,包括数字和模拟). 《数字电子技术基础》(阎石)。等你的书出了,再买本。
 
以后还请多多指点!十分感谢!