在嵌入式学习困惑:做驱动开发还是做应用开发更有前途

2023-10-26

在嵌入式学习过程中,很多人都有这样的困惑!


意思就是说,“你告诉我哪个更有前途,我就好好学哪个,另外一个就不用学了”。问这种问题的同事往往会同时问另外一些问题:我以后就想做驱动开发,你教我这些应用开发的技术有什么用?C++用得多吗?学了有什么用?我以后不想做GUI,你教我Qt有什么用?


学习最忌讳的就是“有用的就学,没有用的就不学”这种功利的态度。两个问题:第一,在你还没学进去、还不了解这种技术时,要如何判断这种技术学了有没有用?只能是根据道听途说,看各种论坛上都怎么说的,岂不知论坛上参与这种讨论的100%都是菜鸟,有的水平还不如你。第二,就算你学的技术没有用上,有什么损失吗?从嵌入式工程师可以从事各种各样的开发工作,有做驱动的,有做系统编程的,有做GUI的,有做Web开发的,只要确定了做一类工作,就不可能把嵌入式所学的知识都用上,但至少也用得上3/4的知识,假设剩下的1/4你一辈子也没机会用上了,那也就损失你一个月的学习时间而已,相比于你的收获,这算是很大的损失吗?请注意,上面的假设是不成立的,没用上的那1/4也只是暂时没用上而已,程序员要换工作或者换项目是很常见的,任何人都不可能只涉及一类开发工作,只要有扎实的基础、完备的知识体系,任何工作都能轻松上手。


扎实的基础,完备的知识体系,我们在安排课程体系的时候,正是以这两点为依据的。有的课程内容很少有学员在以后工作中会用到,但是缺了这一环就不成为一个完备的知识体系,例如通过C++来讲面向对象编程,通过Qt来讲面向对象、事件驱动和状态机编程,这些编程思想是程序员必备的基本素质,而C++和Qt可能有些学员以后工作用不到,那这种课该不该上呢?毫无疑问该上。至于还有些人争论说C++不如Java用得多,Qt不如GTK用得多,其实这种争论是无意义的,有工夫争论谁优谁劣,不如把两种都学了,会更有收获。


回到做驱动开发还是做应用开发更有前途的问题。我只能说,做好了都有前途,做不好都没有前途,只会做一样而完全不懂另一样是最没前途的。不要以为内核开发者就不写应用程序,Linus写了一个源代码管理系统git来维护内核,因为觉得现有的源代码管理系统都不好用。牛人都是这样,需要什么就写什么,才不管是kernel space还是user space。同样,做应用开发如果不懂内核,也没有办法很好地利用内核提供的服务写出性能最优的程序。做内核难,因为调试难,要跟踪大量的并发线程,因为入门难,要写一个hello world都需要学很多知识。做应用也难,回头去看1,计算机科学从理论到实践大部分都在上面两层做文章。所以不存在哪个更难哪个更有前途的问题,任何关于哪个更难的讨论都是too naive的。


我一开始看什么书都看不懂,怎么才能理出一个学习顺序?


以前有个学员在学C语言时说,“C语言很多地方都很奇怪,都得用内核的知识去解释,可是你又不先教我内核,我没法学C语言。我只好自己看操作系统的书,看内核代码,可是看不懂。”当然看不懂了,内核代码都是用C写的,如果不学内核就没法学C语言,那不学C语言又怎么可能看懂内核?看来这是一个鸡生蛋还是蛋生鸡的问题。


懒真的是人的本性,就连学习的过程都希望是一条路顺利地走下去,不用动脑就能学会的:身后走过的路都是“已知”,每走一步就把眼前新的“未知”变成“已知”,如此一路走来,把所有的“未知”都变成“已知”就算学成了。可惜,知识不是一条路,而是一个圈,你从任何一个地方跳进这个圈开始走,身后都是“未知”,眼前也都是“未知”。有的人就是不能容忍自己的身后是“未知”:看一本书,一个新的概念A是用我不了解的概念B、C来解释的,我连B、C都不懂怎么学A?没法学了!


不是人家书写得不好,而是没有任何办法能把一个圈扯成一条直线的。学习的过程本质上就是一个循环往复的过程,唯一的办法就是“存疑”:在本子上记着,有B、C这样两个概念是我暂时不理解的,然后就不再去想这回事,而是相信自己已经理解了B、C,基于自己的理解和假设去学习A,由A再去理解X、Y,这样学下去,走完一圈之后再回来,自然就明白当初对B、C的假设正确不正确了,理解了这两个概念,就从本子上划掉,这时需要再走一圈,把原来的一些错误认识纠正过来。所以,任何书都要至少看两遍,第二遍看的时候你会对很多概念有新的认识,因为你看过这个概念后面的章节,在此基础上产生了新的认识。古人早就明白这个道理,所以提出了“温故而知新”。


转载于:https://blog.51cto.com/11389453/1774437

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在嵌入式学习困惑:做驱动开发还是做应用开发更有前途 的相关文章

  • 常用文件扩展名介绍

    我们对文件命名是以扩展名加以区分 即文件名格式为 主文件名 扩展名 系统文件按照不同的格式和用途进行分类 以下是常用文件扩展名介绍 1 txt 记事本 2 doc docx word文档 3 xls xlsx excel表格 4 ppt p
  • chatgpt每日问答

    20230411 将数组转成十六进制字符串 array 12 34 56 78 90 hex string join 02x format x for x in array print hex string 20230409 变声 用pyt

随机推荐

  • 中文情感分类

    本文通过ChnSentiCorp数据集介绍了文本分类任务过程 主要使用预训练语言模型bert base chinese直接在测试集上进行测试 也简要介绍了模型训练流程 不过最后没有保存训练好的模型 一 任务和数据集介绍 1 任务 中文情感分
  • 【spring boot】service层事务控制

    我们再做spring boot项目的时候 经常需要在一个service层调用多个dao层 操作不同的数据库表来实现业务 这个时候要对事务进行一个统一的过程 spring boot提供了这种支持 首先需要在service层添加 Transac
  • JSP数据交互(二)---》jsp四大作用域

    jsp四大作用域 application作用域 对应整个应用上下文 page作用域 作用域指本JSP页面范围 pageContext setAttribute 键 值 pageContext getAttribute 键 为
  • 电商平台数据查询工具(京东数据分析软件)

    京东爆款如何打造 是很多商家都头疼的问题 下面 6个步骤分享给大家 首先是选品 对于处于不同阶段的商家来说 选品方式不同 针对正准备开店的商家 选品可通过以下方式 1 市场分析和自身情况 确定主打品类 2 行业市场和京东平台市场 品类多维度
  • 使用R语言生成相同分组数据的抽样ID,并生成测试集和训练集

    使用R语言生成相同分组数据的抽样ID 并生成测试集和训练集 在进行数据分析或机器学习任务时 我们经常需要将数据集划分为训练集和测试集 为了确保实验结果的可复现性 我们需要为相同分组的数据生成相同的抽样ID 本文将介绍如何使用R语言实现这一过
  • pbr制作

    http www aboutcg org course tut sd 141015 http www zf3d com news asp id 27081
  • 数学中的导数

    导数 Derivative 是微积分学 微积分学是研究极限 微分学 积分学和无穷级数等的一个数学分支 中重要的基础概念 一个函数在某一点的导数描述了这个函数在这一点附件的变化率 导数的本质是通过极限的概念对函数进行局部的线性逼近 当函数f的
  • python代码,两个4*4旋转矩阵之间的位姿变化,相对旋转矩阵

    python代码 两个4 4旋转矩阵之间的位姿变化 也就是求两个旋转矩阵之间的相对旋转矩阵 import numpy as np def get transform matrix rot mat1 rot mat2 Calculate th
  • asp.net毕业设计题目选择

    1 asp net 超市管理系统 rar 2 客户关系系统 rar 3 ASP NET BS结构的城市酒店入住信息管理系统的设计 源代码 论文 rar 4 asp net FTP客户端设计与开发 源代码 论文 rar 5 ASP NET 网
  • DNS 配置错误

    curl 6 Could not resolve host 今天看 ttrss 的时候发现文章都是两天前的了 感觉不太对劲 经过查验提示curl 6 Could not resolve host 在查找过资料后 是 DNS 出现了 下面给出
  • 前端工程化(2):postCss 和 babel的使用

    前端工程化 2 postCss 和 babel的使用 本文例子可以点击这里 0 前言 babel是什么 官网给出的定义 Babel 是一个工具链 主要用于将 ECMAScript 2015 版本的代码转换为向后兼容的 JavaScript
  • eclipse was unable to locate its companion shared library

    当转移或者Copy工程时 eclipse was unable to locate its companion shared library eclipse ini 里面的路径配置错误导致 launcher library C Users
  • 三个好用前端编辑工具推荐+推荐原因(VSCode、WebStrom、HbuilderX 的推荐对比,不纠结 !)

    市面上编辑器挺多的 之前写过一期 一年了 更新一下 先上结论 如果 电脑配置差 颜狗 建议用VSCode 如果 你认为你0基础还笨 建议用Hbuider培养兴趣 否则 WebStorm 暂时是前端写代码的无二选择 或者 我全都要 以下是个人
  • 泛型类, 泛型接口的继承, 委托, 反射

    使用泛型定义一个父类 using System using System Collections Generic using System Linq using System Text using System Threading Task
  • 编译原理之LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比

    欢迎关注我的个人博客 www zuzhiang cn 考完编译原理有一段时间了 记得当时都被以上这五种文法搞懵了 所以希望写篇文章帮助那些正在学习的人 以下内容是依据龙书中文版讲解的 由于老师不同可能某些地方大同小异 如有什么纰漏之处还请指
  • 【更新中】目标检测——梳理,准备面试

    最近在准备找工作面试 本文在此梳理了目标检测中涉及的面试要用的知识点 包含了一下几方面 My paper reading 过程总结 实际步骤 所花时间 评价 改进 先看了abstract 1 introduction 以及 4 relate
  • 【图像处理】Hough直线变换

    I 直线篇 1 直线是如何表示的 对于平面中的一条直线 在笛卡尔坐标系中 常见的有点斜式 两点式两种表示方法 然而在hough变换中 考虑的是另外一种表示方式 使用 r theta 来表示一条直线 其中r为该直线到原点的距离 theta为该
  • web前端进化之路(一)——小程序开发

    最近学习前端感觉很多知识学起来容易 但是很多知识点很容易忘记 想做一个工具来方便自己来学习 正好结合小程序 分享给大家 照顾初学者 可能讲的比较细 理解哈 准备工具 小程序一个 已申请 名称是 web前端进化之路 比目后端云 作为服务器后端
  • linux下创建多线程执行

    linux下创建多线程执行 线程 thread 台湾称 执行绪 是 进程 中某个单一顺序的控制流 也被称为轻量进程 lightweight processes 计算机科学术语 指运行中的程序的调度单位 线程是操作系统能够进行运算调度的最小单
  • 在嵌入式学习困惑:做驱动开发还是做应用开发更有前途

    在嵌入式学习过程中 很多人都有这样的困惑 意思就是说 你告诉我哪个更有前途 我就好好学哪个 另外一个就不用学了 问这种问题的同事往往会同时问另外一些问题 我以后就想做驱动开发 你教我这些应用开发的技术有什么用 C 用得多吗 学了有什么用 我