- 主题:CPP实在是太复杂了 (转载)
C++已经把自己玩死了,现在还剩几个C++新项目了。。。
【 在 hothail (沸冰!无尽的华尔兹) 的大作中提到: 】
: 特性,内容数量是一方面。还有一方面要看加这些东西的目的是什么。
: 在cpp身上看不出来,这些事情要解决哪些实际的场景,感觉更多是“别人有,我也要有
: ”,忘了自己是谁。
: ...................
--
FROM 27.91.71.*
C++第一版是1998年的,一点不老,只是早衰而已
【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】
: 我觉得主要是c++追求的目标本身就很难,束缚手脚的地方又太多。
: 追求零开销抽象,把尽量多的东西留到编译期,这种目标本来就会带来很大的复杂度。其他语言经常会牺牲抽象程度,或者牺牲零开销,难度或者难受程度就不一样。rust 也是这种目标诉求,所以也不简单。
: 缚手脚的地方,比如旧版本有一些不合理的设计但又要坚持旧版本兼容,委员会扯皮,也肯定快不起来。rust 如果是 c++ 这么老的语言也会慢很多。
: ...................
--
FROM 27.91.71.*
难得同意 xiaoju 一次。js 确实是最有前途的语言。
【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: 你这想法是换了复杂的定义啊
: 一般说一个东西复杂指的是使用复杂,至于制造原理复杂与否很少有人关心
: python使用比C++简单是没有争议的
: ...................
--
FROM 140.224.35.*
LTO算是你说的二次编译吗?
【 在 leadu (leadu) 的大作中提到: 】
: cpp模板那块搞得确实是不必要的过于复杂,走邪路了
: 正路是编译期代码生成,编译器暴露语法树等,然后二次编译。可以极大降低复杂度
--
FROM 103.90.178.*
这也许就是问题所在呢。“就像欧盟,甚至更糟,就像联合国”
人越多,越是扯皮难成事
【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】
: 标准委员会里大量大公司(微软,google,苹果等等)的代表,其实都是真实需求。
: 我见过大公司积年项目基础库代码深度使用c++复杂模板编程的,但在一般外界就不常用相关特性。这个不奇怪。
--
FROM 111.206.87.*
不是,举个例子:
当C#开发序列化库的时候,需要获取传入类型。最开始实现方式是反射,但是这个很慢。
后来有优化方式改成了动态代码生成,第一次调用的时候生成il代码。这种方法性能好,但问题是动态代码生成在unity和ios上是无法使用的。
现在解决办法,是编译的时候先编译一遍,序列化库拿到exe项目完整语法树,然后针对要序列化的类型生成cs文件,然后再带上新cs文件整体编译一次
这样的好处是开发难度很低,出错信息明确。
性能也还说的过去,至少比模板快,彻底解决了cpp用模板搞元编程带来的一堆问题。
对于这种方法,c#这边没有完成100%也完成95%了。关键词是fody,和roslyn compiler as a service
【 在 ArchLinux 的大作中提到: 】
: LTO算是你说的二次编译吗?
:
--
FROM 123.116.196.*
开源通病
【 在 hothail 的大作中提到: 】
: 这也许就是问题所在呢。“就像欧盟,甚至更糟,就像联合国”
: 人越多,越是扯皮难成事
:
: ...................
--
FROM 123.116.196.*
可以预见Linus哪天退出或没有能力继续维护内核后,Linux就是下个C++,可能还不如,直接分裂了。
【 在 hothail 的大作中提到: 】
: 这也许就是问题所在呢。“就像欧盟,甚至更糟,就像联合国”
: 人越多,越是扯皮难成事
:
: ...................
--
修改:cn62 FROM 175.42.43.*
FROM 175.42.43.*
要早立储君?
【 在 cn62 的大作中提到: 】
: 可以预见Linus哪天退出或没有能力继续维护内核后,Linux就是下个C++,可能还不如,直接分裂了。
:
: --
发自「今日水木 on M2007J17C」
--
FROM 222.129.54.*
c++ 的lambda 配和c#比么?
std::vector<int> some_list;
int total = 0;
for (int i = 0; i < 5; ++i) some_list.push_back(i);
std::for_each(begin(some_list), end(some_list), [&total](int x)
{
total += x;
});
List<int> lst = new List<int>();
int total = 0;
lst.ForEach(x => total += x);
【 在 zerg136 的大作中提到: 】
: 你说语法糖会弄的复杂这个不科学吧
: 很多语言都这么弄啊,c#,java,js都好多类似语法糖
--
FROM 180.171.150.*