打印
[资源共享]

假如C与C++是两把菜刀

[复制链接]
1151|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2022-12-5 10:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
中厨刀

    C是中餐厨师的菜刀,做啥菜就那一把刀,切菜切肉切鱼,都是这一把刀,刀工好的师傅,豆腐都能切成一朵花。    无论你提什么概念,都能用指针给你做出来,如果不行,那就用指向函数的指针,指针的指针,指向函数指针的指针。相关文章推荐:这样理解C语言的指针,还难吗?    中厨刀,简单,但深入高阶难,难在复杂使用技巧,做啥都是这一把刀,要切出花来,刀工需要练的,一般人练不好。    中餐厨师炫技方式就是,随便你提啥需求,我都是用这一把刀给你切出来,刀工还强。相关推荐:整理的比较全面的C语言入门笔记!

西厨刀   

C++就是西餐厨师的刀,有一大堆不同款式的刀,切不同的东西得用不同的刀,每种刀还有不同的手法,显得非常专业,高大上。    西厨刀,复杂,但是使用难度相对低,需要掌握一堆刀的功能限制。但刀太多,功能干涉太多,没准啥时候没吃透就踩坑了。真正吃透也很难。    西餐厨师经常炫技方式就是这刀我会用,那刀我也会用,组合起来还会用。一大堆使用西厨刀的术语名词和隐藏小技巧。    西餐厨师离开这些功能复杂的西厨刀,就会显得手忙脚乱,如果只有一把中厨刀,甚至不会做菜了。而中餐厨师面对这些复杂多变的西厨刀,也会不耐烦,最后还是挑出一把最顺手的,当成中厨刀用,其他的闲置。    西餐厨师看不起中餐厨师,就一把刀,太简陋,没逼格。    中餐厨师看不起西餐厨师,一大堆刀,也没见菜更好吃,而且那一堆西厨刀的功能,咱就一把中厨刀也能切出来。是的,C++所有新特性,用C都能做出来,无论是面向对象还是函数式编程还是元编程。

刀锋所向
    不要再说C++是面向对象的,而C是面向过程的,这不是本质区别。但C脑补编译器确实也不是轻松的活。    初级阶段,C比C++容易学,毕竟语法简单,关键词少。
    中级阶段,C++更容易更强大。毕竟有强大的编译器支持,只要掌握这些语言特性,就已能实现强大的高级功能。而C还需要脑补编译器,才能实现面向对象等高级特性,不是每个人都能做到,大学课程也不教这些。
    高级阶段,C++可能变成语言发烧友,各种特性组合会成为泥潭,牵扯极大的精力。而用C度过中阶段后,更深入理解计算机和程序的哲学本质后,会有一种无所不能的感觉。C反而是束缚更少,更自由,更高效的工具。
    一个C++高手,能准确掌握更多更复杂的高级语言特性组合,高效率响应业务需求,快速迭代,代码优雅简洁,鲁棒性好,维护性好,扩展性好。
    一个C高手,能掌握更多的基础模块实现方案,什么无锁消息队列,内存管理,线程调度器,时钟,各种算法库,甚至不同风格的面向对象的架构,这都是自己纯手工打造,然后根据业务需要定制这些基础模块的设计方案和参数,以追求应用业务的极致性能,和极致可靠。    C高手往往不太喜欢C++那一套,因为很多东西不能自己掌控。这让习惯掌控一切的C程序员觉得脚下有些发虚。
    C++高手往往也不太喜欢C,因为很多轮子要自己造。让习惯快速响应迭代的C++程序员无比烦躁。    都是图灵完备的语言。C能做到的,C++肯定能做,毕竟C++是C超集。而C++能做到的,其实C也能做到,只需要脑补一种编译范式而已。
    如果非要在哲学上说C和C++有什么区别,那么C是心法派,C++是语法派。
    每当有新概念新范式出现,C++标准组织就会开发新特性新语法,以提供这种新范式。
    而C则脑补一种新的心法(数据结构和算法)来解决,在语法层面尽量少增加特性,几乎很少变化。    C和C++又有点像武侠之气宗和剑宗,入门是气宗C简单,入门要学的东西少。    而剑宗C++不仅要学气宗的C,还需要学剑宗的这些++,入门就复杂一些。
    修炼进展,是剑宗C++来的快,毕竟有一大堆现成的语法范式,不需要知其所以然,只需会用,就能发挥剑宗招式的威力。而气宗C还要掌握一大堆基础数据结构和算法以及设计范式,研究精深,知其所以然,才能真正发挥威力。
    上限,是气宗C来的高。等真正深入到高阶编程,会发现每一种现成的语法范式和库,某种意义上,便捷的另一面就是束缚。语言编译器做的工作越多,库越强大,编程束缚反而越大;而语法越少编译器越简单,反而自由度越高而且越稳定可靠,可供发挥的上限也越高。
    对于以C为主的高水平团队,C现有的语法不是太少,而是多了,反而还要设定一些编程规范加以限制。相关文章:菊花厂C语言编程10大规范。所以一些真正经典优美的C代码,往往都是朴实无华的,很少在语句技巧层面炫技。
    以C++为主的高水平团队,也常常制定编程规范,对语法使用加以限制,限制可能比C更多。
    一个团队水平高低,从其编程规范就可见一斑。水平越高,往往规矩越多。
    当然,真正的高手,都是气剑双修的,在语法层面几乎都是朴实无华,从不炫技,人家炫的是思想。相关文章:谈谈单片机编程思想——状态机。



使用特权

评论回复
沙发
weifeng90| | 2022-12-8 17:59 | 只看该作者
哈哈,这个比喻太形象了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1339

主题

3897

帖子

0

粉丝