本人关于IT技术体系的一些理解
根据我自己的想法和理解,IT技术体系并不能单纯地划分为软件和硬件(有些时候,持这种理解的人问的一些很嘲讽性的问题会让人吐血的),硬件我并不是十分精深,模糊中我认为纯粹的硬件应该分为模型和电路系统这两个部分,模具制作应该是属于模型的,PCB板属于两者都有,电路设计是画PCB的基础和前置条件,理应属于电路系统。两部分难度不分上下:模型需要更多的考虑环境和人的因素,电路则更倾向于技术知识。但是根据我看到的一些情况,往往懂技术的人不少,但真正能结合模型去思考电路(也就是根据实际情况,使用者的习惯,质量,外观等因素)的人在大学生中真的不多见。如果在本科阶段就能在技术之上结合模型相关的考虑,那么这个做底层硬件的人算是真的“硬起来”了,在就业过程中应该会很受欢迎的。
有人经常会想单片机到底属于哪一块的东西。我这里的划分仅仅是凭着“代码”来作为依据,并没有太大的实践指导意义,仅仅是为了更方便的说明问题,做一个归档罢了。单片机在我眼里属于软件的最底层,但是考虑到软件都是建立在硬件之上的,即使是最底层的软件,也应该在硬件之上(上下并不止价值和难度,只是指在架构中处于的逻辑位置)。往往处于架构结合部的技术都是属于难度非常大的,但是单片机是个例外。也许时光倒退个几十年,单片机的确是一个难点,但是到了现在,单片机的难点正在逐步因为其自身性能的提高,软硬件技术体系的完善所侵蚀。功能越来越完善的IDE、越来越丰富的片上资源、功能完备文档健全的API、统一封装的功能模块等,这些因素使单片机编程越来越成为一个引导新手入行的工具:现今软件的难度主要表现在大规模系统代码设计、技术选择和架构上,单片机的应用特殊性注定其代码规模有限(单颗处理芯片);硬件系统中的封装思想愈加完善,底层模拟实现逐渐被API屏蔽。不过任何事情想要精通还是很有难度的,单片机也是如此,属于入门容易,精深有难度。这个难度主要体现在代码规模的膨胀和为了充分利用硬件资源而进行的代码改革优化。代码规模的膨胀需要编程者向纯粹上层软件体系学习架构、设计模式、算法优化等领域的知识;硬件资源的发挥也在于编程者对模块底层实现、单片机的底层实现有一个充分的了解,主要表现为基础知识数字模拟电路以及他们的引申知识(诸如EDA,高频模拟电路或者类似通信等专精的电子领域知识,关于单片机和这些相关技术的学习我建议去http://www.51hei.com/里面的教程比较人性化)。另外我个人建议对于并发,多核编程有所了解会有助于跟上时代的步伐,毕竟这已经不再是 80C51横行天下的时代了。
一路往上走,单片机之上应该是嵌入式系统相关的东西了。我在专注于嵌入式的学习之后和一同学习的兄弟探讨嵌入式系统,觉得嵌入式系统的难点关键在于广,而一个真正的大牛会在广的基础上对这些广泛的知识做进一步深入的研究而达到精神,并且对于某几项技术做到专精。因为嵌入式系统其实也是建立在MCU、CPU 之上的,上文所述的知识体系对嵌入式系统学习者同样有效。但是与纯粹的单片机编程相比,嵌入式系统的难度还体现在系统。除了要对软件体系的基础——操作系统要有着十分精通的了解以外,基于操作系统环境下的编程代码规模成几何倍数的膨胀,同时带来的还有测试和调试难度变大,手工测试已经无法满足要求,而自动化测试代码覆盖率也很难保障。基于操作系统的编程在学习过程中十分复杂(一旦掌握了开发起来倒也没那么痛苦),要了解各种API,操作系统的各种调度机制和其架构体系(不然怎么写驱动)。而对于专业领域上还有一系列让人望而生畏的东西,比如说智能算法,图像分析,稳定性实时性要求等等。我在这里没事掰着指头算都要算很久,就不一一列举了。但是我着重要提到的是,嵌入式系统这个名词中系统二字代表的并不是操作系统,而是指更加广泛意义上的系统。具体解释有兴趣的去翻翻系统论(与控制论,信息论并称三论)。一旦从模块级上升到系统级,考虑的问题各种各样,有兴趣的去翻翻软件工程吧,虽然写着是软件工程,对于硬件也同样适用,个人觉得对于工程二字都不怎么了解的人有何脸面自称工程师。那么需求工程、架构设计、编码规范、编码管理、系统测试、项目发布等领域的知识多少也要懂一点的(没人愿意一辈子当小工吧)。然后别忘了还有人机交互,这个界面其实十分十分关键,开发过程中你至少得花30%以上的精力在这上面。
像android,windows phone,ios之类环境下编程如果仅仅是做个应用丢APP去卖的那种的话,根本算不上嵌入式系统(别以为写了个非PC程序就算是搞嵌入式了,差别太大了),也就是一般的计算机编程加点佐料而已。
在往上走一点,那应该是传统意义上的计算机编程了。这是一个十分蛋疼的东西,因为涵盖面过分广大了导致很多人都快累死了也搞不明白那是啥。还是老规矩从下往上说。最下面的应该是BIOS,这个不能被忽视,就跟嵌入式的bootloader为代表的引导程序一样,是整个体系不可缺少的一部分,当然PC上的 BIOS我没有太多的了解,也就不班门弄斧了。我只是想提一下汇编这门语言的重要性。我大一大二的时候经常性有学长跟我说,汇编这种东西都快被淘汰了,没有搞头啊,不如把时间放在别的方面。我觉得这是一个误区。对于所有有志向在
IT技术体系单片 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)