最近遇上了一些奇怪的 segmentation fault,在看一些汇编的书,然后发现了一批无脑的人天天争论一些很奇怪的东西,什么 PHP 和 JAVA 哪个好,python 短平快,什么开发代码没必要整洁,满足需求就够了。又想到了很多年前(实际上也没几年,就 10 年吧),同样有非常多的奇怪言论出现。
很多年前,有一堆人争论 C/C++,汇编和 JAVA 哪个好,汇编派认为我接近系统层面,最屌。C/C++说我也接近系统层面,我还是高级语言。JAVA 党看着 C/C++说你们这没有同步,内存管理复杂的渣渣。这些人争来争去,甚至得出来一个 C/C++快死了,未来必是 JAVA 和 python 的天下,现在看那帮子人的争论可以说是非常搞笑了,远的不说 C11 补齐了很多同步和内存操作的东西,JAVA 提供越来越细的服务,PYTHON 最终还是陷入了流派统一的争论。
这帮子争论哪个语言牛逼的人一直没搞明白,语言只是工具,是一种脱离现实的抽象,它提供的工具往往是不能完全满足现实的。根据场景需求实现不同的应用开发才是关键。举个简单的例子,要求精确的并发读改写,和容忍错误出现的多读少写少改,和无锁实现的读改写都需要根据场合来制定不同的锁粒度 /同步粒度。这些东西才是体现程序员功力的地方。TAS 和 TTAS 为什么性能差距会不同,缓存协议用的是 MESI 还是 MOESI 这种东西属于道,但是并不难理解,重点是结合这些观点到自己的场景中。
这种言论也经常让我无语,程序员是个职业。如果你想说职业当中存在的刻板印象,或问题难题那么大可以直接问出来而不是发表一些稀奇古怪的言论来求支持,因为程序员这个职业要求的不是“勇气 /信心”。要求的是一种有序看待问题,抽象问题,并找寻解决方式的方法论。这种看待问题,看待事物的方法不是几句鼓励就能做到的,它需求长期的思考和总结观察,这也是为什么经常不推荐遇到了问题就上网查的原因,答案端上来就缺少了思考的流程,对程序员而言,思考和发现确认问题是很重要的部分。
早期有人把程序员看成魔法师,现在有人把程序员看成砌砖工,离谱的是很少有人把程序员看成设计师。
这种言论在我看来是最 XX 的,它的变种还有“如果设计规范,需求不变,那么就不需要程序员”,“程序员需要为 BUG 承担责任”。这种话看似正确,但是如果换个别的类比就漏洞百出。“如果保持人之初的本性,那么就不需要法律!”,“孩子本性是善良的,维持这种本性,百依百顺他自然不会教出熊孩子”。类比之下的言论不攻自破,那为什么程序员却成为荒谬言论的重灾区?因为人们倾向于在它不了解的区域大发厥词,并将复杂的事情简单化,觉得不过如此。建议说这些话的人
War, War Never Change.