原创 电子信息工程四年学习之思

2013-1-28 21:19 1108 13 17 分类: 消费电子

毕业后,回顾四年学习历程发现,当时以为的明白,到现在都是那时的不明白。或许是自己的经历(参加比赛比较多)导致了现在的反思。

 
但是,回顾那个时候的课程设置,却都是合理的,并没有什么不足,但是又为什么会现在才意识到它们之间的联系。
最终的结果是,学了很多门课,很多门孤立的课。不知道它们之间有什么联系。
那个时候,又有着要多做比赛,增加实践经验的想法。于是很多时间,放在实验室。
真正对于课程的深入思考就更少了,课堂上明显的疑惑还会问问老师,更深入的估计是根本就没有想到。
而是想怎么能将单片机程序调出来,会了几块单片机,会用了什么液晶,会用了什么传感器,等等会用了什么模块,最后等于都在调试怎么使用模块。以及做了多少块PCB。
 
可能算深入一些的就是,电路中的电容为什么这样使用。看了些高速电路设计,了解了些东西。读了高质量程序设计,明白了些同学不明白的东西。但是没有深入进去。也没有看到课程与课程之间的关系。
 
那个时候,虽然明白C很重要,但是具体什么个重要法,不清楚。也没见到过什么优秀的C程序,以为自己已经见到的就是很不错了。(那个时候,没有了解Linux,没有分析uCOS,也没有分析过什么C的代码)以为,单片机上也就那么多东西,再加上中断。现在想来当时,想的真是简单。应该说是,连中断都没有真正明白过。只不过比周围的同学,有些概念而已。
以至于虽然有学习C的心思,但是却又不知道自己到底缺什么,应该怎样去补充。
 
前段时间一个同学,写了篇关于学习方法的,感觉写的挺好的。里边也是感慨,在需要学习的时候,找不到灯塔,在暴风雨中挣扎了四年,终于看到了一线光亮的时候,大学毕业了。我们的大学就像是一叶在黑暗中前行的孤帆,迷失在汪洋之中。
 
以至于把大量的时间,放在所谓的比赛上,在实验室调试电路,调试程序。却没有更深入的一步思考。以至于,虽然有有大量的时间,但是却真正没有什么效率。现在看来,如果当时安下心来,好好看几本运算放大器的书,看看CSAPP,分析分析优秀的C代码。很多地方是不需要在实验室花费那么多的时间的。
 
但是,我的那位同学是很想学些东西,研究些东西。但是在四年就在找寻中度过了。
 
当我们专业在大四毕业时,拿同学的话说,我们专业会使用C编程的,拿两只手的手指都能数的过来。能够搭电路的,画出可以的PCB的,一个手的手指都能数过来。
 
如果说是少数同学对于专业不感冒,学生难辞其咎;但是当95%的学生对于专业不感冒的时候,这又怎么说呢?
这里诚然,有很多地方是我们自己做的不够好,没有深入思考什么;但是反过来,作为老师就没有需要思考的吗?
 
Steve Senturia教授:Engineering is the purposeful use of science. 工程就是对于科学进行有目的性的运用。
 
当自己大四在公司实习时,下载了MIT的一个公开课视频电子电路学(6.002)由Anant Agarwal教授主讲,这是他们EECS系学生都要学习的一门必修课。以美国对于软件的分类,MIT这样做应该是属于偏硬件类的。当时看了第一集,就发现,自己疑惑了三年的电子信息课程中的联系,在这一节课中得到了解答。
于是下载了全套视频,断断续续也只看了20集。
但是确实理清了很多,以前没有想明白的问题,突然清楚了很多。也或许是问题,积累的太久了,有这个导火索,一下子引爆了很多。
 
毕业后,
看了几本书,系统程序员成长计划,CSAPP,Unix环境高级编程,人有人的用处,运算放大器权威指南,信号完整性与PCB设计。
聆听了黄敬群先生的一堂讲座。
分析追踪了uCOS的部分源码;分析了Contiki的几篇论文,了解系统运行机制及通信机制,追踪了部分代码。
查看了Linux下,C程序的内存分布,内存使用,堆栈的情况;调试了指针的一些情况。
关注了电子工程专辑上凤舞天,武华卿,张进东,模拟示波器等一些热门博客。
 
在这个过程中,发现大学课程中的联系越来越清晰。
更感觉自己的大学时间利用效率何其之低。
 
理清思路,按照大学的课程设置来说。
首先,大学的高数,和线性代数,电路计算与分析常用的是微分方程,线性代数也会用到。
当然,在上高数的时候,我们的高数老师——牛大田老师,经常跟我们说,信号分析中会用到哪些,经常提醒我们学好微积分,学好傅里叶变换,虽然没有提到在电路中的应用,但是估计很难找到这样的高数老师了。
线性代数(同济版)当时就是行列式变换,具体怎么应用,不知道。后来看到一本Steven J.Leon教授的线性代数,发现上边关于在各个学科的应用都有表明。那个时候,都快给变吐的行列式,在这本书中就是,我们电路中应该怎么来分析电路,怎么应用在编码中。悔不当初。我承认,当时对于线性代数理解感觉有些吃力,我自认为还算是努力的,但是还是不行。这点或许要承认,自己的抽象能力不行。当我们的大学扩招后,是不是我们的教材,不要那么抽象。本来就不好学的课程,我们的教材再恐吓几下。等真的学到电路(大二上),学到纠错编码(大三下)的时候,估计还记得当时行列式的法则的估计没有几个人了,考研的同学估计在这里也不清楚到底应该怎样理解。
 
C语言,早在第一学期,带着电子部学长的建议,在最后的两个月,在每天下晚自习后,在实验室用VC敲了两个月例程。自认为对于C理解很多了。开学的C二级考的都还可以,当时想再看看C深入的书籍。但是不知道该看什么了,周围的学长也没有更好的建议。在课堂上,教材上的东西,确实弥补了很多以前不注意的地方。虽然自己感觉挺好,但是很多同学对老师反应很强烈。而自己也错失了,大好的提升C语言的机会。不知道,该找什么书看。其实这个时候,如果看看《系统程序员成长计划》,《C专家编程》,《CSAPP》,《C陷阱与缺陷》,看看黄静群先生的《深入浅出Hello world》会很好的。
理解了C语言的深入的东西,大学以后几年就没有那么多烦恼了。单片机没有那么神秘了,也不会说uCOS的邮箱机制只能传送一个变量而没有什么用了。使用黄敬群先生说的方法,分析一个操作系统,就会很快明白一个操作系统的大体脉络。也会明白,C程序在单片机和操作系统下运行的异同。不会纠结裸机编程,与系统编程了。
如果深入看了CSAPP,可能发现数字电路,FPGA的概念这个时候就都有了。
 
电路原理,数字电路,模拟电路,在MIT6.002中这三个都属于电路电子学,一起讲授。不会发生,学了电路原理,不会分析模拟电路;电路中最重要的零极点,在学模拟的时候没有一点印象。有印象的是信号与系统中的零极点,但是此时模拟和信号与系统,联系上估计很难,更想不到在模拟中会有。模拟中的反馈,和信号与系统的反馈,虽然字一样,但是也还想不到它们有什么联系。当然,这个时候分析的数字电路是低频的,模拟电路是理想的,以至于以后学习电磁场与电磁波时,根本就想不到,其实当数字电路频率高了,模拟电路频率高了,就是用他们来分析的。以至于学校图书管里,信号完整新分析是在通信分类中,而不是在电路分类中。不知道零极点,不知道导纳圆图,不知道阻抗匹配,不知道信号完整性,不知道传输线。印象最深的是,在6.002中,Anant Agarwal教授随堂做的一些实验,爆炸的电容,电锯,吹风机这些实际的干扰源对于数字和模拟电路的影响,反馈在电路中的最用地位。虽然,在学习这些的时候,实验自己认为做的还算是认真的,都是自己搭的电路,分析的实验结果。也分析,实验没有一次成功的原因。也在数字实验箱上插过几百根线的仿真验证。但是,除了这些,真的不知道为什么反馈使电路更稳定,什么样的干扰对于电路会产生什么样的影响。
《运算放大器权威指南》,《信号完整性分析》,《晶体管电路设计》,《高速电路设计与实践》应该是基本不错的书。
 
微机原理,单片机,EDA,感觉这三个,前两个在看CSAPP的时候,能解决一大部分了。剩下的就是硬件的连接,这些属于数字电路的范畴。EDA应该也属于数字电路里边的。
 
通信电子电路,模拟电路的升级版,外加调制,解调。
 
通信原理,应该说是自己大学没学好的一门课。当时准备Freescale比赛,没有好好学。现在想来,是很重要的一门课。信息的概念,信道的概念,传输速率,调制,解调,纠错编码。应该是对大学期间,学习的这些的一个理论上的总结。现在只能有一些印象,可能有些内容连印象都没有了。
 
数据通信与网络,如果说它没有一点用,看看我们现在用的是什么,就知道有没有用了。基本的互联网,以后的物联网,虽然,它的确没讲多少,至少给我们开了扇门。要比我们,以后继续在黑夜中行走要好得多。
 
当然这里所列的,对于信号的处理涉及的并不多,因为自己主要偏向于应用。对于信号处理,着力就不多。随机信号分析,数字信号处理,图像信号处理,语音信号处理,这些了解不多。
 
一个纠结了几年的问题,
反馈问题,
在参加Freescale比赛的时候,使用到PID控制,隐约感到这里的反馈,与电路中的反馈有什么联系。电路中有正反馈,负反馈。和信号与系统中的反馈有些联系,也与控制原理中的反馈有联系。但是只是猜测。后来不知道在哪看到维纳的《控制论》评论说是,控制方面的开山作。虽然崇拜,但是买不到,据说也不好读,里边很多公式。于是乎找到了维纳的另一本书《人有人的用处》,据说是《控制论》的科普版。饶是如此,看的时候依然有些困难。因为翻译的比较早,总感觉理解起来,得琢磨一会。但是,里边确实将反馈提到系统里边来说明。只要是一个系统,就存在反馈。而且负反馈导致系统稳定。于是乎,就想起来了,当年的信号与系统,电路系统,控制系统,应该说他们的反馈机制都是一样的。后来在《运算放大器权威指南》中看到,里边将电路的反馈和控制原理的反馈比较分析,发现形式一模一样,只是由原来的控制原理的术语,换成了电压电流。
至此纠结了几年的问题,彻底解决了。
 
在凤舞天的一个博客中看到说,国内的环境注定了,我们不能把东西都掌握了再去做东西,那样黄花菜都凉了。但是如果没有掌握理论,做出来的东西也就只能在国内卖。这个值得思考一下。
 
附:
http://blog.sina.com.cn/s/blog_ab56c10c01016asz.html
什么是电子工程
 
回复写的有些长了,发现在回复栏里,格式都乱了,不好看,所以放到这里:
首先,谢谢语音技术大师的回复。
这里你点出了,我更深一层的疑惑。
只是还没有理清楚,不知如何表达出来。

电子信息工程,确是像你最后所言,并非仅仅是电子,而是很宽泛的一个专业,自己感觉像是,电子+通讯+算法。
这里边,对于本科我们来说,能学到电子+通讯可能都已是不易,算法几乎不敢再去苛求。

我自己四年大学,也是在毕业时才开始一点点明白,他们之间的一些联系。而这还是基于我自己在大学四年从大一开始接触单片机。大二开始参加比赛,大三几乎把时间都放在几个重要的比赛上,大四实习。我的过程就像你说的,实践。

但是,我现在发现,似乎我这类是对于实践有些过犹不及。

从最开始以为学会了单片机就很厉害。当很长一段时间后,发现调试单片机,调试各种模块,并没有真正提升什么(应该指专业知识的深入理解,对于分析问题的能力确实有很大提高)。单片机的程序是C写的,和各种模块的连接是各种接口,而模块都已经是做好的。C的能力,决定了最后的功能;接口的理解,决定了能够使用什么。而这跟我们用了什么模块没有什么关系,而是跟模块是什么接口有关系。所以到最后,本质是C的能力,数字电路的能力
当然数字电路是由模拟电路来的,到了一个阶段就是模拟的事情了,模拟到了一个阶段就是高频的事情了,高频到了一个阶段就是电磁场与电磁波的事情了。
可以说,这些时我大学所能弄清楚的一些东西。

但是还有一些没有弄明白,也即后来所提到的。
通信(无线通信)。
信号处理(语音信号处理,数字图像处理)。

可以说,我在大学这些时间,只帮助我理解了做它们的工具。
可能是跟我现在的工作跟短距离无线通信相关,所以对于无线通信稍了解一些。
有了C,才能写程序。但是通信中的各种实现的方法,却是由通信的知识来指导的。没有这些,只有C,等于说有块璞玉,但是没有好的匠师,永远只有璞玉,没有经典之作。

对于信号处理,没有工具是不行的,但是只有工具是万万不行的。之先有过一个**,说是很厉害,但是到最后用的都是OpenCV库的东西,还称是自主研发(为什么Intel他们做到了,我们却做不到)。在学校时,使用arm+linux做过一个需要视频识别的人体目标的东西,那个时候使用的就是OpenCV,后来实现了功能。但是,却只有60%左右的准确度。而理论上确是应该有90%多的,当时用的是OpenCV自带的一些东西,自己却不知如何去提升准确度,连一些参数都不会设置。

当我们有了工具,如果没有理论来支撑使用这些工具。永远都是在做一些重复的工作,而没有新的突破。
但是,发现很多从比赛过来的同学。对于这些似乎有一种不屑,似乎认为理论不重要。这似乎和考研的同学正好是相反的,就像考研的同学他们认为实践不重要一样。结果造成的结局,就是都毕业了,对于基础知识的掌握都没有到位。
或许对于我们那些,大学从实践过来的,更应该的是多去学习学习那些理论,那些算法了。该是时候,学着去计算参数,预期结果了。

大学,经常和同学谈起来,说如果大学毕业了,我们哪里更有优势。说之专业实践能力,或许专科的学生很多做的比我们还多;技术,我们到大学,不是来单纯学技术的。很多学长,学姐,同学都认同,大学,当我们走出去的时候,不是我们学会了什么技术,而是我们学会了怎么思考。

文章评论4条评论)

登录后参与讨论

用户1649433 2013-12-14 13:07

如果在大学的时候能读到楼主的这个帖子就好了,可又一想,即使真的读到了,也未必能如现在这样体会深一些吧。楼主提到“我的那位同学是很想学些东西,研究些东西的,但是四年就在找寻中度过了”,颇有同感,回想自己的大学四年,摸索来摸索去,只是学到了电子的一些皮毛,通信和算法的知识根本无从谈起,直到最近上了在职研究生的课程,才对大学时学的信号与系统、数字信号处理和通信原理有了一个大概的认识。顶楼主一个。

用户1703294 2013-8-21 17:03

写得很好,跟楼主有同样的感受

1989tie_959541171 2013-1-29 11:09

好主意,借鉴了。

用户1602177 2013-1-29 10:24

应该将@语音大师 的回复也加上~~很高兴看到这么有诚意的交流~~

用户1406868 2013-1-11 08:16

快点出来吧...
相关推荐阅读
catch2000 2015-07-19 11:44
信号线小电阻的作用
在一块新的PCB上,测试系统能否正常运行的时候,发现系统上电后没有正常启动。  系统框图如下:   在上电的时刻,CPU A(GPIO电平2.6V)会向串口发送启动日志数据,CPU A启动后,...
catch2000 2015-07-05 17:04
协议设计中ACK机制的影响
在TCP/IP中,延时ACK和Nagle算法。  TCP为了同时处理成块数据(通常为512字节的用户数据)和交互数据(通常用户数据比较少,例如不大于10个字节),采用了延时ACK和Nagle算法...
catch2000 2015-05-23 15:48
话说物联网操作系统
最近好多家都宣布推出自己的物联网操作系统。   1. Google将要在Google I/O大会发布的Brillo; 2. 三星推出的Artik芯片搭载Mentor Graphics的...
catch2000 2015-03-31 23:52
不要采用异或来交换两个变量
在进行两个变量的时候,经常会看到有些书误人子弟的推荐使用异或的方式: 方式一 {   x = x ^ y;   y = x ^ y;   x = x ^ y; } 而不是...
catch2000 2014-10-09 07:28
为什么要测试先行
在产品的研发过程中,测试一项至关重要。不论是软件还是硬件。   软件的测试先行,在研发过程中,就做到质量的保证,因为在出现Bug的时候,容易定位Bug,而且即使是在客户端出现Bug,也能够...
catch2000 2014-10-09 07:26
C语言的面向对象编程(一)
一、前言 对于编程而言,重要的是解决问题的方式,而不是语言本身。面向对象与面向过程是解决问题和思考问题的方式。C语言常说是面向过程开发的语言,因为其缺少很多对于面向对象特性的支持。但,这并不影...
我要评论
4
13
关闭 站长推荐上一条 /2 下一条