- 主题:C++泛型和继承搞得太复杂
最近看编译器一些原代码,c++感觉实在太复杂,出了问题很难排查,没有ide的dbg基本上无从下手,泛型在C上实现,是不是更简洁一点,数据类做乏型就行了
- 来自 水木社区APP v3.5.3
--
FROM 103.40.221.*
C也有泛型了?
【 在 freyoneby (freyoneby) 的大作中提到: 】
: 最近看编译器一些原代码,c++感觉实在太复杂,出了问题很难排查,没有ide的dbg基本上无从下手,泛型在C上实现,是不是更简洁一点,数据类做乏型就行了
:
: - 来自 水木社区APP v3.5.3
: --
--
FROM 223.104.39.*
实现不难
但是要做到(近乎)零开销就难了
【 在 freyoneby (freyoneby) 的大作中提到: 】
: 最近看编译器一些原代码,c++感觉实在太复杂,出了问题很难排查,没有ide的dbg基本上无从下手,泛型在C上实现,是不是更简洁一点,数据类做乏型就行了
: - 来自 水木社区APP v3.5.3
--
FROM 116.233.90.*
感觉c++太执着于零开销了
【 在 oldwatch 的大作中提到: 】
: 实现不难
:
: 但是要做到(近乎)零开销就难了
: ...................
--
FROM 183.46.171.*
那你认为Ada,Zig,Rust这些语言的generic怎么样?
另一个路线应该是用代码生成器。
【 在 freyoneby (freyoneby) 的大作中提到: 】
: 最近看编译器一些原代码,c++感觉实在太复杂,出了问题很难排查,没有ide的dbg基本上无从下手,泛型在C上实现,是不是更简洁一点,数据类做乏型就行了
: - 来自 水木社区APP v3.5.3
--
FROM 103.90.178.*
这是C++的立国之本呀,编译期搞。
【 在 somebody 的大作中提到: 】
: 感觉c++太执着于零开销了
--
FROM 61.48.128.*
既不如c底层,又不如java c#开发容易
一点点overhead没关系的
【 在 z16166 的大作中提到: 】
: 这是C++的立国之本呀,编译期搞。
:
--
FROM 183.46.171.*
c能干的,cpp也都能干,只不过不用某些特性比如异常,也就是把cpp当带类的c用。
另外就是看场合,java/c#干不了的,但是cpp能干,run得比java/c#快,又比c开发得快。
这就是cpp最后的一点生存空间了。
模板元编程这个是编译期搞的推导,没法单步debug,而编译器输出的错误信息可读性也不咋的,出错了就比较难搞。
【 在 somebody 的大作中提到: 】
: 既不如c底层,又不如java c#开发容易
: 一点点overhead没关系的
: :
--
FROM 61.48.128.*
C++的发展趋势是在高级语言层面标记机器码和cpu cache层的注意事项,然后让编译器生成机器代码层面高效+cpu cache友好的代码。
这个在别的业务上不明显,但是在需要高性能计算方面还是很有优势,因为python这些玩具算不到那么大的数据量,但是又不可能给每个程序都按云计算去编写专门的代码。
17以后推的constexpr和concept这些感觉主要也是给编译时debug服务的,我的经验是,1.要用type_trait检查,2.static_assert和enable_if里的出错代码一定要写清楚,3.用static_assert跑test。
【 在 z16166 的大作中提到: 】
: c能干的,cpp也都能干,只不过不用某些特性比如异常,也就是把cpp当带类的c用。
: 另外就是看场合,java/c#干不了的,但是cpp能干,run得比java/c#快,又比c开发得快。
: 这就是cpp最后的一点生存空间了。
: ...................
--
FROM 183.128.164.*
【 在 ArchLinux 的大作中提到: 】
: 那你认为Ada,Zig,Rust这些语言的generic怎么样?
: 另一个路线应该是用代码生成器。
:
不了解,不敢说什么,这些都是小众,很好用的话应该早就普及了,c++是沾了c的光
--
FROM 112.64.184.*