嵌入式Linux —— 学习迷茫之路

不知不觉,博客似乎也成为了自己记录学习道路上的一些迷茫的一个小日记。
可能也是自己疫情期间在家呆了4个月的时间,也可能是最近课程压力比较大,或者是最近和导师聊了下之后的想法,还有最近自己学习嵌入式linux上的一些问题,种种导致了最近心态有些变化。

先自我简介下,目前某高校研一学渣,长期在各种课程中挣扎。本科时一直在搞单片机,其实现在回头看看自己以前,完全是一个出于爱好。本科也参加过很多的比赛,认识了很多的不错的人和我的队友,也学习到了很多实际的运用知识。

总结了下,以前自己都是留于表面,很多东西根本就没有掌握,甚至连一些基本的知识没有,感觉自己就像是只会烧录一个例程,在别人的源码上去学习。虽然自己画了很多的时间去调试一些程序,但是终究有一种自己只是纯粹的在盲调,没有什么理论的支持。以前本科的时候犯了一个大错误,总觉得理论是不重要的,理论只是纸上谈兵,只有实际才会出真知,以至于我大学逃了很多的课,去实验室写代码去。直到回来,我才意识到理论的重要性,理论限制了自己的上限。这里引用一段我之前看到过的一篇文章。

理论没什么用,动手实践才最重要的观念

不知道这么个谬论为什么会被那么多人接受,个人认为理论才是王道。
这并不是从一个极端走向另一极端。实践前若连实验结果产生的一切范围都不知道,只有“这么做可以用,但为什么可以我不知道”的设计,这不是做工程,是玩艺术。

许多人忽略理论,事实是因为他们自己不懂。就拿个开关电源变压器来说,你以为工频变压器,初级绕几圈,次级绕几圈就完事了?铜损、铁损、气隙、初次级电感、用什么磁芯等等基本情况完全“随便”的情况下,随便拿手边资源绕了一个,结果一上去发现能用,之后就欣喜若狂得用下去并称之为经验。当然要是不能用,就换一些手边资源,不断得“加加减减”,最终搞得能用了,之后绝对会更加欣喜若狂得称之为来之不易的经验。然后我们国人的一套就出现了,拼命保密并为其增加神秘感,恨不得贴上封条写上“祖传经验”。
而所谓的“理论”其本身也是前人经验的整合与梳理,那就更为凸显其重要性。
对于软件方面,理论知识同样重要。一个没有规范所约束的编程,是无法多人合作的。许多工程师的本意或许混杂了些许私心,想写出个“只有自己看得懂”的程序,结果动用了许多莫名其妙的风格及结构,最终导致程序规模稍大些,比如10万行以上时,自己都控制不了。在高度耦合的状况下,程序本身就是一个大茶几,最终是浪费所有人的时间,得不偿失。
此外上面提到过的“汇编与C哪个好”,纠结于此之人,最常犯的错误便是:追求个别语句的精简,并称之为“程序优化”,省下几个机器周期便开始欢呼雀跃。而可能就此在程序中埋下了相当大的隐患,事实上所谓的“程序优化”个人认为最重要的是算法的优化。其乃程序之灵魂,程序语言不过是其载体。我用C最大原因便是它的高效,可以省去汇编相当多细节的处理,可以把研发重心完全放在算法之上,再加上软件分层的做法,因此至少对我而言,无论51、ARM及其余任何MCU,无外乎建立好面对MCU的接口,搭建个最小软件架构,上层的算法便可不加修改直接使用。当然了,需要换一种语言,重新编码,自然也属于“移植”,毕竟其“灵魂”不变。
那么回到最上面,所谓“一分耕耘一分收获”,广大工程师群体,许多都全天不间断学习,而广大生产工人,整天机械性重复同样劳动,论重要性到底孰强孰弱?我觉得:技术含量越是低,其可替代性越高;而可替代性越高,自然重要性越低。看看无数小老板的嘴脸。

自己的核心竞争力在哪?
最近我一直迷茫的点也在这里,目前项目对于硬件(嵌入式)没有多少需求了。之前上学期其实已经完成了一个小的项目。这个时候我能感觉到之后的一段时间内我没什么项目做,我个人觉得项目还是挺能推进人前进的。我一直在考虑要不要转互联网行业,其实目前研究室的师兄们基本都是签的JAVA,而且工作也不错。我要不要去转变,其实我内心是拒绝的,有以下几个原因

  1. 其实我不舍得转,有一个种感觉自己曾经学的都白费了。说白了就是自己没有勇气去重新开始。(后面也会提到这种观念的错误)
  2. 出于个人兴趣,自己喜欢搞一些偏底层的东西。觉得自己能做出一个实物很有成就感。
  3. 不知道自己是不是对JAVA的偏见,其实JAVA的市场需求很大,工资明显比嵌入式高一截。但是自己觉得JAVA的就业门槛太低了,培训机构去一波,既可以直接工作去。当然我说的仅仅是低端的,任何行业都是28定律。还有就是觉得可能搞嵌入式Linux的职业生涯长度可能回比JAVA长。
  4. 自己的核心竞争力在哪?我一直在思考。和同门相比,其实觉得自己挺low的,不知道大家有没有这种感觉,似乎读研还在搞啥单片机搞什么嵌入式是不是有些太低端了。同门都在搞算法搞机器学习,搞JAVA。

这里引用一个老哥的博客,感觉我现在的经历和他曾经何其相似。看了他的博客我感悟挺大的。附上他博文的链接
我也看到了他在研究生生涯的迷茫,最后我也看了他关于工作后的总结与感悟,我觉得他说的很对。
嵌入式Linux —— 学习迷茫之路永远不要设置高墙来阻隔自己的发展,趁着自己在学校还有多的时间,抓住自己方向的主线进行学习,其余的尽量多学!!