c*******v 发帖数: 2599 | 1 我並無cpp之release經驗。生產實際不講。
以單人寫程序研究下的角度而言。cpp那template非常值得研究。
我猜測:
(1)其可以方便的進行symbolic computation。例如對一個多元多項式求符號積分。
微分。化簡多項式。分部積分法等等。
(2)cimpiler可用來做相當複雜的計算。用模板可以寫出game of life之類的東西。
最有意思的是,這些能力未必是其設計之初衷。 |
p***o 发帖数: 1252 | 2 SFINAE这种奇技淫巧都给人琢磨出来,只能说是过头了。
【在 c*******v 的大作中提到】 : 我並無cpp之release經驗。生產實際不講。 : 以單人寫程序研究下的角度而言。cpp那template非常值得研究。 : 我猜測: : (1)其可以方便的進行symbolic computation。例如對一個多元多項式求符號積分。 : 微分。化簡多項式。分部積分法等等。 : (2)cimpiler可用來做相當複雜的計算。用模板可以寫出game of life之類的東西。 : 最有意思的是,這些能力未必是其設計之初衷。
|
g****t 发帖数: 31659 | 3 (1)已经有人研究过了。
Given a positive integer N and an algebraic function of multiple variables,
the compiler generates executable code for the Nth partial derivatives of
the function.
https://arxiv.org/abs/1705.01729
能行此事者,除了专用数学软件之外,
其他的Functional programming language也许更方便。但没有Cpp 经历之实战测试多。
: SFINAE这种奇技淫巧都给人琢磨出来,只能说是过头了。
【在 p***o 的大作中提到】 : SFINAE这种奇技淫巧都给人琢磨出来,只能说是过头了。
|
g****t 发帖数: 31659 | 4 https://www.iue.tuwien.ac.at/pdf/ib_2010/Rupp_ISSAC.pdf
模版算符号积分。
: (1)已经有人研究过了。
: Given a positive integer N and an algebraic function of multiple
variables,
: the compiler generates executable code for the Nth partial derivatives
of
: the function.
: https://arxiv.org/abs/1705.01729
: 能行此事者,除了专用数学软件之外,
: 其他的Functional programming language也许更方便。但没有Cpp 经历之实战
测试多。
【在 g****t 的大作中提到】 : (1)已经有人研究过了。 : Given a positive integer N and an algebraic function of multiple variables, : the compiler generates executable code for the Nth partial derivatives of : the function. : https://arxiv.org/abs/1705.01729 : 能行此事者,除了专用数学软件之外, : 其他的Functional programming language也许更方便。但没有Cpp 经历之实战测试多。 : : : SFINAE这种奇技淫巧都给人琢磨出来,只能说是过头了。 :
|
g****t 发帖数: 31659 | 5 研究ocaml, F#之类functional programming者,似乎还不如练下Cpp 模版实用。
: https://www.iue.tuwien.ac.at/pdf/ib_2010/Rupp_ISSAC.pdf
: 模版算符号积分。
: variables,
: of
: 测试多。
【在 g****t 的大作中提到】 : https://www.iue.tuwien.ac.at/pdf/ib_2010/Rupp_ISSAC.pdf : 模版算符号积分。 : : : (1)已经有人研究过了。 : : Given a positive integer N and an algebraic function of multiple : variables, : : the compiler generates executable code for the Nth partial derivatives : of : : the function. : : https://arxiv.org/abs/1705.01729
|
C*****l 发帖数: 1 | 6 关键是class template可以生成新的type,感觉等价于lambda演算,lambda numerals
那套东西都可以用template搞出来。
基础只有1个:compiler的type match,template specialization
【在 c*******v 的大作中提到】 : 我並無cpp之release經驗。生產實際不講。 : 以單人寫程序研究下的角度而言。cpp那template非常值得研究。 : 我猜測: : (1)其可以方便的進行symbolic computation。例如對一個多元多項式求符號積分。 : 微分。化簡多項式。分部積分法等等。 : (2)cimpiler可用來做相當複雜的計算。用模板可以寫出game of life之類的東西。 : 最有意思的是,這些能力未必是其設計之初衷。
|
g****t 发帖数: 31659 | 7 我猜:如果一个人几样皆熟悉。他
可以把Haskell ,F#什么的不费力的转成Cpp template。
当然,这种代码估计没法看也没法调试。
但这可能也表明,有些CS学者会对cpp会有持久的兴趣。
Ken Thompson 基本上说CPP是heap of garbage, 原因是BS谁的意见都听,不取舍。什
么都加进去。但是... 这么干的后果
...不是显然的。
: 关键是class template可以生成新的type,感觉等价于lambda演算,lambda
numerals
: 那套东西都可以用template搞出来。
: 基础只有1个:compiler的type match,template specialization
【在 C*****l 的大作中提到】 : 关键是class template可以生成新的type,感觉等价于lambda演算,lambda numerals : 那套东西都可以用template搞出来。 : 基础只有1个:compiler的type match,template specialization
|
n******t 发帖数: 4406 | 8 呵呵,你可以用是mathematica能算的中等难度的符号计算让这个模版库算一下。
这种反正一个demo不上税的paper,爱怎么写怎么写了。
一般来说compile time来作serious的计算纯粹行为艺术,这个道理稍微有点sense就能
搞明白的把。
,
多。
【在 g****t 的大作中提到】 : (1)已经有人研究过了。 : Given a positive integer N and an algebraic function of multiple variables, : the compiler generates executable code for the Nth partial derivatives of : the function. : https://arxiv.org/abs/1705.01729 : 能行此事者,除了专用数学软件之外, : 其他的Functional programming language也许更方便。但没有Cpp 经历之实战测试多。 : : : SFINAE这种奇技淫巧都给人琢磨出来,只能说是过头了。 :
|
C*****l 发帖数: 1 | 9 c++的这个template meta programming对比其他语言比如python来说,感觉是更“自组
织”一点,不那么依靠hardcode。
【在 n******t 的大作中提到】 : 呵呵,你可以用是mathematica能算的中等难度的符号计算让这个模版库算一下。 : 这种反正一个demo不上税的paper,爱怎么写怎么写了。 : 一般来说compile time来作serious的计算纯粹行为艺术,这个道理稍微有点sense就能 : 搞明白的把。 : : , : 多。
|
g****t 发帖数: 31659 | 10 更具体一些的thoughts:
[1]
例如你要写一个尺规定义的平面几何的theorem prover,那么Cpp 20
可能是很好的选择。——相比于haskell 等等压根没有装机量,维护与测试
成谜的编译系统而言。
有工程能力的人应可以越过Cpp 20语法等不便。但是装机量以及有经验之社区人数是个
人无法跨越的。
[2]
Mathematica确实可能是最强大的语言。然而wolfram 之人品让其吸引力基本降低到负
数。——你写个文章,假如引用了他找人证明了的101自动机,说不定哪天
其问你收专利费。你用了他的程序,其运行结果说不定他要收版权。
我印象里此人赞助过一个专门搞专利官司的公司。我当初找工作还phone interview过。
[3]
第一层的语言:c,Cpp, java, C sharp, python, js
之地位皆不可动摇。于其中能写theorem prover的还就是Cpp 之模版。而且其还不停的
往里添加东西。于top 1 tier的这几个系统里面,Cpp还真是面向研究(而不是实用)
的特点最鲜明。
[就不提各种functional programming 的高远之论。只说定理证明器这一条。谁比谁更
functional那都是虚的。]
: c 的这个template meta programming对比其他语言比如python来说,感
觉是更
“自组
: 织”一点,不那么依靠hardcode。
【在 C*****l 的大作中提到】 : c++的这个template meta programming对比其他语言比如python来说,感觉是更“自组 : 织”一点,不那么依靠hardcode。
|
C*****l 发帖数: 1 | 11 c++的TMP更像是一种emergent phenomenon,它赖以成立的条件并不是直接target图灵
完备。TMP跟compile time calculation本质上还不是一回事情。 compile time
calculation可以通过compiler的一些特殊功能来实现,比如compiler完全可以support
一套syntax,让人直接写compile time的函数,就像constexpr那样。这样实现就比较
trivial。 TMP也可以实现compile time calculation,但是用了完全不同的办法。
【在 g****t 的大作中提到】 : 更具体一些的thoughts: : [1] : 例如你要写一个尺规定义的平面几何的theorem prover,那么Cpp 20 : 可能是很好的选择。——相比于haskell 等等压根没有装机量,维护与测试 : 成谜的编译系统而言。 : 有工程能力的人应可以越过Cpp 20语法等不便。但是装机量以及有经验之社区人数是个 : 人无法跨越的。 : [2] : Mathematica确实可能是最强大的语言。然而wolfram 之人品让其吸引力基本降低到负 : 数。——你写个文章,假如引用了他找人证明了的101自动机,说不定哪天
|
T********i 发帖数: 2416 | 12 没啥可研究的。cpp模板是图灵完备的。已经理论证明了。
TypeScript的type也是。
其实图灵完备挺麻烦的。因为能造成编译器不停机。哈哈哈。
TypeScript解决方案异常简单。如果一个类型“太复杂”,编译器报错。根本不管类型
解析是否停机。焊死的最多拐弯50次。
这些图灵完备不是By design,而是凑巧就赶上了。
我做物联网的操作系统。对图灵完备这个问题非常敏感。一切都开始于别人做的东西都
图灵不完备。 |
g****t 发帖数: 31659 | 13 https://devblogs.microsoft.com/cppblog/c20-concepts-are-here-in-visual-
studio-2019-version-16-3/
我认为,多数程序员都同意,目前只有以下几个语言系统是第一层次语言:
C,Cpp, C sharp, Java, python, JS
(也许加上aapl专有的objective C swift。)
Meta programming 啥的方向其实是 Cpp独有的努力方向,
且也获得了一定之认可。
https://devblogs.microsoft.com/cppblog/c20-concepts-are-here-in-visual-
studio-2019-version-16-3/
Cpp 23正在路上,据我看到的一点点资料。此方向还在加强。
以theorem prover而论,每年也有一些新的研究。但是都非常小众。例如以较新的LEAN
来讲,谁愿意学呢?
Cpp现有用户群体强大,这是个实际的优势。
: c 的TMP更像是一种emergent phenomenon,它赖以成立的条件并不是直接
target图灵
: 完备。TMP跟compile time calculation本质上还不是一回事情。
compile time
: calculation可以通过compiler的一些特殊功能来实现,比如compiler完
全可以
support
: 一套syntax,让人直接写compile time的函数,就像constexpr那样。这
样实现
就比较
: trivial。 TMP也可以实现compile time calculation,但是用了完全不
同的办
法。
【在 C*****l 的大作中提到】 : c++的TMP更像是一种emergent phenomenon,它赖以成立的条件并不是直接target图灵 : 完备。TMP跟compile time calculation本质上还不是一回事情。 compile time : calculation可以通过compiler的一些特殊功能来实现,比如compiler完全可以support : 一套syntax,让人直接写compile time的函数,就像constexpr那样。这样实现就比较 : trivial。 TMP也可以实现compile time calculation,但是用了完全不同的办法。
|
r*g 发帖数: 3159 | 14 编译时期进行的运算,不知有什么劣势, stack的深度如何? CPU利用的如何?
【在 g****t 的大作中提到】 : https://devblogs.microsoft.com/cppblog/c20-concepts-are-here-in-visual- : studio-2019-version-16-3/ : 我认为,多数程序员都同意,目前只有以下几个语言系统是第一层次语言: : C,Cpp, C sharp, Java, python, JS : (也许加上aapl专有的objective C swift。) : Meta programming 啥的方向其实是 Cpp独有的努力方向, : 且也获得了一定之认可。 : https://devblogs.microsoft.com/cppblog/c20-concepts-are-here-in-visual- : studio-2019-version-16-3/ : Cpp 23正在路上,据我看到的一点点资料。此方向还在加强。
|
c*******v 发帖数: 2599 | 15 See:
[1]
Annex B recommends lower bounds on the capacity of conforming
implementations.
----cpp standard
[2]
https://docs.microsoft.com/en-us/cpp/cpp/compiler-limits?view=msvc-160
【在 r*g 的大作中提到】 : 编译时期进行的运算,不知有什么劣势, stack的深度如何? CPU利用的如何?
|
C*****l 发帖数: 1 | 16 BS好像说过,有很多限制,不能搞db,必须一个个translation unit独立,。。。,外
界依赖减小到最少。
【在 r*g 的大作中提到】 : 编译时期进行的运算,不知有什么劣势, stack的深度如何? CPU利用的如何?
|