2021年06月06日

迷惑性词汇

起名可能是件很头痛的事。特别是在自己还没理清那是什么东西的时候,很容易带来混乱。

很多名字会用它词不达意的迷惑性,在不经意的时候给人带来困扰。人们深受其扰,不能很好地理解其含义,但又常常看不到它的迷惑性,以为是自己没理解到位。

整理一下某些容易让人迷惑的词汇。

“堆”、“栈”

请分清那是数据结构中的堆、栈,还是内存区域中的堆、栈。

“无锁队列”

无锁队列是用了“原子性”指令,让 CPU 的多个核心不能同时修改同一个值。也就是在修改值的时候“独占”那个值。独占不就是“锁住”了?不好意思,所谓“无锁队列”仍然有锁。“原子性”即是有锁。

“去中心化”

请问“中心”是指事物只有一份,还是指整个事物都放在同一个位置?我认为是前者。这被叫做“去唯一化”更贴切一些。“中心”一般用来形容位置,“唯一”更适合形容人们话语中的主体:“事物”。

“区块链”

这个词字面意思很明确,用来表示“把每一‘块’数据通过哈希与前一块连接起来”也挺合适。但许多人口中的区块链并不是这么单纯,认为“区块链”概念中必须要有“去中心化”,甚至必须要有“币”…… 那干脆叫“多链”、“比特链”、“币链”不好吗?

“同步”/“异步”、“阻塞”/“非阻塞”

你如果尝试在中文解释中理解“同步非阻塞”、“异步阻塞”等等这些莫名其妙的词,相信我,那就是往粪坑里跳。很难想象技术界还有这么多解释不清,甚至自相矛盾的东西大行其道,而且还有面试官喜欢拿出来考一考。
其实这是一对同义词,在使用的时候需要明确“谁和谁同步”,“谁阻塞了谁”这种问题。
网上盛行的“同步非阻塞”、“异步阻塞”这种词,结合网上流传的它们代表的含义看,是十分具有迷惑性的。不要妄图理解里面“谁和谁同步”,“谁阻塞了谁”。如果迫不得已要接触这几个词汇,就强行记住:“它只是某种模式的名字,和字面意思没啥关系”。“设计模式”里那些名字好像就有这种程度的迷惑性,字面意思需要被完全忽略?