双非测控大二,能走 Linux 驱动开发吗?有哪些适合本科生的实战项目?
网友提问:
您好Yt哥,我就读于哈尔滨某双非一本测控技术与仪器专业大二,现在已经学完了c语言c++,数据结构,网络,还有一些linux基础命令,
也学完了模电数电,我下一步是该学单片机+linux应用开发,走一下嵌入式linux应用开发,还是MySQL走c++后端开发,我想知道二者哪一个更适合我,二者在就业上的优劣,哪一个更适合我,在一个就是有没有推荐的项目,还有就是我看网上linux驱动开发很吃香,我想知道我这个本科能不能走,请您给我一个意见
Yt回复:
哈尔滨双非一本测控技术与仪器专业,这是一个工科专业。与计算机相关又不相关,又不相关呢又有点相关。已经学了 C 语言 C++ 、数据结构和网络。其实这个呢应该这里面的数据结构和网络,应该不是测控技术与仪器专业开的课程,应该是自己学的,还有一些 Linux 命令,也学完了数电、模电。
首先这些概念呢都是书上的东西。书上的东西是什么?书上讲技术和我们做开发所理解的技术它是完全不一样的。书上比如讲数据结构,以红黑树为例,书上讲红黑树会怎么讲呢?书上会讲红黑树的定义,红黑树的性质,红黑树的证明,左旋右旋三种插入情况,四种删除的情况它这样去讲,它是讲它的学术概念。
那其实我们开发的时候,你会发现对于红黑树而言我们根本就不会去关注红黑树它是如何如何实现的,更多去关注它能用在哪里,如何帮我们解决具体问题。
比如在网络数据包接收的sk_buff 里面用红黑树它怎么解?在内存管理的时候用红黑树,内存块用红黑树它怎么解?它怎么实现的?然后以及对于IO管理用红黑树怎么实现的?怎么解决的?以及包括像定时器怎么实现的?更多关注的是它的使用场景。所以这里面你如果停留在书本上,我认为这个它可能还很难去让你所学东西能够有一定的作用。
其实我一直所提倡的一个观点就是去做点东西,因为你真的只有做过东西你才慢慢能够感受到原来技术是这么个样子的。如果你停留在书上,你就发现变成一种感觉就是好像有无穷无尽的知识可以供你无穷无尽的学下去。
然后下一步我该学单片机加 Linux 应用还是走嵌入式应用开发还是走 MySQL 走 C++ 后端开发?
首先我是认为你这个观点呢可能还停留在十年以前。你现在接下来不是该学哪个哪个方向,而是强迫自己去做点东西出来。用自己所学的知识能够去做点东西,虽说刚开始做你会有些瑕疵,就比如一个厨师你现在已经学了如何放油,如何颠锅,如何切菜,你已经做了很多这种工作了。
接下来就是你要炒道菜,虽说刚开始你炒这个菜可能不是咸了就是淡了,不是盐放多了这种情况,包括这菜不熟这种都有可能。
但是你不管怎么样你得去做这道菜,就是你得做点东西出来你才慢慢会能够体会到技术是什么。你比如现在就学了点切完菜放油颠锅做完之后,你就在这里纠结我到底是以后炒鲁菜呢还是炒湘菜还是炒川菜还是炒淮扬菜。暂时你不用去这么纠结,刚刚举了一个非常不恰当的例子,只是说明我是认为你要有点成果有点东西来展现出来。
下面是学单片机加 Linux 应用走嵌入式,Linux 系统它是一个非常标准的操作系统,一个非常成熟的操作系统。其实 Linux 下面的开发你会发现你所做的内容可能你在学校学的时候,你需要自己焊板或者是一些自己去检测电路图,其实在企业开发 Linux 它是个标准的系统,就是你会发现它所做的东西都是在你PC机上面开发好,然后交叉编译完,然后你把对应的image烧录到一块主板上面,这就是嵌入式开发。
你不管是路由器还是包括像TV或者说有一些这种智能手表或者VR这种眼镜等等的这些设备乃至包括这种交换机里面的这种 Linux 系统。你开发什么是在你本机开发好编译成一个image,然后烧录到这款嵌入式主板上面,然后开发是在你本地开发,你就会发现这个过程你可能都不需要了解太多硬件。
还是 MySQL 加 C++ 后端,我是认为这个你也没有必要。
用 C++ 去操作 MySQL 的这种场景呢?有。但是它绝对不是那么的广泛,我是认为这两条路中间它是可以合并到一起走的,没有哪一个合适你,也没有哪一个不合适你。我认为现在所做的就是你做点产品出来,做点东西出来,然后简历里面体现产品。
现在我认为你能做的就是把你的路走宽,不要去局限于比如说一定是 Linux 应用或者说 C++ 后端,就是所谓的 C++ 后端或者 Linux 应用,都没有一个明确的学术定义,你不要把它分隔得很开,它完完全全没有到一个隔离的状态,很多的技术体系它是一样的,它没有一个所谓的隔离。
比如这条路就合适你,那条路就不合适你,没有这个说法。
我认为你后面能做的什么,就是你后面做一两款产品在简历里面体现出来,然后后面多投多面。你比如像这种制造行业一样可以投,比如像这种TP link,然后包括像什么TCL,然后包括这种手机厂商你一样可以投递,乃至包括制造业企业你一样可以投递,乃至包括这种工控行业一样可以投递,然后包括这种互联网公司你也可以尝试一下,反正把自己路走宽。
如果你在简历里面体现大量的MCU单片机的方式,你会发现互联网公司不一定投的了。如果你简历里面体现了大量的 MySQL 的信息,这种后端开发的业务,后面这种比如这种TCL,包括像路由器厂商,这个我认为面起来也会很困难。
二者就业中的优劣势这个我认为没有所谓的好和不好。就是你比如 Linux 应用,一定比什么 C++ 后端好,没有这个说法。
我是认为你现在能做一两款产品,后面多投多面,多拿几个offer,这就是你对于找工作一个很好的姿势。现在暂时不去挑某某某方向。
还有就是有没有推荐的项目?
首先我认为这种项目呢,可能对于很多朋友的理解有些不一样。比如说我实现个线程池项目,比如我实现一个内存池是项目,或者我实现一个什么 io_uring 是项目。这个都不是。
所谓的项目,你就一定要能够解决具体问题。你做这个东西它是要有作用,不然做完之后它就是一个工业垃圾,就是你比如说我实现一个线程池,我在简历里面体现出来,我实现了。
你是实现了没错,但是你为什么实现?它解决了什么问题?你说不清楚。比如有朋友我要做一个内存池或者有朋友我要实现个 TCP Server,你的意义在哪里?首先我认为一个项目。你一定要解决具体问题。你就奔着一个解决具体问题的场景。
比如说你们寝室上网,你基于这个基础上面你想统计你们寝室大概一个月要多少流量,比如访问哪些网页比较多,你做一个这种统计的功能它也行。就可以怎么做呢?你可以在你家路由器前面加一个台式机或者一个 DPDK 的网卡,然后中间有两个网口一进一出,你可以把一根网线接到你路由器,另外一个网线接到你们那个网关上面。那所有的数据都会从这个网卡走,然后你你再把它统计出来,然后这个过程它是解决了具体问题的,就是它是有一个实实在在的具体使用场景。那这个场景你可以在简历里面体现出来,然后你是结合的需求结合的具体问题,然后你再用技术方案去解决它。中间有一些解决的不合适的,你还会有迭代,这个项目它是有意义的。
还有就是我看到网上的 Linux 驱动很吃香。
首先我是认为现在在网上看到的很多信息,我不知道大家是怎么去鉴别这些信息的的,大家各位朋友们你在网上看到的信息和在具体真实的情况我认为它是不一样的。特别是这种做自媒体,我现在自己也做自媒体,我是深受其害,有些朋友为了那点流量,开头就说比如说互联网崩了或者说人工智能已经崩了再也不行,就刚开始就是这种非常绝对的话语,让你一听下去就是这是一种典型的利用人性的本身他来争取这个播放量的。我是认为这个东西他到底是这样的吗?
Linux 驱动开发很香,我不知道你从哪里看的。你看一下这条信息它发布的时间好吧,你看一下这个比如 Linux 驱动开发很香,你看一下它发布这个言论所对应的时间。但凡2年以前3年以前,它的情况都不一样。
我更想知道本科能不能走这方向给点建议。
我跟你讲的你现在能做的就是做点东西出来,做点产品出来,做点能够解决具体问题的东西出来,自然而然我是认为你找个工作应该是不成问题的。