第一篇:从初学者到黑客高手,几种必学的编程语言
从初学者到黑客高手,几种必学的编程语言 本文来源于网络
对于初学者,我建议从 python 开始学。因为它在语言设计上很整洁,帮助文件也很全面。而且也是 object-oriented(O-O),尽管我把它作为一个初学者开始的语言,并不代表它的用处和功能不强大。实际上它是个功能强大,可以用来做大的编程工程的语言。我知道国内对 python 可能还不了解,因为它相对来说也比较新(1990),到现在有12年的历史了,但是它在国外已经被广泛接受和认同,快速发展。不过我知道邮电出版社最近刚出了一本介绍 python 编程的书,大家可以查询。python 的主页 www.xiexiebang.com
Java 也是个很好的语言来开始学编程。不过它比 python 复杂。国外的大学现在都采用 java 作为电脑专业的凯时语言。总之我觉得除了 python 之外,它也可以作为一个极好的初学者语言。
不过,会了这两种语言,并不代表你就是一个编程员了。学会编程的关键就是--“ 编程思想“。学会怎样用一种很“ 广泛的思维“ 去考虑“ 编程问题 “,也就是这种思维是可以放之于任何一种编程语言都可以解决问题的,而不是局限于单纯的一种语言。这样当你需要学习一种新的语言时,你只要学习他的语法等等就可以了,至于怎样用这种语言解决编程问题不是早就在你的脑子里了吗。所以,这也就是为什么很多程序员可以拿到一种语言,一两个星期就可以使用的很熟练了。这,也同样要求你去学几种完全不同的语言。
C 语言是非常有效率的,很多时候你都需要考虑内存的管理等底层的东西。很可惜这些都需要你去花很多的时间去做,问每一个 C/C++ 的程序员,用 C/C++ 编程是不是一个很头疼的事。好消息是,现在的机器都已经很高级,运算的很快,在很多时候我们是不用考虑用 C/C++ 去做,忽略它所带来的好处,当然除非这个工程真的很需要处理底层的东西(象 内核的编辑,3-D 图形等)。很多时候 python, java 等都可以实现。另外在现在很多工程所要求的时间都不是足够充裕来用 C/C++ 去做,所以在商业上时间就是金钱,这个代价谁也付不起。
我这里并没有说 C/C++ 不好,你不应该学。相反我觉得我们应该学,但不是作为一个
初学者的语言来学。在 C 和 C++ 之间,我推荐先学 C。.因为它相对来说较小,简单。作为一种底层编程语言,C,你可以学到很直接的内存管理,指针,等。另外,很多语言都是用 C 来设计的,比如 perl , java, python
其它语言值得一学的有 perl , Lisp(当然你也很一说 effile, proflog),提到 perl 是因为它的实用性,广泛的应用在网络和系统管理,perl 提倡 “There is always more than one way to do it” 这主要是从 perl 的语法以及它的独特设计上来获得,记得用几行code 你就可以写出很有效率的程序?这也就是为什么我很喜欢perl 了。但是perl 的语法着实让很多人头疼 而且对于用 perl 写的大型程序,维护性不是很好,python 就没有这方面的问题,这也是为什么很多 perl 的用户转向了 python。很多人用 perl 的目的和用 python 一样,避免在不要求 C 的效率时 使用 C。
Lisp 据说是很有启迪性的语言,会让你成为一个更好的程序员.(我还没有到达那个程度 :-)
我个人推荐(python, java, C ,perl, 和 Lisp),因为他们使用不同的方法来编程,每一种都会在某种程度上交给你些很有价值的东西。
谈到学习编程,单纯的上课和看书只会让你学习语言的特性等,只有学会用编程的思想来思考才是你终生受用的。这些只能依靠 “ 练习“ 具体就是 1)读程序 2)写程序 看似简单,但坚持下来你才会真正体会到,这里没有其他可以投机取巧的方法学习编程了。
至于学多少种,是越多越好吧。但并不是指每个都精通,我想大家也没那么多时间和精力。但在你有了坚实的编程经验和基础,了解其它语言的设计方法、构造会开阔你的眼界,没准什么时候你也可以编出自己的语言(咱中国人编的!):-)
要提醒大家的是,如果每种语言总是略学皮毛,然后又急匆匆的跳到另外一种语言,那你就会一事无成,永远彷徨在初学者的门槛边。我想这句话不只是对程序员,对我们来说也是生活中的一个道理
第二篇:从语言进步到编程
从语言进步到编程
1.语言和编程本是两码事
分不清语言和编程的人,估计很能学得好编程。
1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级的各个阶段。从机器代码到汇编语言,从汇编语言到高级语言,从高级语言到封装完善的编程框架,以后肯定还会出现更多高级的语言或是编程框架。
作为学习者,在初涉软件编程领域时,常常被众多的语言搞昏了头脑,被众多的编程框架折腾的晕头转向。在找不到软件编程规律之前,他们只能跟着所谓新技术走。正所谓C不流行了,要去学C++;C++不流行了,赶着学JAVA;MFC框架封装的不好,赶快去用.NET框架吧;还有太多的太多的名词,太多太多的中间件技术。某天在与一位程序员聊天时,他感言到:“现在的编程,就是数据库和网络,其它的都没什么用!”。是啊,连有经验的程序员都这么说,更何况那些没有编程经验的初学者。他们唯一能做的就是,什么新学什么,什么好学什么。到底,什么是新,什么是好?谁也说不清楚,倒是网上总有类似的大讨论,比较C++和JAVA的先进性,比较VC++和BCB优劣性。在这里,我只想告诫同学们,盲从只能让你晕得更长。
1.2 语言和编程其实两回事情
那么什么是编程?什么是好的编程?如果同学们能理解了这两句,我想你会发觉盲从编程新技术是一件很可怕也很可笑的事情。编程说到底就是向计算机说明一件事情,让计算机按照你的意图去做这件事情。事情的复杂性决定了说明的难度,即决定了编程的难度。编程的好坏其实就是说明事情的水平高低,如果你把事情说明的简明、扼要,而且还能为将来留有余地,那么你的编程就是好的。
语言又是什么呢?语言是人们与计算机交流的工具,人们借助编程语言来描述和说明要安排给计算机的事情。可见,语言是死的,编程是活的。前几日在网上发现一帖,把语言比作兵器,一个很生动形象的例子。对于不会编程的人,给他再好的兵器都是白搭;对于会编程的人,给他一把好兵器那是如虎添翼。《VC++编程技术与难点剖析》一书把语言比作猎枪,试想给你一把上等猎枪,如果你不会打猎的话,一样是一无所获。
可见,语言是形,编程是意;编程是语言的内在精神,语言是编程的外在载体。你把语言规范学得再好,如果不会编程的话,你依然会觉得茫然不知所措。当你领悟到编程思想时,你会发觉,其实用C语言也能写出面向对象的程序1。
1.3 语言靠学、编程需悟
回首十几年的英语学习,我不禁汗颜,除了背得一些单词,记住一些语法外,我张口还是说不出一句完整的英语句子来。一个深刻的体会便是就是不知道该怎么说英语。我想大部分同学对于软件编程的感受也是类似的,给你一个编程要求,即便你掌握了所有的C++语言规则,你还是觉得不知道该怎么编,不知道该从那里下手。
正如前面所述,语言是死的、是形。它是由一系列关键字和语法规则组成。掌握这些关键字和语法规则并不需要太长时间,因为这些内容远比英语单词要少的多的多。这部分内容是容易讲授,也容易被学生掌握。
关键字和语法规则是死的,但是如何灵活运用这些规则、综合这些规则确是活的。而这些正是编程真实含义所在。因此,运用语法规则描述一件事情其实非常复杂,实现功能只是最基本的,之上还有运行效率问题、扩展性问题、可移植性问题等等。同学们在学习编程时,一是需要老师在课堂上引导,但老师的引导只能是启发大家的思维,激发大家的思考;更多的还是今后在实际工作中的经验积累和不断的思考。不管是自己写代码,还是看别人代码,你只要思考清楚如下几个问题就可以了:
1)为什么要这么设计代码,这样设计有何优点; 2)导致这些优点的原因是什么;
3)把优点总结出来,尝试在自己的程序中去尽量运用这些优点;
4)这些优点能否再改进,并如何改进。
如果能坚持能做到前三点,那已经相当不得了了。最后一点是为大师级人物准备的,说不定在读某位未来可能就是××公司的首席架构设计师哦。
2.在使用语言中进化编程思想
从语言到编程,从编程到语言 ——语言学习和使用的过程是编程思想的积累过程,当你掌握思想之后,任何的语言形式都能体现你的思想精华。所以,首先把语言学习好吧。你真的掌握一门语言了吗?看看下面的文字再下结论不迟。
2.1 用低级语言去理解高级语言 低级语言是高级语言的基础,当我们对于一个高级语言的知识点难以把握时,最好的办法、也是最有效的办法就是去低级语言中寻求规律、寻求答案、寻找原则。这里我想举个例子,即指针的理解和使用。
指针可以说是一个没有完全完成从汇编语言到高级语言进化的变量,它是一个介于汇编语言和高级语言的东东。而C语言也是因为它,才变得更加的灵活强大,同时也让许多初学者望指针生畏。指针变量保存的是内存地址,地址访问体现了低级语言的特征;指针变量具有类型,变量类型体现了高级语言的特征。不要以为你知道指针是个内存地址,你就能从汇编语言上理解指针、使用好指针。对于指针的理解和使用还必须注意如下几个方面: 1)可执行程序中的什么元素会占用内存空间?与语言代码相关的,一般是数据和函数执行代码,这导致变量指针和函数指针概念的出现;
2)可执行程序是如何开辟和释放内存空间的?在C语言中包括局部变量、全局变量、静态变量、malloc/free函数对、结构体、联合体等等,到了C++语言又增加了对象(包括成员变量、静态成员变量、普通成员函数、虚拟函数和虚拟函数表)、new/delete操作符对,在Object Pascal语言中甚至还有类3。可见,只要是语言中使用到的系统资源(包括变量和函数)都需要关心它在内存中的开辟和释放机制。
3)只有在掌握2)的基础之上,你才能准确的知道代码中的指针是否指向存在的或是未被释放的内存空间,而这是正确使用指针的重要原则之一。
4)如果是变量指针,指针类型对于四个字节的内存地址而言毫无意义。它的引入,不过是在告诉C/C++语言编译器,当代码对指针进行加减操作时,它该如何以多大的步长增减地址;当代码对指针进行取值(*,->)操作时,它该以多大的位移取多大内存空间的值。仅此而已。
5)如果是函数指针,指针类型对于内存地址也是毫无意义的。它的引入,是在告诉C/C++语言编译器,当代码使用指针调用函数时,它该如何为函数调用生成汇编代码。函数的调用会涉及一些堆栈或是寄存器操作,而不同的输入、输出参数对应的这些操作是不相同的。当我们分析清楚可执行程序的内存开辟和释放机制时,当我们从编译器的角度去理解指针类型的含义时,可以自然的总结如下的指针使用原则:
1)保证对指针取值时,指针指向的内存空间是有效的
2)存储指针时,把它当作占四个字节的任何变量,指针指向的类型可以是任何变量类型。
3)对指针取值操作时,确保恰当的指针类型的转型。讲到这里,请大家再去理解以前课本中反反复复提到的传值和传地址的区别。其实把指针参数理解为传地址不过是便于理解吧。如果你从汇编角度理解,传值和传地址的操作是完全一样。当你从指针本身的内容来看,传地址就是在传递指针的地址值,就是传值,和传递个int变量毫无区别;当你从指针所指向的内容来看,就是一般书中所讲述的传地址。
高级语言便于理解、易于掌握,也大大提高了程序员的编程效率。但是,如果我们仅停留在高级语言层面上,不去究根问底,不去追根溯源,那我们只能算是浅尝辄止。
其实,“用低级语言去理解高级语言”也意味着用底层的知识去理解上层的东西,用基础的知识去把握基础之上的东西。好比用汇编语言去理解高级语言、用Win32、OOP和C++去理解MFC框架、用Win32、OOP和Object Pascal去理解VCL框架、用Windows Socket、OOP和C++去理解VC++中的网络编程技术、用Windows Socket、OOP和Object Pascal去理解Delphi中的网络控件。诸如此类的例子真是举不胜数。
请记住,当你站在优秀平台上舞刀弄棒、学个一招半式时,千万别沉浸于表面上的成功。试想,当你用BCB的几个数据库控件成功访问数据库的时候,有多少东西是你自己做的,你又学到了多少东西。可以说,你所学到的不过是类似于打字操作、文档编辑之类的简单操作而已。
任何高级的编程技术或是平台都不是空穴来风的。努力把它们的基础和结构分析清楚,你至少可以得到如下两点好处:
1)对于新技术或新平台的全面掌握和灵活运用,正所谓庖丁解牛,咴咴呼而游刃有余。2)从深入分析和探索中获取编程的思想,正所谓深入成就深度。
2.2 体会语言设计者的初衷 正如上面所述,任何新的编程技术或平台都不是空穴来风,更不是某位天才一拍脑袋就想出来的。创新肯定是有源动力的,新技术肯定是为解决既有技术的不足才出现的。说白了创新就是为了更高、更快、更强。试想,如果你能把握住新技术的来龙去脉,理解设计者的良苦用心,那你就可以把这项新技术在恰当的时间、恰当的地点、以最恰当的方式使用起来。在此我也想举个例子,即虚函数和动态函数4。
虚函数是C++语言中的重要概念之一。简单的说,虚函数因多态而生,多态因抽象统一接口(接口可以理解为方法)而起。虚函数出现的根源就是抽象统一的接口。
抽象是人类探索、描述客观世界的利器。如何把纷繁复杂、变化多样的各种事物描述清楚,唯一的方法就是抽象。语言也不例外。水果、衣服、车、食物、粮食等等,这些都是抽象出来的名词,正如在课堂中所说,“吃水果可以吃尽天下所有的水果,不管是已发现的,还是未发现的”。抽象抓住了事物的本质与共性。保证了相对的稳定性,实现了以不变应万变的强大功能5。可见,只有抽象才能统一接口。
通过抽象,可以把各种各样事物的接口都抽象成一个接口。例如,可以把吃苹果、吃梨子、吃菠萝、吃西瓜等等都抽象成吃水果。但是,在真正使用抽象接口时,必须把抽象接口还原到具体事物的真实接口中去。例如,水果是抽象的,没法吃,吃水果这个抽象方法一定要还原到吃具体水果中去才有意义。这样,一个抽象统一的接口,却有许多种具体的表现形式,这便是是多态。
当我们编写一个类库时,如果能尽可能多的使用抽象的思想去统一类库(或是各个子类)的接口,那么至少有如下几点好处:
1)对于使用者,由于接口简单,大大简化了学习类库和使用类库的工作; 2)对于使用者,由于接口统一,相对稳定,使用者编写出来的代码具有很强的扩展性,即便在今后类库又派生出新的子类,使用者编写的代码也无需作任何修改,因为接口是统一的,相对固定的。
3)对于设计者,由于应用了抽象,类库的层次清晰。当派生新的子类时,父类已经划定了抽象的框框,按照既有框框实现具体接口即可。
试想,如果能够理解虚函数的设计初衷是为了抽象统一接口,那么在父类设计中该如何设计虚函数也就把握住了最根本的原则,即能够从多种对象中抽象统一出来,且每个对象的具体实现又都不同的方法,都设计为虚函数。
至此,文章已经分析了C++引入虚函数的根本原因。但此后,在BCB中,Borland公司的天才们又设计出能够完全实现多态机制的另一种方法,动态函数。有心人不禁要问,既然虚函数可以实现多态机制,干吗还要引入动态函数呢?这两个函数有什么区别呢?孰优孰劣呢?引入动态函数的初衷又是什么呢?
呵呵,疑问总是探索未知领域的源动力。而疑问意识并不是每个人都具备的,越是大家,越是对习以为常的事物产生疑问。好比牛顿被苹果砸了脑袋,这引发了他研究万有引力。我想,绝大部分人被苹果砸到吐血都不会产生类似疑问。思维定式和传统教育的灌输扼杀了绝大部分人的疑问意识,也就同时扼杀了他们的探索、创新意识。话题在回到动态函数。
C++语言通过虚拟函数表VMT实现了虚拟函数的多态机制。对于VMT的内存分配,许多C++著作中都作了详细说明,在此不再赘述。了解VMT的内存分配机制之后,你会发现,C++设计者对于VMT的设计原则是以存储空间换取调用时间,即重复存储虚拟函数地址,保证虚拟函数的调用不会导致很多的指针访问。不管是父类还是子类,不管子类是否覆盖了父类的虚拟函数,虚拟函数的调用都只会触发相同数量的指针访问,既由对象指针(this)获取VMT指针,由VMT指针获取虚拟函数指针。
以存储空间换取调用时间的设计原则,提高了调用虚拟函数的运行效率,但耗费了较多的存储空间。在写一般C++程序时,可能并不会感觉到虚拟函数的这一设计有什么缺点。但是,如果父类需要定义很多的虚拟函数,只有很小一部分的虚拟函数会被子类覆盖或调用,而且类的派生层次又非常深(如有7层以上)。在这种情况下,每个子类VMT都会因父类定义太多的虚拟函数而占据大量的内存空间,但程序运行时,通过子类VMT调用的虚拟函数又很少。此时,以存储空间换取调用时间的设计原则就变得效率低下,不太适用了。有同学会问,会存在以上的特殊情况吗?的确存在,在MFC和VCL封装Win32消息机制时,就面临上述类似的问题。消息封装的最初思路就是在父类中为每个消息定义一个虚拟函数,作为消息的处理函数。如果子类控件需要处理某个消息,它就覆盖与该消息对应的虚拟函数。试想,Windows有上百个消息,为每个消息定义一个虚拟函数,也就是至少100个虚拟函数。可是子类控件对于大部分消息都是默认处理,它只会处理一小部分消息,即覆
盖一小部分虚拟函数。可见,使用上述的完全虚拟函数的设计方法来实现消息的封装显然存在较大问题,一是VMT会消耗太多的内存空间;二是对VMT内存空间的访问率、使用率低下。
基于上述缺点,MFC和VCL对于消息的封装不得不另换思路。为此,Microsoft为MFC引入了消息映射网的设计思路6,而Borland仰仗在编译器设计上的深厚功力,引入了动态函数/消息函数。动态函数的设计原则与虚拟函数恰恰相反,即以调用时间换取存储空间。正如虚拟函数指针存放在VMT中一样,动态函数指针也存放在类似的DMT中。但DMT只存储本类覆盖或是定义的虚拟函数,不存储父类的虚拟函数。而且,子类DMT会存储一个指向父类DMT的指针,如此设计是为了子类对象能够调用到父类定义的虚拟函数。有个极端的情况就是,子类对象调用根类定义的虚拟函数,此时的动态函数调用因为多层父类DMT的访问而变得效率低下。
可见,如果我们能够很好的把握设计者的初衷,深入到设计者当时所处的场景,理解设计者当时的设计思路,自然就能够统观全局的把握新技术、心领神会的运用新技术。
2.3 其它的建议
还有些其它的建议,不成体系,单另列出:
1)多编写一些封装的小例子来培养自己面向对象的编程思想,如字符串类CString、文件类CFile、内存管理类CBuffer。
2)要有选择的阅读参考书。如今的计算机书籍可谓良莠不齐,也让初学者挑花了眼睛。我觉得书籍的选择应遵循如下原则:不买只有例子的、只会抄袭的书;只买一本大全、宝典之类的工具查询书;多买讲解编程思想、源码分析的书。
冰冻三尺非一日之寒,从语言进步到编程需要长时间的积累和大量的思考。当质疑、探索、总结、再运用的方法帮助你掌握编程后,你会发现你所获得的东西远比编程本身要多得太多、高得太多、广得太多。
第三篇:从“游戏高手”到“写诗高手”
一、学生现状:小韦同学在初
一、初二年级时是全级有名的双差生,经常迟到,旷课,早退。无心向学,作业不交。更有甚者,经常出入游戏机室,有时上午上了一、二节课去,有时下午去,有时晚修去。玩游戏玩得“天昏地暗,出神入化”同学们都称他为“游戏高手”。老师和他父母知道这事后,控制好他的时间和零花钱,他就通过偷或骗的手段弄钱。开始时偷或骗家里人的钱,但后来发展到偷或骗外人的钱。随着玩瘾越来越大,他的学习成绩也越来越糟了。父母急得没办法,甚至把他吊起来打,但毫无效果。他对老师的教育也无动于衷,沉默以对。不少教师和同学,还有他的亲属都认为像小韦这样的人是不可救药的。
二、调查分析:为什么小韦会成为一个这样的人呢?本人接任他的班主任后就开始思考起这个问题,并引起了我的研究兴趣。于是我就了解他的家人,他的同学和他以前的教师,掌握第一手资料后,才直接去面对他。试图找到教育他的突破口和最适合的教育契机。从他的家人那里得知,家庭条件较好,性格倔强,经常说谎话,家庭教育粗暴,对他已彻底失望;同学反影,他虽然经常迟到旷课,但学习成绩还过得去,同学们都佩服他的小聪明;他以前的老师对他性格倔强,说谎话,经常违反纪律印象深刻,坚持要处分他,埋怨学校不配合。然后,采用迂回教育策略,先得到他的信任,使他感到教师有一颗关心他和爱他的心,接着一次又一次地同他进行推心置腹的谈话,把他的心里话都掏出来。有一次他谈到玩游戏机的感觉时说:“我当时整个心思都放在游戏机上,我输了就更想玩,想研究如何才能打赢;我赢了也更想玩,想真正显示自己一下,并且再去研究其他游戏。”他另一次他对我说:“其实我也很痛苦,回到家里没有温暖,回到学校里也没有温暖,没有同学跟我玩,老师也没有好脸色给我看,只有到了游戏里,我才能忘记这些,才能得到安宁。”甚至有一次他坦白地对我说:“上课时我开小差,想到打赢时的场面,多么辉煌!我有时会凭空设想出一种新玩法,于是我就迫不及待地去试一下。”综合各方面了解到的情况,造成他目前这样的原因可归纳为:
1、由于社会上游戏机室,网吧泛滥,监管不力,自制力差的中小学生沉溺其中;
2、由于家庭教育方式简单粗暴,使他感觉不到家庭父母的温暖;
3、学校教育的偏差,教师同学的鄙视,使他感觉不到教师的爱心和同学的友谊;
4、个人的道德意志薄弱,自控能力差。
三、教育对策:
1、动用一切教育资源,与游戏机争夺他,使他远离游戏。要想拉住他,首先应让他心里明白玩游戏的上瘾的原理和危害性,动之以情,晓之以理,让他写一写对玩游戏上瘾的原理和危害性的知识,使其深刻认识到它的严重性和危害性,其次,借助舆论的力量,开展主题班会《迷恋电子游戏和网吧的危害性》,使班中每一位同学都充分认识到它的危害性,不但使他们自己增强免疫力,也使班集体形成正确的舆论,创造良好的教育氛围。再其次,同其父母商量对他的教育方式方法,要求他们摒弃简单粗暴的教育方法,尽量使他感到家庭的温暖和父母的爱,多观察,多关心,多谈心,多引导,多肯定;最后运用学校的老师和同学的力量,把他拉住。要求其它科任老师也应关心他,爱护他,使他感觉到学校的温暖,还要求班干部主动地,有意识地同他交往,使他感觉到同学的友谊。还要求他加入学习兴趣小组,发挥他的兴趣和特长。
2、使用一切手段增强其自我控制的意识和能力。我想我们不能永远拉住他,必须让他学会自己控制自己,提高明辨是非的能力和自身的免疫力。经过一段时间的努力,学习上基本转入正常状态。在肯定他的进步的同时,我对他提出更高的要求:每天写日记,通过写日记来反省自己,看到自己的长处,也看到自己的不足。坚持天天记日记,以锻炼自己的意志和毅力。另外,还要求其积极参加体育锻炼,如参加长跑和爬山等,在运动中锻炼自己顽强的意志力。
3、转移兴趣,引入正道,巩固教育成果。除掉杂草的最好方式就是种上庄稼。如果只满足于他不再玩游戏机了,而不设法认真地帮助他把学习成绩搞上去,就会前功尽弃。因为一个学生如果在学习上老跟不上队,学校和班级对他就会失去吸引力,对学生,无兴趣就会重新导致他旧瘾复发。如果出现反复,再进行教育工作难度就更大了。有一次,我偶然发现他写了几首诗歌,于是我就意识到这是一个很好的突破点,一个很好的教育契机,心中就有了一个教育对策。于是便同语文老师商量,制订出教育他的计划。先对他的诗歌给予肯定,然后指导他写诗,并给他的诗歌润色,最后创造机会让他在课堂上朗诵他的诗歌,在班级的墙报上选用他的诗歌,并把他的诗歌推荐给学校文学刊物“新榕”发表。同学们都称他为“写诗高手”。在这一教育过程中,他逐步找到了自尊和自信,并从学习中获得了成功感。在班级中,我再对他的成功感进行强化,并对他提出一些切实可行的要求。要求他加强基础知识学习,把浪费的时光补回来,鼓励他要把学习成绩搞上去,经过他本人和各科任老师的努力,他的学习成绩有了很大的进步。中段考时,他获取了
第四篇:2012公务员从入门到高手(精华版)
写在前面:各位还在公考泥潭中的兄弟姐妹们,真的是辛苦了。我在考上本省的公务员之前,也有很多一起在路上的朋友帮助过我,所以我整理了这篇文章回馈给大家。行测靠的是熟练掌握技巧和大量的练习。技巧的话,本篇文章已经基本涵盖了,关键还是大量练习,我当初每天都有按照自己的计划,在看完技巧之后,去591up公务员平台 上在线做对应的专项练习,然后每天参加两次网站里的竞赛。这样基本就可以了。我申论不是很好,不过在网站里在线做申论练习,再提交老师批改,效果还可以。公务员考试贵在坚持,祝大家好运!
一、公务员考试入门
1.2.3.4.5.6.7.公务员考试报考条件各地人事考试网链接(在博客的左边一列)
二、技巧类文章
1、行测技巧:
总体技巧:
1.2.3.4.专项技巧:
1.2.3.4.5.复习技巧:
1.2.2、申论技巧:
备考技巧:
2.3.临场技巧:
1.2.3.4.阅卷经验:
1.3、面试技巧:
备考技巧:
1.2.3.4.国家公务员历年面试流程说明
临场技巧:
1.2.3.心得体会:
1.2.4、综合技巧:
1.2.3.三、热门资源下载
1.2.3.4.5.7.8.9.四、超强公务员考试备考网站推荐
1.(完全免费,海量权威试题,还有竞赛系统、申论免费批改
系统)
(让你随时随地都能轻松学习)2.(论坛内容丰富,资料更新及时)
3.(将时事尽收眼底,让考试变得轻松)
4.(权威资讯,权威评论)
最后,祝大家都能取得好成绩!
第五篇:从51初学者到电子工程师
从51初学者到电子工程师
简介:转:从51初学者到电子工程师1 关键字:单片机
从51初学者到电子工程师1
从初学者到电子工程师
一、前言
很多电子工程师在某个方面精深钻研,成为某一个特殊领域的专家,从一开始的养 家糊口、慢慢小有收益、最后宝马豪宅,也是有的;这些电子工程师可能没有全面 掌握这些知识,因为这些行业用不上,例如,液晶显示器,很多行业就不需要;但 是,对于一个初学者,我认为,这个提纲是切合实际的,对于面向控制而言,已经 基本够用了;对于初学者,全面地掌握这些知识是很有必要的,因为你不知道今后 需要使用什么哪些知识,而这些知识, 80%以上你会在今后的工作中使用上,因为 这是都是最基本的。熟练掌握这些知识和应用,根据不同的地区、行业和老板,月 薪应该可以在3000元~5000元之间,甚至更高。
其实,可能有些你用不上,但是知道了也没有坏处;所谓书到用时方很少,又有谓 艺不压身。知识=月薪=年薪=金钱=香车宝马=……..,呵呵。
为什么要掌握这些知识?
实际上,电子工程师就是将一堆器件搭在一起,注入思想(程序),完成原来的这 些器件分离时无法完成的功能,做成一个成品。所需要的技能越高、功能越复杂、成本越低、市场上对相应的东东的需求越大,就越成功。这就是电子工程师的自身 的价值。从成本到产品售出,之间的差价就是企业的追求。作为企业的老板,是在 市场上去寻找这样的应用;对电子工程师而言,是将老板提出的需求或者应用按照 一定的构思原则(成本最低、可*性最高、电路板最小、功能最强大等)在最短的 时间内完成。最短的时间,跟电子工程师的熟练程度、工作效率和工作时间直接有 关。这就是电子工程师的价值。
将电子产品抽象成一个硬件的模型,大约有以下组成:
1)输入
2)处理核心
3)输出
输入基本上有以下的可能:
1)键盘
2)串行接口(RS232/485/can bus/以太网/USB)
3)开关量(TTL,电流环路,干接点)
4)模拟量(4~20ma、0~10ma、0~5V(平衡和非平衡信号))
输出基本上有以下组成:
1)串行接口(RS232/485/can bus/以太网/USB)
2)开关量(TTL、电流环路、干接点、功率驱动)
3)模拟量(4~20ma, 0~10ma,0~5V(平衡和非平衡信号))
4)LED显示:发光管、八字
5)液晶显示器
6)蜂鸣器
处理核心主要有:
1)8位单片机,主要就是51系列
2)32位arm单片机,主要有atmel和三星系列
51系列单片机现在看来,只能做一些简单的应用,说白了,这个芯片也就是做单一 的一件事情,做多了,不如使用arm来做;还可以在arm上加一个操作系统,程序既 可*又容易编写。
最近三星的arm受到追捧,价格便宜,以太网和USB的接口也有,周立功的开发系统 也便宜,作为学习ARM的产品来说,应该是最好的;作为工业级的控制,是不是合 适,在网友中有不同的看法和争议。本公司使用atmel ARM91系列开发的1个室外使 用的产品,在北京室外使用,没有任何的通风和加热的措施,从去年的5月份到现 在,运行情况良好。已经有个成功应用的案例。
但对于初学者来说,应该从51着手,一方面,51还是入门级的芯片,作为初学者练 手还是比较好的,可以将以上的概念走一遍;很多特殊的单片机也是在51的核的基 础上增加了一些I/O和A/D、D/A;也为今后学习更高一级的单片机和ARM打下基础。再说了,哪个老板会将ARM级别的开发放在连51也没有学过的新手手中?
在51上面去做复杂的并行扩展是没有必要的,比如,扩展I/O口和A/D、D/A等等, 可以直接买带有A/D、D/A的单片机;或者直接使用ARM,它的I/O口线口多。可以使 用I2C接口的芯片,扩展I/O口和A/D、D/A,以及SPI接口扩展LED显示,例如: MAX7219等芯片。
市面上一些比较古老的书籍中还有一些并行扩展的例子,如:RAM、EPROM、A/D、D/A等,我觉得已经没有必要去看了,知道历史上有这些一回事就行了;这些知识,是所有产品都具备的要素。所以要学,再具体应用。
说一个小的故事:野人献曝。
从前,有一个农民,冬天干了活后,休息晒太阳。好舒服呀。
他想,这么舒服的享受,我要献给国王,让他也能得到享受。
于是他兴冲冲地到了王宫,将他的宝贵经验献给了国王。
我现在就象这个农民,把自己认为很宝贵的经验献给大家。希望大家多提宝贵意见;拍板砖也可以,骂我也无所谓,呵呵,随便。简介:从51初学者到电子工程师2 关键字:单片机
从51初学者到电子工程师2
第一课:51单片机最小系统
实际上,51单片机核心外围电路是很简单的,一个单片机+一个看门狗+一个晶振 +2个磁片电容;
1.单片机:atmel的89C51系列、winbond的78E52系列,还有philips的系列,都差 不多;现在有一些有ISP(在线下载的),就更好用了;
2.看门狗:种类很多,我常用的有max691/ca1161和DS1832等,具体看个人习惯、芯片工作电压、封装等。Max系列和DS系列,还有IMP公司的,种类很多,一般只需 要有最基本的功能就可以了;原来我使用max691,但是max691比较贵,因为它有电 池切换功能,后来新设计电路板,就都采用ca1161了。
很早以前的电路设计中,现在可能还有人使用,使用一个电阻和一个电容达成的上 电复位电路;但是,这样的复位电路一个是不可*,为什么不可*,网络上能找得 到专门论述复位电路的文章;更重要的是,51系列的单片机比较容易受到干扰;没 有看门狗电路是不行的,当程序跑飞时,回不来了,死在那里。
常规的做法是买一个专门的看门狗电路,完成复位电路和看门狗电路的功能。
这些芯片的资料很容易在网络上找到,通常使用百度搜索就可以了;看见有PDF的 字样,就点击下载;使用网际快车flashget下载也是最好的;这些资料通常是pdf格式的文件,所以,还需要一个pdf的阅读器。
实际上,有了百度和google以及其它的搜索引擎,很方便下载到这些芯片的资料,比光盘还方 便,不需要去到处找。
单片机和单片机抗干扰能力是不一样的。如果你的产品是工作在干扰比较大的环境 ,可以试试选用不同品牌的单片机;原来我在一个光电所,做YAG激光治疗机的控 制部分,脉冲激光机的电源放电的时候,能量是很大的,在采取了所有能够想到的 光电隔离等措施之后,还是不行;后来,选用了intel的8031,就可以了。小声的 说:当时的philips的单片机抗干扰性能是最差的,可能跟Philips主要是用在民用 领域有关。现在不知道怎么样了,有人知道的话告诉我。
单片机的输入输出口线是最容易引进干扰的地方;在严重干扰的情况下,需要将所 有的口线光电隔离。
3.晶振:一般选用11.0592M,因为可以准确地得到9600波特率和19200波特率;也 可以使用36.864M,这个频率是1.8432M的20倍,看别人的电路板上用过,我也没有 用到。这2种晶振很容易买到,价钱跟12M的一样。书上说,12M的晶振也能得到 9600的波特率,但是,实际用的时候,会每隔一段时间就出错一次,好像累积误差 一样,比较奇怪。
即使你的单片机系统不使用RS232接口,也可以做一个Rs232,留着做测试,或者预 留等等,没有坏处。除非你的单片机系统的口线不够用了。
4.磁片电容:22pf~30pf,可以在有些书上找到什么晶振频率对应什么容量的磁 片电容,但是,我都是随便拿来使用,反正在11.0592M下,都没有问题;如果你用 到了更高的频率,最好还是找找资料看看。
参见以下电路图:
如果你的单片机系统没有工作,检查步骤如下:
1.查看门狗的复位输出,可能的话在电路板上加一个LED,下拉,这样看起来就更 方便;要是看门狗复位信号有,往下;
2.查单片机,看看管脚有没有问题;一般编程器能够将程序写入,说明单片机是 好的;最好手头上准备一个验证过的单片机,内部有一个简单的程序,比如,在某 个口线上输出1个1秒占空比的方波等,可以使用万用表测量。
加一句:设计产品时,要在关键的地方:电源、串口、看门狗的输出和输入、I/O 口等加不同颜色的LED指示,便于调试;作为批量大的产品,可以去掉部分LED,一 方面是降低成本、一方面是流程保密;
3.再查磁片电容,有些瓷片电容质量不行,干脆换了;顺便说一下,换器件最好 使用吸锡带,将焊盘内的锡吸干净,再将器件拔出,这样不会损伤焊盘内的过孔;再将新的瓷片电容焊接上去的时候,用万用表量量是好的再焊;4.最后只有换晶振了;切记要买好的晶振,有些品牌质量比较好。
5.以上按照以上步骤检测时,将无关的外围芯片去掉;因为有一些是外围器件的 故障导致单片机最小系统没有工作。
简介:从51初学者到电子工程师3 关键字:单片机
从51初学者到电子工程师3 第二课 基本的芯片和分立器件
2.1 简述
2.2 74系列
2.3 CD4000系列
2.4 光耦与光电管
2.5 三极管
2.6 电容电阻
2.7 固态继电器
2.8 继电器
2.9 变压器和三端稳压器
2.10 开关电源芯片
2.11 封装知识、芯片批号等
2.12 接插件
2.13 器件选购的知识
第三课 数字量的输入输出
第四课 单片机的通讯接口
第五课 单片机系统设计的硬件构思
第六课 单片机程序的框架(汇编版本)
第七课 模拟量的输入输出
……
各位多提宝贵意见。
保证实用。如果程序里面有一些例程,也是已经经过测试可以拿来就用的;实际上 是我早年的一些产品的程序的一部分;不好意思,都是汇编的。
写的时间只有周末会多一些,可以保证做到一周一课;尽量能够提前,但是这要看 看工作忙不忙了。
坊间有一些参考书,准备今天上午到北京中发市场转了一圈,我记得以下参考书目 较好:
1.周航慈:《单片机程序设计》
2.徐涵芳:《MCS-51单片机结构与设计》
3.何立民:《......》
有了这些就基本够用了;其它的很多都是资料的翻译;如果英文不好,可以看看;英文好的话,可以不必了,省电钱买开发系统和编程器、开发板什么的,需要什么 资料直接下载PDF文件好了。
要想成为电子工程师,需要宽带,在家里安装包月的adsl或者长宽,绝对值得。
实际上,网络上什么都有了,就是一个网络数据库,要好好利用。
网上自有黄金屋,网上自有颜如玉…… 第二课 基本的芯片和分立器件
2.1 简述
有必要对以下系列的芯片和分立器件进行介绍。
除了单片机作为控制器的核心外,作为一个产品,由很多东西构成;所以,在讲系 统之前,先将这些零零碎碎的东西一并交待。就好像一栋房子,有各种各样的构件 组成,下面的这些东东就像砖瓦一样,没有不行。
2.2 74系列芯片
74系列的芯片的下载地址:
http:// http://
74系列的芯片是古老的一族,大部分的芯片现在均已不用了,但是,实际上,在目 前的系统中,还能看到一些芯片,有些芯片现在还在系统中使用,例如:
1、7404 – 6个反相门 下载地址:
http:// http://www.xiexiebang.comG 0323PY
MAXIM就是芯片的厂家;
MAX7219CNG是厂家的型号,CNG跟封装和7219这个系列产品的细微的差别有关;03是指2003年;23是指该年的第23周;一年是52周,所以这个数字不会超出52;激光打标是在芯片上形成一个暗色的与芯片表面有一个明显对比的标志;中关村的 大恒公司就有激光打标机的业务;但是未必是在芯片上打标;
有时,激光打标会产生类似暗黄色的标志,这跟激光器功率和芯片封装材料有关。
简介:从51初学者到电子工程师(7)关键字:单片机
从51初学者到电子工程师(7)
不好意思,第二课没有写完,又开一课--老树当过老师,有毁人不倦的习惯,再者 ,这个问题想了很久了,也基本想通了。
在网络上很多初学者在问:怎样成为一个合格的电子工程师?
这个问题有很多答案。老树谈谈自己的看法。
第一步 入门-51核心和基本电路
中国人有10亿啊,每年有多少大学生毕业呢?我不知道。但是我看到有一张照片, 招聘会上熙熙攘攘,人来人往,十分震撼。从来没有一个时刻让我感觉到中国的人 力资源是如此的丰富。但是,从现在的大学毕业出来的学生学到了什么东西呢?一 些理论,跟实际脱钩的理论。有没有用呢?有点用。但是,在企业中,需要的是实 际干点事情出来,实际解决问题。所以说,很多企业不想要大学本科出来的大学生 ,说动手,没有动手能力,不知道电阻电容长得什么样子,能够做什么?但是又自 视甚高,对工资的期望值比较高。等到能够干点事情了,又拍拍屁股跑了。所以企 业现在喜欢使用大专中专甚至是职业学校培训出来的小孩,至少这些孩子们知道自 己的份量,能够实实在在地做事。要知道,他们很多人的天赋并不差,有些人甚至 可以说聪明,只是因为很多人是家庭条件不好,打小就是苦孩子,没有条件接受良 好的教育。一旦给机会,他们都比较珍惜。
现在的大学,误人子弟甚多。扩招是没有错,但是,实验室扩了吗?教室扩了吗? 教师扩了吗?至少实验室是没有扩。老树认得的一个研究生说,只有到了一个阶段 ,才能到实验室作实验。很多导师就是把学生当奴隶一样干活,要是在干活中能够 学到东西那就算是运气好的;运气不好的,直接就是导师的廉价的劳力了,学不到 东西,活倒干了不少。
但是,既然学生要拿文凭,要应付考试,没有办法,那怎么自救?
如果励志要做一名出色的电子工程师,老树可以谈谈自己的看法。
做一个电子工程师,先从51学起,这是得到公认的。不需老树饶舌。
首先,去买一个开发板,越便宜的越好,在上面可以练练keil C。最好再买一个仿 真器,这样调试的效率高。当然这个不便宜,但是我觉得可以志同道合的哥几个合 买。反正1天24小时,每人8个小时轮流上,有个几个月,C51语言也就差不多了。
其次,看看老树的文章,看看需要学点什么基本的东西。北京的大学生有福啊,没 事到中发去转转,认认老树的文章上说得哪些电阻、电容、三极管、芯片、接插件 什么的,看看自己的电脑上的主板、网卡、声卡、显卡是怎么画的,找找感觉,这 些板卡都是高手的杰作啊。
构思一个小的产品,按照老树文章上的思考题,找本protel99se的书,从每个菜单 练起,循序渐进,从单片机最小系统->输入->LED->RS232/RS422/RS485->固态继电 器、继电器等原理图画起,边画边学,一点一点做,做好了,最好找个高手看看, 找出毛病在哪里,再反复改进。在这样的模拟实战中找到感觉。
推荐老虎工作室的protel 99系列4本,写的还是循序渐进的,当然不便宜;咬咬牙 ,可以合买一套,轮着看。
顺便说一句我对市场上的开发板的看法,这些开发板当然都不错,但是,只能学到 语言,不能教你画原理图和PCB,实际做的时候,还是需要高手带一带是最快的。我就是一个朋友教我的,也就半天的功夫,就会了。当时还是DOS下的protel 3.16 版本。
以战养战。找个公司、企业,帮他们做个小产品,既能得到公司的高手的指点,又 能赚到一笔费用,岂不甚佳?这时,你的开发板、仿真器的费用就出来了。从原理 图->PCB->C51,单片机也入门了。
第二步:登堂入室-掌握系统的电路知识
这时,需要对电子技术的所有东东进行全面的了解,主要是看看杂志、BBS、网站 上的技术文章、何立民先生主持编著的《单片机应用技术大全》系列,将单片机和 它的配套的电路,输入输出、通讯等等做一个全面的了解。目标是为什么?系统的 技术储备。知道什么问题可以使用什么方法解决,可能在什么地方找到解决的方法 ,这对你以后走上工作岗位,解决实际问题是非常有好处的。如果你真能这么做, 那么,你今后肯定比单位中的老同志还要棒。
老树在国营研究所的时候,曾经有一段时间无所事事,就是在那一两年的时间内将 研究所的技术杂志看了一遍,尤其是《电子技术应用》。打下了一个良好的基础。
这时,争取机会,学习高手们的硬件设计。一个比较快的办法就是到工控机的厂家 那里,看看工控机的板卡和调理板是怎样设计的,都使用了哪些东西。记得老树第 一次看到国外的一个器件,到处去问,也不知道是什么东东。后来在四通工控那里 看到了,原来是固态继电器。这时,脑子里关于固态继电器的知识都冒出来了。再 一看,配套市场大把的。
什么东西就是这样,你要是不知道它是干什么的,你天天看见,也熟视无睹。
有心人就是这样,在什么样的情况下,都能慢慢积蓄知识和力量。毕竟一个产品, 不是只会单片机就可以了,还是需要很多的外围电路,按照何老师的分类,前向、后向、人机、互相通道等,才能做成一件产品的。
这个时候,抓住任何机会,去参与一个大型产品开发,在其中做一件事情,你可以 学到沟通、协作、界面等产品开发的一些要素。
第三步:勤奋至卓越
中国人多啊,每个人都是智商100,谁比谁傻啊。凭什么你比别人强?你能有好的 工作、好的收入,你能香车宝马,醇酒美人?老树认为,没有别的办法,就是*勤 奋。
勤奋学习-这个道理大家知道,知识就是金钱啊;
勤奋工作-想比别人多赚钱,在智商相同的情况下,就是*多付出时间干活,再提 高工作效率。别人5×8小时工作,你是7×16小时,再提高工作效率一倍,你不久 赚了比别人多5倍的钱吗?老树公司有2个员工,原来在老家种苹果,没有赚到钱, 到老树的公司中干活,计件,活忙的时候,早晨8:00起来,晚上12:00收工,年 底也赚了一笔钱回家,高高兴兴,老树也开心,原来一屋子人干的活,现在2个人 干了,公司管理省事了,员工也赚到了钱。
开发也是一样。当然,这个需要你的公司有这个机制,多劳多得的机制。但是,要 是现在没有,你要不要这样干呢?
我认为,需要。一方面,干别人的活,练自己的技术,长自己的本事。另一方面, 多干活,才能快速增长本事,技术才能跃变、突破,登堂入室,再得心应手、出神 入化。至少,熟练工种是没有问题的吧。
就象一壶水,老是小火,烧了半天,也是温吞水;可是大火一上,一会就开了,就 是这个意思。
你看《射雕英雄转》中的郭靖,没有别的本事,就是傻练,有一天开窍了,如有神 助。技术这个东西就是这样,突破了门槛,就是坦途。需要勤奋勤奋再勤奋。有一 天这个日子来了,你就苦尽甘来了。
勤奋还有另外一个含意,就是天道酬勤。其实是每个人看见勤奋的人,都会给他机 会的,觉得帮助这样的人,高兴;把事情放在他的手里,也放心。
还有一个含意是触类旁通。知识需要很多的参照物,去比较、联想、萃取、升华。换句话,你可能付出的是其他人的n倍的努力,可是你得到的是n倍以上的回报,你 的知识已经不是简单的累加了,已经质变了。
如果你在这个单位,勤奋了,也出成果了,就是没有得到公平的待遇,也没有关系。换一个环境就是了,总有人会欣赏你的。再说了,付出总有回报。
有些人习惯怨天尤人,没有好的老爸老妈,没有好的老师,没有好的同伴,没有好 的环境,没有好的老板。这些人需要去看看周立功的文章,看看周老师怎样一步步 成长的。
第四步:沟通、协作
原来还有,现在越来越少,做一个小的产品,就可以生活无忧。
第五步:对某个行业深入理解
每个人生存在这个世界上,大都需要有一门独到的技术;更何况你是这个论坛的读 者;
有的人天生千娇百媚,有的人天生金嗓子,有的人有个好的老爸老妈;这些都不足 为恃,更何况没有这些天赋呢?
当你掌握了单片机、ARM、CPLD/FPGA等高端的技术,应该说,养身立命是没有问题 了,可以解决人生的基本问题了;但是,还想更上一步,就需要对某个行业进入深 入的理解和挖掘。
我认识的*技术过上宝马豪宅生活的工程师,并不是在技术上一开始就有什么过人 之处,也不是说他的产品一开始就会比别人好很多,而是都是特别有韧性的人,都 在捕捉某个行业的机会,在某个行业内精耕细作,坚持不懈,别人都干其它的去了 ,只有他还在这个行业中慢慢来,过上5年或者更多的时间,慢慢得到业内人士的 认可,产品不断改进,慢慢打开了销路,最后站住脚,机会来了,一下发达了。我 的一个朋友,就是这样修炼成了正果。
有个笑话,说:刚刚离开的行业,发展最快。说得就是这个道理。
中国大啊,市场大啊,只要认真耕耘,就会有收获。
所以,在目前的中国,技术人员还是有机会的,再过10年,可能就一点机会都没有 了。
需要去从事多个行业吗?就个体而言,不需要。那个行业都有金子。
就公司而言,需要吗?那要看你的公司有没有这方面的人才;还需要看有没有这个 方面的机制。否则,盲目的进行多个行业的扩展,没有必要。需要做的是至少在某 个行业做到前三名。
你看,原来的LOTUS的notes,卖给了IBM,原来只卖出去300万份,到了IBM,就卖 到了1000万份(大概吧)。产品就是这样,占领市场的同时,利润就有了,规模效 益就有了。一个公司的产品不需要太多,但是要卖的多,才是正路。想想看,同样 是产值100万,一个产品和10个产品的差别那就大了,研发、服务、维修,差的多 呢。
象吉列,就是那么个小刀片,作成这么大的企业,多么舒服。象GE,每个行业都是业内的翘楚,那是资本主义社会200年的技术积累。在中国, 需要做的是每一个小的公司都是某个产品最突出的。从小的产品做起,做到国内最 好、亚洲最好、世界最好。就行了。中国就强大了。
到那个时候,才有可能出现象GE这样的大公司。才有形成这样的大公司的技术基础。