- 主题:CPP实在是太复杂了 (转载)
语法糖不正是需要的吗?
【 在 GoGoRoger 的大作中提到: 】
: 【 以下文字转载自 CPlusPlus 讨论区 】
: 发信人: GoGoRoger (逝者如斯夫), 信区: CPlusPlus
: 标 题: CPP实在是太复杂了
: 发信站: 水木社区 (Thu Nov 4 16:26:02 2021), 站内
:
: 这两天比较闲,就看了
: ..................
发自「今日水木 on iOS」
--
FROM 39.144.103.*
经典cpp码农的竞争对手是transpiler生成的cpp代码
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 那你用经典 cpp 就行了。早点转行干 js 比较有前途。
--
FROM 27.91.71.*
听说 c 语言手册,也要厚厚一本。里面不知道讲的啥。但是看 tinyc,源代码好像不是很多。
【 在 chaobill (若我离去,后会无期) 的大作中提到: 】
: C 语言如果没有宏的话就够简单了
--
FROM 140.224.35.*
python 也是内容巨大的东西,包含大量的语法糖和复杂语法,还有动态语言天然的灵活性。运算符重载,lambda 函数,元类,基于 yield 的简单生成器协程,基于 async await 的无栈协程,反射,装饰器,甚至还有利用自定义源代码编码做元编程的奇技淫巧,这些东西并不比 c++ 少。你觉得复杂吗?
现代的 c#、java 都是语言特性一大堆特别复杂的,这个趋势在很多地方有。
当然,go 和 c 是在设计上就追求简单的,语法功能少以至于有时会觉得简陋。
【 在 GoGoRoger 的大作中提到: 】
: 别的我用的不多,Python Go用过,很简洁。cpp不能和其他语言比,一些内存管理了,指针了,给程序员的心智负担已经很重了。
: 【 在 zerg136 的大作中提到: 】
: : 你说语法糖会弄的复杂这个不科学吧
: ...................
--
FROM 114.249.199.*
特性,内容数量是一方面。还有一方面要看加这些东西的目的是什么。
在cpp身上看不出来,这些事情要解决哪些实际的场景,感觉更多是“别人有,我也要有
”,忘了自己是谁。
真希望cpp不要把自己玩死了
【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】
: python 也是内容巨大的东西,包含大量的语法糖和复杂语法,还有动态语言天然的灵活性。运算符重载,lambda 函数,元类,基于 yield 的简单生成器协程,基于 async await 的无栈协程,反射,装饰器,甚至还有利用自定义源代码编码做元编程的奇技淫巧,这些东西并不比 c++
: 现代的 c#、java 都是语言特性一大堆特别复杂的,这个趋势在很多地方有。
: 当然,go 和 c 是在设计上就追求简单的,语法功能少以至于有时会觉得简陋。
: ...................
--
FROM 111.206.87.*
标准委员会里大量大公司(微软,google,苹果等等)的代表,其实都是真实需求。
我见过大公司积年项目基础库代码深度使用c++复杂模板编程的,但在一般外界就不常用相关特性。这个不奇怪。
【 在 hothail 的大作中提到: 】
: 特性,内容数量是一方面。还有一方面要看加这些东西的目的是什么。
:
: 在cpp身上看不出来,这些事情要解决哪些实际的场景,感觉更多是“别人有,我也要有
: ...................
--
FROM 124.64.16.*
我觉得主要是c++追求的目标本身就很难,束缚手脚的地方又太多。
追求零开销抽象,把尽量多的东西留到编译期,这种目标本来就会带来很大的复杂度。其他语言经常会牺牲抽象程度,或者牺牲零开销,难度或者难受程度就不一样。rust 也是这种目标诉求,所以也不简单。
缚手脚的地方,比如旧版本有一些不合理的设计但又要坚持旧版本兼容,委员会扯皮,也肯定快不起来。rust 如果是 c++ 这么老的语言也会慢很多。
也有不少问题,但往往要追溯到很早,初始设计上的问题后面很难改了。模板在c++98时代原本是单纯的想做成 java 泛型那样的简单类型参数的,但后来被发现有更多做元编程的可能时,其实是一种过度使用。比如很多模板元编程可以被后面的 constexpr 以很简单的方式实现,更复杂的代码生成也可能需要的是更强大一些的卫生宏(lisp 或 rust 那样)。
【 在 hothail 的大作中提到: 】
: 特性,内容数量是一方面。还有一方面要看加这些东西的目的是什么。
:
: 在cpp身上看不出来,这些事情要解决哪些实际的场景,感觉更多是“别人有,我也要有
: ...................
--
FROM 124.64.16.*
cpp模板那块搞得确实是不必要的过于复杂,走邪路了
正路是编译期代码生成,编译器暴露语法树等,然后二次编译。可以极大降低复杂度
【 在 milksea 的大作中提到: 】
: 我觉得主要是c++追求的目标本身就很难,束缚手脚的地方又太多。
: 追求零开销抽象,把尽量多的东西留到编译期,这种目标本来就会带来很大的复杂度。其他语言经常会牺牲抽象程度,或者牺牲零开销,难度或者难受程度就不一样。rust 也是这种目标诉求,所以也不简单。
: 缚手脚的地方,比如旧版本有一些不合理的设计但又要坚持旧版本兼容,委员会扯皮,也肯定快不起来。rust 如果是 c++ 这么老的语言也会慢很多。
: ...................
--
FROM 123.116.196.*
go 的确是追求简单,导致的问题是,一旦遇到底层的设计的坑,基本上除了等 google 修(基本没机会),就只有用其它语言重写这一条路了
【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】
: python 也是内容巨大的东西,包含大量的语法糖和复杂语法,还有动态语言天然的灵活性。运算符重载,lambda 函数,元类,基于 yield 的简单生成器协程,基于 async await 的无栈协程,反射,装饰器,甚至还有利用自定义源代码编码做元编程的奇技淫巧,这些东西并不比 c++
: 现代的 c#、java 都是语言特性一大堆特别复杂的,这个趋势在很多地方有。
: 当然,go 和 c 是在设计上就追求简单的,语法功能少以至于有时会觉得简陋。
: ...................
--
修改:eGust FROM 203.211.110.*
FROM 203.211.110.*
你这想法是换了复杂的定义啊
一般说一个东西复杂指的是使用复杂,至于制造原理复杂与否很少有人关心
python使用比C++简单是没有争议的
C++最大的黑点不在于简陋,而是某些奇技淫巧因为设计缺陷而做不了,同时代的javascript就没这个毛病
【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】
: python 也是内容巨大的东西,包含大量的语法糖和复杂语法,还有动态语言天然的灵活性。运算符重载,lambda 函数,元类,基于 yield 的简单生成器协程,基于 async await 的无栈协程,反射,装饰器,甚至还有利用自定义源代码编码做元编程的奇技淫巧,这些东西并不比 c++
: 现代的 c#、java 都是语言特性一大堆特别复杂的,这个趋势在很多地方有。
: 当然,go 和 c 是在设计上就追求简单的,语法功能少以至于有时会觉得简陋。
: ...................
--
FROM 27.91.71.*