- 主题:CPP实在是太复杂了 (转载)
python 也是内容巨大的东西,包含大量的语法糖和复杂语法,还有动态语言天然的灵活性。运算符重载,lambda 函数,元类,基于 yield 的简单生成器协程,基于 async await 的无栈协程,反射,装饰器,甚至还有利用自定义源代码编码做元编程的奇技淫巧,这些东西并不比 c++ 少。你觉得复杂吗?
现代的 c#、java 都是语言特性一大堆特别复杂的,这个趋势在很多地方有。
当然,go 和 c 是在设计上就追求简单的,语法功能少以至于有时会觉得简陋。
【 在 GoGoRoger 的大作中提到: 】
: 别的我用的不多,Python Go用过,很简洁。cpp不能和其他语言比,一些内存管理了,指针了,给程序员的心智负担已经很重了。
: 【 在 zerg136 的大作中提到: 】
: : 你说语法糖会弄的复杂这个不科学吧
: ...................
--
FROM 114.249.199.*
标准委员会里大量大公司(微软,google,苹果等等)的代表,其实都是真实需求。
我见过大公司积年项目基础库代码深度使用c++复杂模板编程的,但在一般外界就不常用相关特性。这个不奇怪。
【 在 hothail 的大作中提到: 】
: 特性,内容数量是一方面。还有一方面要看加这些东西的目的是什么。
:
: 在cpp身上看不出来,这些事情要解决哪些实际的场景,感觉更多是“别人有,我也要有
: ...................
--
FROM 124.64.16.*
我觉得主要是c++追求的目标本身就很难,束缚手脚的地方又太多。
追求零开销抽象,把尽量多的东西留到编译期,这种目标本来就会带来很大的复杂度。其他语言经常会牺牲抽象程度,或者牺牲零开销,难度或者难受程度就不一样。rust 也是这种目标诉求,所以也不简单。
缚手脚的地方,比如旧版本有一些不合理的设计但又要坚持旧版本兼容,委员会扯皮,也肯定快不起来。rust 如果是 c++ 这么老的语言也会慢很多。
也有不少问题,但往往要追溯到很早,初始设计上的问题后面很难改了。模板在c++98时代原本是单纯的想做成 java 泛型那样的简单类型参数的,但后来被发现有更多做元编程的可能时,其实是一种过度使用。比如很多模板元编程可以被后面的 constexpr 以很简单的方式实现,更复杂的代码生成也可能需要的是更强大一些的卫生宏(lisp 或 rust 那样)。
【 在 hothail 的大作中提到: 】
: 特性,内容数量是一方面。还有一方面要看加这些东西的目的是什么。
:
: 在cpp身上看不出来,这些事情要解决哪些实际的场景,感觉更多是“别人有,我也要有
: ...................
--
FROM 124.64.16.*