首页
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
更多
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
假如C与C++是两把菜刀
科技
2024-11-19 16:37
山东
中厨刀
C是中餐厨师的菜刀,做啥菜就那一把刀,切菜切肉切鱼,都是这一把刀,刀工好的师傅,豆腐都能切成一朵花。
[付费]STM32嵌入式资料包
无论你提什么概念,都能用指针给你做出来,如果不行,那就用指向函数的指针,指针的指针,指向函数指针的指针。相关
文章推荐:
这样理解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更多。
一个团队水平高低,从其编程规范就可见一斑。
水平越高,往往规矩越多。
当然,真正的高手,都是气剑双修的,在语法层面几乎都是朴实无华,从不炫技,人家炫的是思想。相
关文章:
谈谈单片机编程思想——状态机
。
http://mp.weixin.qq.com/s?__biz=MzI1MDg4OTMwMw==&mid=2247525706&idx=1&sn=9233b370b84e96379acc99c37c72ce4b
STM32嵌入式开发
STM32嵌入式,PCB电路图,C语言,单片机,Matlab,Linux
最新文章
详解STM32在线IAP升级
总结单片机电路设计要点
认识地弹(地噪声)
硬件工程师VS软件工程师
STM32嵌入式开发中的RTOS,你用过哪些?
巧用数字万用表
经典的结构体和联合体共用实例
差模放大电路特点与抑制零漂原理
嵌入式代码经常产生bug的原因
如果模拟电路设计分九段,你是几段?
19个常用的5V转3.3V技巧
MOS管驱动电路有几种,看完就明白了
十年经验的大神谈如何学STM32嵌入式开发
设计降压转换电路?工作原理+设计步骤
假如C与C++是两把菜刀
分析稳压二极管常见应用电路
EMC防护中的滤波电容
详解嵌入式开发中的I2C总线
STM32代码远程升级之IAP编程
三相电对地电压
STM32单片机开发中的RTOS
RS485通信的收发控制
开关如何变成的CPU?
详解CAN总线
STM32代码的启动过程
STM32如何分配原理图IO
开关电源里特殊电子元件的类型和用途总结
EEPROM和Flash这样讲,我早就懂了
如何解密单片机内程序?
电路设计-硬件工程师画PCB时要了解的设计建议
梳理STM32芯片的内部架构
STM32如何分配原理图IO
用三极管实现LED闪光灯经典电路
分享两种单片机编程思想
STM32怎么选型
理解STM32控制中常见的PID算法
了解SRAM跟DRAM的区别在哪里
STM32开发中的五大嵌入式系统
单片机程序代码该如何优化?
硬件工程师的崩溃日常
EMC防护中的滤波电容
介绍PID各种算法的优缺点
C语言中结构体struct的用法
单片机中如何用二极管实现不同电压的输出?
步进电机的结构和控制模式
C语言中枚举enum的用法
不同类型单片机之间如何通信?
嵌入式开发初学者,如何学好C语言?
画PCB板时阻抗设计的重要性
用一堆开关做成一个CPU?
分类
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
原创标签
时事
社会
财经
军事
教育
体育
科技
汽车
科学
房产
搞笑
综艺
明星
音乐
动漫
游戏
时尚
健康
旅游
美食
生活
摄影
宠物
职场
育儿
情感
小说
曲艺
文化
历史
三农
文学
娱乐
电影
视频
图片
新闻
宗教
电视剧
纪录片
广告创意
壁纸头像
心灵鸡汤
星座命理
教育培训
艺术文化
金融财经
健康医疗
美妆时尚
餐饮美食
母婴育儿
社会新闻
工业农业
时事政治
星座占卜
幽默笑话
独立短篇
连载作品
文化历史
科技互联网
发布位置
广东
北京
山东
江苏
河南
浙江
山西
福建
河北
上海
四川
陕西
湖南
安徽
湖北
内蒙古
江西
云南
广西
甘肃
辽宁
黑龙江
贵州
新疆
重庆
吉林
天津
海南
青海
宁夏
西藏
香港
澳门
台湾
美国
加拿大
澳大利亚
日本
新加坡
英国
西班牙
新西兰
韩国
泰国
法国
德国
意大利
缅甸
菲律宾
马来西亚
越南
荷兰
柬埔寨
俄罗斯
巴西
智利
卢森堡
芬兰
瑞典
比利时
瑞士
土耳其
斐济
挪威
朝鲜
尼日利亚
阿根廷
匈牙利
爱尔兰
印度
老挝
葡萄牙
乌克兰
印度尼西亚
哈萨克斯坦
塔吉克斯坦
希腊
南非
蒙古
奥地利
肯尼亚
加纳
丹麦
津巴布韦
埃及
坦桑尼亚
捷克
阿联酋
安哥拉