程序员的“机械同感”

本文探讨了程序员在编程时应具备的'机械同感',即对编程与硬件交互的深刻理解,强调了代码正确性、高效性和安全性的关键性。文章通过实例分析了Redis、Nginx、Kafka、MongoDB等技术如何优化硬件性能,并指出软件世界与硬件世界的相对稳定。同时,提出了深入研究硬件原理以提升编程能力的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

偶然在Martin Flower的博客上看到了一篇讲述LMAX架构的博文,里面有一小块提到了“机械同感”Mechanical Sympathy(不知道该怎么翻译好)。恰逢最近正在看第二版的CSAPP(Computer System: A Programmer Perspective,深入理解计算机系统),感慨万千!

“机械同感”(mechanical sympathy)来自于赛车比赛,它反映了车手对赛车有一种内在的感觉,所以他们能够赛车达到最佳状态。然而多数程序员缺少这种对编程与硬件交互的感同身受的情感。要么是没有,要么就是以为自己有,实际上却是基于很久以前硬件工作方式而建立的概念。这说得实在是太多,作为一个程序员,在写程序时是否考虑过自己的代码能否正确地运行在底层硬件上,又是否考虑过怎样榨干硬件性能让自己的代码跑得飞快,又是否考虑过自己的代码能否被人钻了空子发生安全问题。我想这三方面也许是学习硬件工作原理的最主要因素,即让自己的代码:正确、高效、安全地在硬件上跑。简单来说就是快准稳

       这同时又让我回忆起另一件事。曾经看过一些《一个操作系统的实现》写过一些汇编。一个很深的感触就是:代码万变不离其宗,无论怎样写都跳不出Intel X86CPU和指令集。就像孙猴子跳不出如来佛的五指山一样,我们也没法写出超脱于底层硬件的代码。所以尽管软件世界风起云涌,各种新算法、新语言、新概念层出不穷,然而硬件世界确实波澜不惊。内核引导、LDTGDTRing0Ring3这些基本原理未曾变过,如此强烈的反差怎能不叫人感慨。

       为了增强自己与计算机的联系,拟定了一些有意思的题目,但不知何日能够完成,先记下一笔:

Ø  RedisRDB复制对copy-on-write机制的运用

Ø  Nginx中的epollsendfile

Ø  KafkaVarnish如何高效利用pagecache

Ø  MongoDB中的mmap模仿内存数据库

 

把握住朴素而永恒的经典!

转载于:https://www.cnblogs.com/xiaomaohai/p/6157669.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值