如何以学习单片机为契机,逐步成为优秀的工程师

judy的头像

现状

不知道阅读本文的读者,在初学单片机时是否和我曾经一样迷茫。看到各种新的术语,疑惑不解;不知道从何学起;照着书中的例子一步一步做都没有问题,但是自己试着做东西,遇到各种问题却不会解决,向别人提问,可能也没有几个人回答;感觉好像学完了单片机的各种模块,但是要自己设计东西却还是毫无思路,也不知道怎么去进一步深入学习;甚至在一开始就遇到太多困难,直接放弃了学习。

在我身边,看到不少学习单片机的人。其中很多人学习的方法,就是通过看一些视频或书籍教程,然后照着别人的代码去写,写好了能用了,就感觉是学会了。而学的过程中,其实有很多东西不懂,但是也不知道怎么办,就那么过去了。

有些人虽然照着那些教程学会了单片机,但是对单片机的理解仍然很浅显。不知道怎么去设计单片机系统,也不知道怎样进一步深入学习,搞不清到底什么才是重点,非常迷茫。

我也曾见过很多单片机学习者,发了一些帖子提问,上面贴上自己的程序,然后问这个不能工作怎么办。问题没有描述清楚,程序代码很乱,也没有电路图,很多时候也没有几个人回答。有些人很可能就因此放弃了学习。甚至有不少人在一开始下载程序到单片机中就出现了问题而放弃了学习。

原因

为什么会出现这样的情况呢?是因为这些人不愿意学习,或者学习能力太差吗?我觉得任何人的毅力都有限,不可能一直坚持下去;而学习能力欠缺则是很多人都有的问题,特别是从小缺乏适当的教育。所以这不是主要的原因。

我觉得很大的一个原因是,没有一个好的资料指导初学者进行单片机的学习。市面上单片机的学习资料非常多,但是真正的好资料并不多。常见的单片机学习资料有两种,我来列举一下。

一种是理论型的,有点像大学不少教科书的感觉。一上来就开始讲寄存器、指令集、单片机内部结构,对于单片机初学者而言,一篇文章读下来,几乎全是晦涩难懂的专业词汇,更谈不上理解,这类书籍显然不适合新手学习。

另一种则是重视实践型的。这类型的学习资料,我也看过很多,但是其中很多都有一个特点,就是过分偏重实践而几乎不提思想、方法和原理。典型的就是市面上有很多《十天学会XXX》这类资料。用这种资料,确实可以快速学会单片机,并且充分迎合了很多人急功近利的心态,能快速学会想要的东西。但是如果仅仅靠这种资料,只能是学会单片机,但很难学好单片机。然后就出现了前面提到的诸多问题。

重点

单片机学习的重点,绝不是简单的会用C语言给51写几个驱动,毫无代码风格,拼凑一个勉强能用而bug很多、根本无从维护的系统。也绝不是把51、430、AVR等各种单片机的基本操作搞的一清二楚这么简单。更重要的是从任意一款单片机学习的过程中,体会其中的工程思想,提炼学习方法和技巧,掌握单片机系统设计的通用方法。

程序设计经验丰富的人都知道,编程语言只是其中最基本的东西,只是表达程序设计思想的载体,而绝不是编程的核心知识。更多的应该是程序设计的算法和工程思想。

一个较好的掌握了编程思想的人,能很快的从一种编程语言转换到另一种编程语言;更进一步,一个掌握了优秀设计思想和学习技能的人,能更好的在不同的技术之间进行转换。

人为什么要学习语言?语言本身并非最重要的东西,重要的在于语言是思想的载体。在语言学习过程中,我们慢慢学会了思考,慢慢有了自己的思想。如果没有思想,语言本身就失去了意义,简单的计算机程序也会处理文字,并且能比人做的更好,但是它却不能像人一样思考;而有了思想,用任何一门足够完善的语言去表达都是可以的。

语言本身有很大的局限性,并不能表达所有的思想,而单片机也一样有各自的局限性;另外,自然语言和人类思想,远远比单片机和单片机设计思想的组合要复杂;还有语言本身也能影响人的思维方式,例如美国人说话比中国人更直白,类似的,不同的单片机学习,也会影响单片机系统设计的思维(尤其是面向过程和面向对象的编程语言之间的差异更能体现这一点)。

结论

通过类比我们发现,单片机学习的核心并不是单片机编程本身,而应该是更上升一个层次的,单片机系统设计思想。而一旦掌握了单片机系统设计思想,离一个优秀的底层硬件工程师也就更近了一步。而学习这种思想,则是通过深入学习一种单片机,以及接触多种其他单片机的方式来实现的。

网上有很多人争论入门应该学习什么单片机,我觉得这不是最重要的问题。一旦掌握了优秀的设计思想,从一种单片机转到另一种单片机、转到嵌入式平台,就轻松了很多。

但是是不是说,这种争论就没有意义呢?显然也不是。还是拿自然语言来类比,如果一个住在中国的人从小学习的是英语,虽然也能培养他的思维,但是却导致了诸多不便,因为周围的人都在说汉语。对于这个人来说,他可以花几年的时间再学习一下中文,但是比较费时间(自然语言太过复杂,一门新的语言可能要几年才能学会;但是人类思想更加复杂,一辈子都在不断积累)。

所以入门学习什么单片机的问题也是有一定的价值的,很多人不支持入门用51正是认为51已经要被淘汰了,工作时也很少会用到。不过好在单片机这种东西远不及自然语言那么困难,精通51单片机的人,很快就能学会430单片机。

学习思路

1、注重实践

很多中国学生,从初中甚至小学就开始学习英语了,直到大学毕业,英语水平也远不如美国小学生的水平,我自己也是其中之一。原因很简单,缺乏实践。单片机的学习也一样,没有实践恐怕永远都是学不好的。

2、提炼思想

每当提到学习,我们常说“理论与实践相结合”。然而现实中,真正做到这一点的人并不多,包括前面我也提到单片机学习遇到的各种问题。理论是从实践中抽象出来的,而又对实践起指导作用。理论和实践应该是同等重要的。我们应该在学习单片机的过程中,不断思考,提炼出单片机系统的各种理论思想,还有学习方法、技巧,为以后的进一步学习打下坚实的基础。

3、不可急功近利

这一点不用多说。有些人一看到《五天学会***》《一周精通***》这类标题的学习资料就激动不已,实际上大部分情况下用这种资料学习,都没有达到标题所说的效果,即使学完了,也只是了解了基本知识,并不能很好的运用。而这种东西反而容易让人更加急功近利。如果一个知识的学习真有这么简单,社会一定不是今天的样子了。

4、坚持

硬件相关的学习相对来说都是比较难的,需要大量的知识和经验积累。学习单片机也一样,需要长期坚持。

转自: jzj1993

主图: