这周太忙了。没有多少时间,来继续之前的通信学习。
当然,也是我懒。这是最大的原因。了解我的人知道,我这个人,是从内心反对终身学习的,再没有比这种理念论更糟糕的理念论了。
因为人过25岁,熵就开始增加了,过了45就快速增加。你的任务不是学习,是养活你老婆孩子,送孩子上大学,尽可能长地陪你老婆度过余生。尽管你注定很难领到退休证。
不止是编程界,中国的整个科技界,本质的思想都是不对的。
但是生活还得继续。这周除了进行了一系列的攻关的工作,例如,dpdk方面,如何在secondary调用rte_eal_remote_launch,用以创建线程,虽然最后成功的,但没有搞清楚全部的原因。
似乎是不在linux的master核来创建。
所以,又想起来一直想要做的,dpdk的单步跟踪。而且幸运地成功了。
我在许多公司工作过。不仅在通信公司。还在OS公司工作过。
OS公司,一般是不单步跟踪的。
这个,虽然我不是完全认可,但是可以接受的。这与OS的特点有关。这里我不过多展开说。
但即使如此,我以前看的书中,国外的资深程序员,也有认为单步跟踪是有意义的(在OS开发过程中)。这里我也不展开说了。但我觉得那位程序员,是位真正的程序员。相反,许多人,是为装X才写书或者写文章,显得自己多么牛,这些人,没有一个支持单步跟踪,因为那样会让别人觉得他们low.
那么dpdk大家都知道,是一种运行于用户面的程序,今天这里我不想展开讲dpdk,这种技术要展开来,事情太多了。不是我不想说,是真的时间不允许。我这是用五笔打的字,但也是在占用我的时间。
只要是用户面的程序,就可以考虑来单步跟踪。
特别是在dpdk的secondary中的程序。
我还是说一些背景的知识吧。
dpdk是运行于用户面,这句话是什么意思呢?是说,它遵循操作系统(一般是linux)的基本法则。例如,进程之间的内存的逻辑地址是进程间独立,或者说隔离的。
但众所周知,dpdk的本质就是利用huge memory来消除了换页和内存的拷贝的动作。
因为dpdk的竞争对手是tcp/ip的协议栈的linux的实现。
那么,这里就存在一个冲突待解决:共享内存于不同的进程之间。
对于大多数dpdk程序员,这不是一个问题:因为一般都是dpdk的主用进程,或称server进程,术语似乎是primary.
所以,不需要面对这个冲突。
但是,如果你需要两个进程,基于同一个dpdk来实现特定功能,那么就需要理解这里面的机制。
但是我理解吗?
我显然不理解。而且我也不想理解。
人生来不是学习的,所以,
我其实很希望一些程序员读读哲学。比如亚里士多德的时代,人与神是同身的。亚里士多德是人也是神。因为他本人学会了当时文明世界的所有的知识。他可以是神。
但文艺复兴之后,信息大爆发,第一个站出来的人是写了《人性论》休谟。这里的人性,不是我们中国人理解的人性,是讲人文主义,对立面是神文主义。我记不得了,好像一共是三个文,一个是人文,一个是神文,另一个好像我记得是活着主义。。。开个玩笑。没跑题。
休谟把人们带入到不可知的荒漠。这里康德站出来,把被休谟扔掉的神,又抬回来了:一个无所不知的神还是可以存在的。
我不知道那个神是不是chatgpt啊。
康德说,是,首先认可你休谟说的是对的,你也是伟大的。我们都不再可能成为亚里士多德,不可能学会所有的知识。但这并不妨碍我们能为社会做出贡献!
哎,这是我这篇博客的真正起因:我是想劝一些程序员,不要再当什么全栈公程师了!那是句骂人的话:说是你高手,你已不是人。?
那么如何去用你不懂的知识解决一个社会(其实是老板,但我这人情商高)要求你解决的问题,以便于养活老婆孩子,乃至更多的需要你爱的人呢(。。。)。
那么,单步调试,是你作为程序员,必须要会的技能。尽管这门技术,似乎现在不那么热门。
原因很简单:太难了!
单步调试简单吗?我可以实话来说:不简单。非常难。
不仅仅是环境难于搭建,而且,如何下断,和改进代码,以便于下断,是需要深入思考的。
所以,新人们,永远不要相信一些所谓的老鸟告诉你说:不要跟踪,日志够用了,这种P话:
不要以为对面的那个一把白色的羊角胡,就代表这位是个老中医!
其实前面我解决清楚了。
就是现实世界是庞大的,你不是亚里士多德;亚里士多德来到现代,也无法再成为亚里士多德。
所以,单步跟踪,局限了你的视野(focous),但是在这个局限以内,你能更精装地盯住问题,并且,IDE给了你一个将所有的信息联合显示的类似飞行员的仪表板的界面——这才是20世纪最伟大的发明。
而且,未来的AI也一定会学习这种技术。那时候,你都不如一个AI。还怎么养活不了老婆孩子呢。
先写到这,我尽快把实操补到这篇之后。
focus,像电影机那样。这个动态的世界,其实是一帧帧篇幅有限的画面构成的。
focus, 动态,画面,视野的局限。