如Sebesta的"编程语言概念"一书所述:
为什么静态变量不支持递归?这是因为如果发生递归会浪费大量内存,因为它就是static
并且这意味着在整个程序终止之前它不会从内存中释放出来吗?
在阅读一些与GPU计算相关的论文时,我坚持理解这两个术语GPU上下文,而GPU硬件频道下面简要提到他们,但我无法理解他们的意思,
命令:GPU使用体系结构特定命令进行操作.每个GPU上下文都分配有一个FIFO队列,CPU上运行的程序将提交命令.只有当GPU本身调度相应的命令时,才会触发GPU上的计算和数据传输.
通道:为每个GPU上下文分配一个GPU硬件通道,在其中管理命令调度.Fermi不允许多个通道同时访问同一GPU功能单元,但允许它们共存,在硬件中自动切换.
对此有一个明确而简单的解释.
我正在从Aho的编译器构造中读取有限自动机和语法,并且我长期坚持使用这种语法.我对如何描述它没有明确的认识:
考虑以下语法:
S - >(L)| a L - > L,S | 小号
请注意,括号和逗号实际上是该语言的终端,并出现在此语法接受的句子中.尝试描述该语法生成的语言.这个语法是不明确的?
我关注的是:这种语法生成的语言能否被描述为正则表达式?我对如何做到这一点很困惑.有帮助吗?
以下是本书的直接引用(K&R,第2版,第35页):
"至少内部名称的前31个字符是重要的.对于函数名称和外部变量,数字可能小于31,因为外部名称可能被汇编程序和加载程序使用,语言无法控制.对于外部名称,该标准仅保证6个字符和一个案例."
在C99中,其内部名称没有长度限制,但只有前63个保证是重要的(§5.2.4.1翻译限制).
我的问题是为什么这些限制特别是31或63?为什么这个号码具体?为什么不是19,24或任何其他数字?如果这是一个实施问题,是否可以从31或63获益?