注:以下讨论不涉及C,Python和JavaScript,因为你不用也得用,迟早有一天你会被这仨语言中的一个找上茬儿
马原课本告诉我们,生产力决定生产关系,生产关系反作用于生产力。我们可以使用这个理论来给计算机行业中的错误思想套公式。现在许多人中流传着Java焦虑,好像Java死了我的工作就彻底寄了,然后经典的中年危机就业焦虑。然而大概率事实是不是Java不行,而是你从始至终就没入行。换语言不会使你干好,反而你长期囿于原先的生产关系而没有意识到自己的生产力本身落后,换了语言,原形毕露,没有论坛可查,自己失去了debug和查找性能瓶颈的能力。类似的还有软件工程。首先,你大概率不是CEO之类的要职,而你的第一个demo做得并不好甚至没做出来,你就觉得现在的软件生产模型不行,想从瀑布模型转变成敏捷模型。然而你没注意到敏捷模型对生产力的要求是达到了一定境界的,你的生产力并不足以满足敏捷模型短期迭代的内在要求,大概率结局是项目流产。
换一个视角,你应该在简历上写精通XXX语言吗?理论上不应该。这时候就有人问有人就看简历里头的这玩意儿你咋办嘛,我只能说这玩意儿只能反映你接触过这种生产关系,对于你的生产力没有任何反映。你用解释型编程语言大写特写for循环,最后的结果必定是慢的要死。当你想要入坑一个新的编程语言的时候,最好问问自己:
它和我知道的编程语言有没有本质区别?
学会C的人应该接触Python,因为Python是解释型,大量使用库函数的语言而C是编译型,造轮子的语言。Rust和C就没有本质区别,你最开始制作demo的时候对安全没有那样强烈的需求,甚至对cargo一类的项目管理器没什么需求,而你编程经验又不足,你就最好先别弄Rust,而是用C先做一个能跑的东西。
最后,不妨思考一下这门语言为什么出现。C是UNIX的副产物,C++是为了改进C而产生的,Python脱胎于科学计算,Rust又被Mozilla用于浏览器内核的开发。从这个角度讲也许用Rust重构Chromium比用Rust重构Linux更现实?