- 主题:c++反射提案正式进入标准
你这有点对牛弹琴,因为有人不知道move/copy是没有GC的语言必须面对的东西,然后说他不懂、别乱喷,他还非得二极管思维:不是shi,就是珍馐;不是不懂,就是绝世高手
原因就是不懂move导致面试失败,最后变成了无知的无能狂怒
【 在 overcomeunic 的大作中提到: 】
: 我觉得你个人比较极端啊
: C++ 有很多很多的特性,不是说每个合格的程序员,每个厉害的程序员 都能覆盖所有的特性,不可能的
: C++ 是你需要啥,有很大概率能从这里得到满足
: ...................
--
修改:z16166 FROM 114.245.255.*
FROM 114.245.255.*
这不正说明用合适的语言干合适的事情
需要抠执行效率的地方,用执行效率高的语言
需要快速开发业务逻辑的地方,用能快速开发业务逻辑的语言
现在有些人的要求是:我要C++能干宇宙间所有能干的事情,这样我就不用学习别的开发语言了。如果C++做不到,那C++委员会和C++就是shi
【 在 yuanmo 的大作中提到: 】
: 你对3A大作如何开发是不是有些误解。。。
: 游戏是C++所剩不多的应用领域之一,不过这更源于历史惯性而非C++本身的优点。
: 图形端的Unity开发是用C#,Unreal Engine早期用UnrealScript不过后来改成了C++和BluePrint,而后者不幸成为一堆更大的屎山。总之3D引擎其实一直在寻求不用C++的解决方案。
: ...................
--
修改:z16166 FROM 114.245.255.*
FROM 114.245.255.*
谁嘴臭是最明显不过了,看看你最开始发的面试感觉不好就骂c++杂碎的帖子
你就是来论坛借题泄愤的
搞c++连c++11就有的move都不知道,还好意思一个劲儿喷c++、喷别人,正是知识落后、无知又厚脸皮的典型
的确,没有move,你用汇编和机器码也是能干活的呢
【 在 butcher 的大作中提到: 】
: 你闭上你的臭嘴吧。
: 20多年前,没有move,forward的这些雕虫小技,
: 照样风水水起。
: ...................
--
FROM 114.245.255.*
无知不是问题,但是
无知还舔着脸硬扛,你的脸皮该有多厚呢。要是我,要么认错,要么一头撞死
move/copy在Rust里也有,所有不是GC的语言都要考虑这个,去学习一下就那么难,比舔着脸硬扛还难?
【 在 butcher 的大作中提到: 】
: move是c++11引入的一个新特性,用来实现移动语义。它的主要作用是将对象的资源从一个对象转移到另一个对象,而不许进行深拷贝,可提高性能。
: 为了提高性能!!
: 不学习就落伍了,不能跟进最新特性的学习就落伍了。
: ...................
--
FROM 114.245.255.*
还我“护 zhu 子”呢,笑死了
我就是不想看着论坛被你这种不懂又瞎喷的人给搞得乌烟瘴气的,好像c++真的像有些人说的那么shi
【 在 butcher 的大作中提到: 】
: move是c++11引入的一个新特性,用来实现移动语义。它的主要作用是将对象的资源从一个对象转移到另一个对象,而不许进行深拷贝,可提高性能。
: 为了提高性能!!
: 不学习就落伍了,不能跟进最新特性的学习就落伍了。
: ...................
--
FROM 114.245.255.*
学不起、学不懂就直说啊,舔着脸喷别人试图掩饰自己的无知和懒惰,正所谓欲盖弥彰
这会儿说得好像你很善良很无辜似的
这论坛上回谁的帖子、不回谁的帖子是我的自由,不是受你限制的。
还“祝”我学到死,你以为你是不死的吗。就冲你这句“祝福”,你绝非善类
【 在 butcher 的大作中提到: 】
: 你以后不要回复我的帖子。
: 希望你活到死,学到死。
: 我学不学是我的事。
: ...................
--
修改:z16166 FROM 114.245.255.*
FROM 114.245.255.*
TL;DR 简要回答:
因为 C++ 标准委员会(ISO C++)只制定语言和标准库本身,而不管理生态和工具链。再加上历史包袱、生态碎片、平台多样性等因素,导致 C++ 没有统一的官方包管理器。
一、标准委员会的职责决定了它“不管这事”
ISO C++ 的目标是定义:
语法(如模板、范围 for)
标准库(如 STL、线程、正则)
ABI、行为规范(如未定义行为)
但它不负责:
编译器实现(GCC、Clang、MSVC)
构建系统(Make、CMake、Meson)
包管理器(vcpkg、conan、hunter)
标准委员会不干涉工具生态,这是它一贯的方针。
—— Herb Sutter(C++ 核心专家)
二、历史包袱:C++ 太早出现了
C++ 诞生于 1980 年代,那时网络尚不普及、没有中央仓库概念。
开发者习惯于:
手动下载源码
写 Makefile 编译
把 .h、.cpp 拷贝进项目
C++ 是一个在 包管理之前就广泛使用 的语言。
它的历史比 npm、pip、cargo、go mod 等都早。
三、生态高度碎片化
C++ 在 平台、编译器、构建系统、ABI 等方面都不统一,导致包管理器实现困难:
方面 状况
编译器 GCC, Clang, MSVC 等 ABI 不兼容
构建系统 CMake, Make, MSBuild, Autotools 各自为政
平台 Windows、Linux、macOS 差异大
包形式 有的只提供源码、有的预编译、有的静态、有的动态
一个包可能在 Windows 用 vcpkg,Linux 用 apt,Mac 用 brew,在构建时还得兼容不同编译器。
四、社区内缺乏统一意志
vcpkg(微软)、conan(JFrog)、hunter、Buckaroo、spack、biicode 等工具争相竞争,但没有一个成为真正的共识性标准。
这导致开发者和厂商各用各的,你的包我装不了、我的 ABI 你编译不了。
CMake 虽然几乎成了构建的事实标准,但它本身不是包管理器。
五、标准化包管理器的现实障碍
若委员会标准化一个包管理器,还要考虑:
安全性(依赖信任)
后向兼容(老包支持)
实现维护(谁维护仓库和服务?)
法律合规(哪些国家能访问?)
这相当于做一个“开源界的 C++ App Store”,很难落地。
六、未来方向?
虽然 ISO C++ 不直接管包管理器,但**正在推动模块化(C++20 Modules)**来间接帮助生态改进:
模块有助于加快编译、清晰依赖
模块可与包管理器(如 vcpkg)结合得更紧密
将来可能形成基于模块的生态系统,但还在缓慢推进
【 在 quicker 的大作中提到: 】
: C++依然是大内高手们智力和高水平的标志,即便是21世纪过去1/4了,他们还是没有给C++造出一个统一好用的包管理工具
--
FROM 114.245.255.*
起码还有Rust啊
其实Pascal也是,只不过它基本死了,就算没死,以前的各种生态让它也写不了或者难写kernel driver。
但是调用汇编是没啥问题的
【 在 overcomeunic 的大作中提到: 】
: 贴硬件的,除了汇编,就C/C++了,还有哪一个呢
--
修改:z16166 FROM 123.115.134.*
FROM 123.115.134.*
哈哈,你这个心理活动有点意思
unsafe的意思是Rust编译器对那段代码里的东西做不了Rust特有的检查,仅此而已。
如果要利用编译器的检查,当然是unsafe的代码越少越好。
不过有两种场景要用unsafe,一种是没有pure Rust的库可以用,只能调用C的。
另一种就是为了故意绕过Rust编译器的检查的。
【 在 overcomeunic 的大作中提到: 】
: rust有些恶心
: 所以好的,都归它的,所以不好的,扔给c,然后说那个是unsafe的
: 这种语言把人性的丑恶体现得淋漓尽致
--
FROM 123.115.134.*