湖南做网站磐石网络案例,wordpress 电脑微信登陆,外包加工网是不是骗钱的,网站浏览速度千里之行始于足下#xff0c;为了让大家的学习更加事半功倍#xff0c;笔者将会介绍RTOS的学习方法。 
可能很多人拿到一份源码#xff0c;就想通过各种方式搞懂它#xff0c;例如抄代码或者读代码。 
笔者认为#xff0c;单纯抄一个实时操作系统是没有任何用处的。比如对…千里之行始于足下为了让大家的学习更加事半功倍笔者将会介绍RTOS的学习方法。 
可能很多人拿到一份源码就想通过各种方式搞懂它例如抄代码或者读代码。 
笔者认为单纯抄一个实时操作系统是没有任何用处的。比如对于Sparrow它的程序仅仅有四百行不到一天就可以抄完但是又能收获什么呢 
老实说笔者也干过抄源码和看源码这种事情比如笔者曾经抄过FreeRTOS五千多行源码耗费了大量时间也尝试看过linux内核源码但是这样的效率非常低甚至是几乎没有任何用处。 
读者可能会质疑和反对但是请听笔者细细分析原因。 
首先编程是一种结果向的产物而不是过程你看到的源码是不断修改后的结果而不是过程。程序  数据结构  算法。我们想获得的是代码的思路通常是算法编程是对我们算法的一种描述而不是算法本身这也就注定了通过看源码理解思路是低效的因为源码并不等同于算法如果有人直接将算法讲述给你你再参考源码的具体实现或者尝试编程实现往往会收获更多这才是学习编程最高效的方式。但是可能有人会说我上哪找人直接讲述源码莫慌笔者的这篇文章就是为了解决这些问题而写的。但在此之前让笔者继续讨论那些没有必要的学习方式。 
其次不管是抄源码还是看源码代码都是死的。编程产生的代码就是要运行在机器上的也就注定了它面向的对象是计算机而不是人本身除非你的大脑是二进制的没有运行的代码毫无意义快速学习一个项目需要的是对项目深刻的理解但是抄代码等行为让我们的认知开始变得“趋利避害”也就是说我们往往会忽视那些细节只重点关注我们看得懂的部分走不出自己的舒适圈谈何提高 
最后学习一个项目重要的是背后的基础知识而不是项目本身。所谓冰山一角便是如此。没有水下的冰山何来一角冰山为什么有的人常常能够举一反三那是因为它理解了一个事物的本质从而能够在这个基础上进行扩展。很多人看源码却从来不思考更深层次的东西只关注源码的浅层次的实现功能。 
现在该让笔者介绍一些更加有用的学习方式了。 
让程序先跑起来 
笔者已经说过程序面向的对象是机器死的代码没有任何意义只有计算机认可的代码才是好代码通过观察运行的程序笔者可以更加高效的推测程序运行的原理。 
读日志 
读者可以在运行的程序中加入各种printf观察打印的日志从而推测程序的执行思路并且可以猜测程序的各种原理并且通过日志来验证它。 
带着目的去查看运行中的程序 
通常我们学习一个项目是为了学会其中的各种原理那么我们必须要有目的同时要有疑惑当解决疑惑时就是我们的提高。为了学习项目而学习项目是不可取的你应该重点关注你得到了什么以及如何去运行这些知识而不是学完后仍然脑袋空空。 
上手修改并调试 
对程序的修改是对我们的想法最好的验证在调试过程中我们对程序的理解会进一步加深。 
明确程序只是算法的具体实现 
程序  数据结构  算法。如果有一些优质的资料介绍代码的算法笔者建议通过算法来看程序而不是通过程序推测算法。 
在后面的章节中笔者将会先介绍Sparrow的基本原理以及算法然后让Sparrow运行起来通过gdb等软件一步步执行程序并且介绍Sparrow的程序是怎样实现它的算法的。 
Sparrow源码地址skaiui2/SKRTOS_sparrow at source (github.com)