c++的今天,这次c++大会的内容太水了.

为什么是c++.

序号理由
1低成本高抽象
2低级访问,甚至汇编
3应用领域广
4高可移植
5更好资源管理

低成本高抽象:

序号特征
1用户定义类型
2类型模板
3泛型算法
4别名类型
5推导类型
6编译时自省
7运行时多态
8异常
9决定性析构

用户定义类型

内置类型:强大,有表现力
可用基本类型,用户定义类型干任何事
程序员可定义类型:基本算术类型(重载操作符),对象指针,函数指针.

不强加编程范式.但有:过程,基于对象,面向对象,泛型,函数式,值语义.自由组合各种范式.
库:可以说c++是由组成的.
库的特点:强大,有效,安全,自然语法,特定类型优化,自动管理资源,与自定义代码一样有效的泛型特征,很小的抽象开销,0开销准则(与你手写差不多)

低级访问

系统编程语言:低级硬件控制,响应硬件中断,设备驱动,任意操作内存(甚至操作位),附带汇编器,允许内联汇编代码
作为c超集附带.
管理用户定义类型
大多数语言通过从栈分配内存,跑构造器函数来创建对象.
而c++可以在堆上,静态内存,栈内存,任意内存上构造.
可优化缓存:利用缓存,避免错误共享.
大多数语言容器不能在连续内存上分配,不能利用前向缓冲.
c++的数组,向量,单列,用户定义类型都可以.

宽应用领域

并不解决特定问题,而是解决通用问题
可伸缩:软件工程就是关于可伸缩,算法,语言.
低端:嵌入式,设备驱动,cgi,移动应用,你仅支付你用的,低内存占用.
高端:几百个工程师,几十个模块,单独编译模块.

高可移植

c机器模型:最小要求,全局硬件支持,
几乎所有平台,都有c++工具链
所有头部手机平台,唯一可用高级语言
不用重写,c++就可支持这些平台.
即使完美的语言,不能在特定平台上构建,也没有价值.
语言外部因素:工具链,分析工具,有经验工程师,软件库,书籍/说明材料,支持问题跟踪,培训机会.
大安装量,工业支持.

更好的管理资源

垃集:优势:无泄漏,或双处理,很烦的问题.
劣势:一直占用内存,程序员不能控制,可导致冻结,要求大量未用内存缓冲.
c++要求更好解决方案:
必须通用:内存是唯一资源,类似管理其他资源,使用后立即释放,
决定性析构.
RAII:获取资源即初化,获取责任是初化,出域时要释放,在适当生命期的对象(在栈上)要释放,finally违背了不要重复原则

尽量快,

2000年,桌面计算很快了,似乎不需要速度了.
为什么写一个更复杂的语言,而在速度上只有丁点改进?
c++特点:c语言的负担,大量复杂却丁点更强大(模板,泛型,重载操作符,指针太难),管理语言似乎够快了,
管理语言:
java系:java,scala,jython,jruby,clojure,groovy
微软系:c#,f#,ironpython,ironruby,c++/cli
大学觉得管理语言比c系更好教.
指针太难!
性能问题很重要.c++11出世了.
添加了:动,基于区间循环,枚一致,统一初化,
λ表达式:简化,更通用算法,更函数式
改进字符:字符集/统一码,自定义字面量
元组,各种指针:独针/共针/弱针.
更好支持库作者:类型自省,可变模板,完美转发
大消息:多线程,移动语义等等.


概念=约束+公理;
概念,要在类型,语义,操作上下功夫.

λ:嵌套函数/函数对象/匿名函数,λ也可以嵌套,不过都没多大必要.可能有些上下文时,可以省略点.明明可以用函数解决的,非要用λ,叫舍近求远.都没啥东西.

插件开发:感觉还是不如函数方便.折腾.
感觉,c++都没啥新东西了.

posted @   zjh6  阅读(13)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示