作为一名凡事不用心、做事不用功的失败程序员,我最近开始思考对程序语言的选择,在过往随波逐流的日子,我乘着不用心且不用功的恶劣习惯,学习过C语言,C,C,vbscript,javascript,html,css,vue,nodenpm,python,Go等一众程序设计语言。当初在听到面向对象的概念时,觉得是毫无疑问正确的方向,因此而从未正视过C语言,直接躺倒在C等面向对象的语言上睡卧良久,然而现在,我觉得C语言才是最终的归宿,因为它简单,高效,方便。 曾经觉得毫无疑问正确的面向对象的概念出了啥问题呢?这是一个哲学问题,当class将数据和方法捆绑在一个单元时,其实是将数据和方法的共享粒度从原本的单个数据和方法增大到一个classobject,共享粒度的扩大首先是剥夺了最小粒度(单个数据和方法)的共享权,其次是极大增加了共享的成本,因为一共享就是一整个classobject,必然会导致整体性能的巨大损耗。 如果你认为没必要为每个数据和每个方法提供单独的共享权,那这就是哲学问题的所在,从万物的相似性、共通性来说,每个数据和方法都必然会有共享的价值,因此必须要有单独的共享权。 C的模板就是想从已丧失的最小粒度共享权上折返,但是返回得很艰难,也很有限,何必如此呢,抛弃臃肿繁琐的面向对象,回归简单纯一的struct和function,用void就可以轻松方便地搞定一切。