在嵌入式学习过程中的困惑——我一开始看什么书都看不懂,怎么才能理出一个学习顺序

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

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

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

时间: 2024-10-25 05:04:21

在嵌入式学习过程中的困惑——我一开始看什么书都看不懂,怎么才能理出一个学习顺序的相关文章

在嵌入式学习过程中的困惑——有人说软件技术变化太快,现在学的东西过两年就要完全淘汰,是吗?

有人说软件技术变化太快,现在学的东西过两年就要完全淘汰,是吗? 你知道这话是什么人说的吗?必然是已经被淘汰的人说的.比如Delphi.BCB.PB这些开发工具和语言,都曾经很是风光了一阵,但现在已经完全被Java和.NET取代了.那么Java和.NET会不会被取代呢,也许在相当长的时间内还不会. 这些被淘汰的程序员有一些共同的特点:只会用鼠标拖拽控件,离开IDE就不知道如何工作,学点儿花拳绣腿的功夫就想吃一辈子,对学习新技术不感兴趣,做一天和尚撞一天钟.现在请回头看看1,在整个软件技术领域,这些

Single Number 数组中除了某个元素出现一次,其他都出现两次,找出这个元素

Given an array of integers, every element appears twice except for one. Find that single one. Note:Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory? 数组中除了某个元素出现一次,其他都出现两次,找出只出现一次的元素. 一个数字和自己异或

ListView中删掉某个item时出现整个ListView都看不见,但是数据源有改变

搞了一个下午都没找到问题根源在哪里,醉了!!!可能是功夫不够吧!最近在弄一个listview的item删除,在每个item中加了删除按钮,删掉某行时,数据源有发生改变,但是ListView居然不见了,像是被隐藏了,怪咖...当时我的ListView布局是这样的: <span style="font-size:14px;"> <ListView android:id="@+id/lv_collect_list" android:layout_widt

OC开发学习过程中的一些小经验

1.引入头文件以及框架 :  @import   XXXX         XXXX表示需要引入的文件/框架2.头文件引用循环:两个头文件相互包含时,将其中一个头文件的类用@class引入3.设置边角幅度 :[  XX.layer setCornerRadius:100 ]  ;    XX表示需要设置边角的对象,一般是给按钮设置,边角幅度大小跟最后数字取值关联.4.多个引号处理方法:引号前加\,如果还有括号影响,就再单独用@“ “将其框起来..专业术语叫转义字符.. 5.在UIWebview中

嵌入式系统中为什么要添加操作系统?(转)

原帖地址:http://blog.sina.com.cn/s/blog_8f396e370100vjs0.html 嵌入式系统中为什么要添加操作系统?这个问题很多人都能回答,并且也一定要很多答案.当外行问及我这个问题的时候,我说是想让程序脱离硬件,提高程序的可移植性和可读性:另外就是当系统比较复杂的情况下,操作系统可以为这个复杂的系统提供管理机制,开发人员只要完成功能函数,并且添加任务即可,不用再去管不同的任务之间通信以及各个不同功能之间如何协同工作等等的问题.但是这样说出来,似乎没法让他们感受

世界第三大Web服务器-Nginx在嵌入式系统中应用(ARM处理器)

      本文作为老技术人对国庆(2014.10.01)的献礼,有限开放,属于本工作室5A级保密文件,不提供技术咨询: Nginx("Engine X")作为世界第三大Web服务器,如果能应用到嵌入式系统中应用中是多么美好的事情,如下将告诉你实现的可能, 实现(通过验证)最小硬件配置(300Mhz ARM9,128MB内存). 1. 交叉编译PCRE库,Nginx对PCRE库有依赖,PCRE(Perl Compatible Regular Expressions)是一个Perl库,包

Qt学习过程中遇到的问题

由于工作需要,开始使用Qt,由于在网上找的教程文档时针对qt3的,所以在学习的过程遇到了许多由于版本不一致造成的问题,因此记录下来. 参考的文档是:Qt入门教程 详细讲解版 本机Qt版本为:Qt5.3.1(windows.Linux(CentOS 6.2)) windows下 1.错误:C1083: 无法打开包括文件:“QApplication”: No such file or directory原因:Qt5里不再用QtGui模块,而是使用QtWidgets模块.解决办法:在工程文件.pro里

android 学习过程中登陆失效的个人理解

今天在学习的过程中,要做登陆失效的功能,所以就找了些资料,好好看了一下,研究了一番,慢慢的做出来了! 比如:你在一个手机端登陆了账号,在另外的一个手机端也登陆了账号,此时,前一个手机端的账号会提示登陆失效. 意思是只能存在一个账号,这个其实不是很难. 每次登陆的时候会存在一个Token,每次登陆的Token是不一样的! 下面贴一下前端的一些小代码: 在异步网络请求里面判断返回的异常是否是登陆失效: @Override protected void onPostExecute(BusinessRe

构建低成本、高度可配置的桥接解决方案:在嵌入式设计中采用基于D-PHY的MIPI标准外设

http://www.autooo.net/classid106-id128484-2.html 嵌入式系统的设计者们正面临着进退两难的困境.一方面他们需要降低系统成本.另一方面他们的系统面向使用面相对较窄.小批量的应用,无法发挥出大批量生产的规模效益.大批量的消费类应用市场提供的元件能够处理类似的任务,而且成本更低,但嵌入式系统设计者们却无法充分利用这些元件,因为他们的系统可靠性建立在为嵌入式环境优化的高度专用的那些传统接口之上.这个问题在显示屏.摄像头和应用处理器方面最为突出,适用于移动平台