A*******e 发帖数: 2419 | 1 我觉得是type deduction,overload resolution,move semantics。内存管理用smart
pointer已经容易很多了。 |
t**r 发帖数: 3428 | 2 类型系统最难啊。 Type traits什么的不容易掌握
还有一些新的utility 比如那些std::move, forward..
我个人就不太喜欢那move.感觉很鸡肋 |
w***g 发帖数: 5958 | 3 编程序就绕不过类型系统。像python这种,不还是自己
得在脑子里记着类型。我也写过Perl,自动在字符串
和数值类型之间转化,结果就是各种bugs。
【在 t**r 的大作中提到】 : 类型系统最难啊。 Type traits什么的不容易掌握 : 还有一些新的utility 比如那些std::move, forward.. : 我个人就不太喜欢那move.感觉很鸡肋
|
c*********e 发帖数: 16335 | 4 php就是perl转化来的,能用php,还用perl干什么?
【在 w***g 的大作中提到】 : 编程序就绕不过类型系统。像python这种,不还是自己 : 得在脑子里记着类型。我也写过Perl,自动在字符串 : 和数值类型之间转化,结果就是各种bugs。
|
A*******e 发帖数: 2419 | 5 move对性能提升还是很明显的。你用用就知道了。
但缺点就是规则更复杂了。以前的Big 3法则现在成了Big 5,构造对象时还要了解重载
规则。
【在 t**r 的大作中提到】 : 类型系统最难啊。 Type traits什么的不容易掌握 : 还有一些新的utility 比如那些std::move, forward.. : 我个人就不太喜欢那move.感觉很鸡肋
|
D*******a 发帖数: 3688 | 6 最大的问题是半懂不懂的程序员很容易搞出很多bug,而且编译出错信息晦涩难懂,降
低dev productivity
smart
【在 A*******e 的大作中提到】 : 我觉得是type deduction,overload resolution,move semantics。内存管理用smart : pointer已经容易很多了。
|
A*******e 发帖数: 2419 | 7 编译器的问题。clang好一些,但还是不够直观。
写编译器的人难道不明白编译器信息是给程序员看的吗?经常一长串模板展开后报个错
,让人一头雾水。
【在 D*******a 的大作中提到】 : 最大的问题是半懂不懂的程序员很容易搞出很多bug,而且编译出错信息晦涩难懂,降 : 低dev productivity : : smart
|
D*******a 发帖数: 3688 | 8 因为C++编译器能力太强了
【在 A*******e 的大作中提到】 : 编译器的问题。clang好一些,但还是不够直观。 : 写编译器的人难道不明白编译器信息是给程序员看的吗?经常一长串模板展开后报个错 : ,让人一头雾水。
|
C*****E 发帖数: 2679 | 9 是的,而且crash之后就是一个seg fault,不像别的稍微高级点的语言至少给个stack
trace。
【在 A*******e 的大作中提到】 : 编译器的问题。clang好一些,但还是不够直观。 : 写编译器的人难道不明白编译器信息是给程序员看的吗?经常一长串模板展开后报个错 : ,让人一头雾水。
|
d*******r 发帖数: 3299 | 10 光语言特性就够你熟悉了
很多时候必须手动管理内存很累人
错了crash了, 查错难 |
|
|
b*******s 发帖数: 5216 | 11 高性能程序很需要,不用copy了
【在 t**r 的大作中提到】 : 类型系统最难啊。 Type traits什么的不容易掌握 : 还有一些新的utility 比如那些std::move, forward.. : 我个人就不太喜欢那move.感觉很鸡肋
|
b*******s 发帖数: 5216 | 12 back --- gdb
stack
【在 C*****E 的大作中提到】 : 是的,而且crash之后就是一个seg fault,不像别的稍微高级点的语言至少给个stack : trace。
|
q****F 发帖数: 51 | 13 编译器很难写,要兼容各种新旧语法,有历史包袱。 |
r*g 发帖数: 186 | 14 放弃吧 我都是clang -c先编译查错
然后用g++完成整过过程
现在gcc给出的出错信息就不是给人看的
【在 D*******a 的大作中提到】 : 因为C++编译器能力太强了
|
M*****R 发帖数: 650 | 15 I think copy-by-value is C++'s original sin.
Once you have copy-by-value, you need copy constructor.
but you cannot write a copy constructor without copy by reference.
So you have both, but then what about pointers?
It cannot manage the memory itself because it's not type-aware.
So you need RAAI, aka. smart pointers.
Now what happens when you copy a collection object,
oh, right, you need to know whether to do a shallow copy, or deep copy.
So how do I mandate shallow copy, you need move constructor and move
semantics.
Now what happens when you copy a collection of smart pointers,
oh, right, we need shared pointers based on ref counting.
Now what about I write a template for all types.
oh, right, we need different specilization for different data types: smart
pointers
types that can be l-value, or types that can only be r-value.
All hells break loose.
Imagine a world C++ doesn't need to support copy-by-value. All above points
vanish,
but, oh, well, it's not C plus plus any more.
smart
【在 A*******e 的大作中提到】 : 我觉得是type deduction,overload resolution,move semantics。内存管理用smart : pointer已经容易很多了。
|
N******K 发帖数: 10202 | 16 矩阵运算
定义矩阵 A B C D
初始化B为单位矩阵, C, D为随机数
A=B;
B=C*D;
A=A+B+C
你不定义copy by value 就乱套了
【在 M*****R 的大作中提到】 : I think copy-by-value is C++'s original sin. : Once you have copy-by-value, you need copy constructor. : but you cannot write a copy constructor without copy by reference. : So you have both, but then what about pointers? : It cannot manage the memory itself because it's not type-aware. : So you need RAAI, aka. smart pointers. : Now what happens when you copy a collection object, : oh, right, you need to know whether to do a shallow copy, or deep copy. : So how do I mandate shallow copy, you need move constructor and move : semantics.
|
n******n 发帖数: 12088 | 17 可以定义clone
【在 N******K 的大作中提到】 : 矩阵运算 : 定义矩阵 A B C D : 初始化B为单位矩阵, C, D为随机数 : A=B; : B=C*D; : A=A+B+C : 你不定义copy by value 就乱套了
|
N******K 发帖数: 10202 | 18 换个马甲就高大上了?
【在 n******n 的大作中提到】 : 可以定义clone
|
m*********t 发帖数: 527 | 19 Re.
参见一下 Eigen (C++ 矩阵库,非常高效) 的内部实现,
http://eigen.tuxfamily.org/index.php?title=Eigen3_Developer_Doc
http://download.tuxfamily.org/eigen/meetings/paris2010/Gael-New
【在 N******K 的大作中提到】 : 矩阵运算 : 定义矩阵 A B C D : 初始化B为单位矩阵, C, D为随机数 : A=B; : B=C*D; : A=A+B+C : 你不定义copy by value 就乱套了
|
N******K 发帖数: 10202 | |
|
|
M*****R 发帖数: 650 | 21 copy by value 只是让这种syntax变得容易,并不是说没有copy by value ,就实现不
了。何况你要是喜欢这样的,fp不是更合适
【在 N******K 的大作中提到】 : 矩阵运算 : 定义矩阵 A B C D : 初始化B为单位矩阵, C, D为随机数 : A=B; : B=C*D; : A=A+B+C : 你不定义copy by value 就乱套了
|
N******K 发帖数: 10202 | 22 看来你是没有搞过数学类的算法
【在 M*****R 的大作中提到】 : copy by value 只是让这种syntax变得容易,并不是说没有copy by value ,就实现不 : 了。何况你要是喜欢这样的,fp不是更合适
|
M*****R 发帖数: 650 | 23 大牛,数学和编程都懂 。我估计B.S.同学也没你牛
【在 N******K 的大作中提到】 : 看来你是没有搞过数学类的算法
|
x****k 发帖数: 2932 | 24 多重继承,读代码时你很难猜到具体调的是哪个函数.
另外就是各种复杂的template meta programming.很有效率,但如果你用不上,当我没说.
smart
【在 A*******e 的大作中提到】 : 我觉得是type deduction,overload resolution,move semantics。内存管理用smart : pointer已经容易很多了。
|
n*****3 发帖数: 1584 | 25 难就难在向下兼容 c
向前 meta programming。。。
还有 。。。。
我看除了 pure FE, IT 神马都有一点
杀手library 还不到Java 一成
说.
【在 x****k 的大作中提到】 : 多重继承,读代码时你很难猜到具体调的是哪个函数. : 另外就是各种复杂的template meta programming.很有效率,但如果你用不上,当我没说. : : smart
|