我第一次试图写一个Bash完成,而我对有两种解引用Bash数组( ${array[@]}和${array[*]} )的方法有些困惑。 下面是相关的代码块(顺便说一句,它可以工作,但我想更好地理解它): _switch() { local cur perls local ROOT=${PERLBREW_ROOT:-$HOME/perl5/perlbrew} COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} perls=($ROOT/perls/perl-*) # remove all but the final part of the name perls=(${perls[*]##*/}) COMPREPLY=( $( compgen -W "${perls[*]} /usr/bin/perl" — ${cur} ) ) } Bash的文档说 : 数组中的任何元素都可以使用$ {name [subscript]}引用。 大括号是为了避免与shell的文件名扩展操作符冲突。 如果下标是“@”或“*”,则该单词将扩展为数组名称的所有成员。 这些下标仅在双引号出现在单引号内时才有所不同。 如果单词是双引号,则$ {name [*]}将扩展为单个单词,每个数组成员的值由IFSvariables的第一个字符分隔,$ {name [@]}扩展每个名称元素到一个单独的词。 现在我想我明白了, compgen -W期望一个包含可能替代compgen -W的string,但在这种情况下,我不明白“$ {name [@]}将每个名称元素扩展为单独的单词”的意思。 […]
在阅读关于经常性neural network的图灵完备性的一些论文时(例如:用neural network的图灵计算能力,Hava T. Siegelmann和Eduardo D. Sontag,1991),我感觉到那里给出的证据并不是真的实际的。 例如,参考论文需要一个neural network,其神经元活动必须具有无限的精确性(以可靠地表示任何有理数)。 其他certificate需要无限大小的neural network。 显然,这不是那么实际。 但是现在我开始想知道是否完全有理由要求图灵的完整性。 严格的定义是,目前没有计算机系统是图灵完备的,因为它们都不能模拟无限大的磁带。 有趣的是,如果编程语言规范完成或者没有完成,那么编程语言规范就会将其最常开放。 这一切都归结为是否能够分配更多的内存以及函数调用堆栈大小是否无限。 大多数规范没有真正指定这个。 当然,这里所有可用的实现都是有限的,所以编程语言的所有实际实现都不是图灵完整的。 所以,你可以说,所有的计算机系统和有限状态机一样强大,而不是更多。 这就引出了一个问题: 图灵完全可以说有多有用? 回到neural network:对于neural network(包括我们自己的大脑)的任何实际实现,它们将不能表示无限数量的状态,即通过对图灵完备性的严格定义,它们不是图灵完备的。 那么问题是否neural network是图灵完全有意义呢? 问题是否像有限状态机一样强大已经早得多了(1954年由明斯基回答,当然答案是肯定的),似乎也更容易回答。 也就是说,至less在理论上,这已经certificate它们和任何一台计算机一样强大。 其他一些问题更多的是我真正想知道的: 有什么理论术语可以对计算机的计算能力做更具体的说明吗? (由于其有限的内存空间) 如何比较neural network的实际实现与计算机的计算能力? (图灵完备性如上所述是没有用的。)
几乎所有使用的编程语言都是图灵完成的 ,虽然这提供了表示任何可计算algorithm的语言,但它也带有一套自己的问题 。 看到我写的所有algorithm都是想停下来的,我希望能用一种能保证停止的语言来表示它们。 用于匹配string和有限状态机的 正则expression式在使用时会被使用,但是我想知道是否有一个更一般,广泛的语言不是图灵完整的? 编辑:我应该澄清,通过'通用'我不一定要能够写所有停止algorithm的语言(我不认为这样的语言会存在),但我怀疑有共同的线程在停止certificate,可以推广到产生一种语言,其中所有algorithm都保证停止。 还有另一种方法来解决这个问题 – 消除理论上无限的记忆的需要。 一旦限制了机器的内存容量,机器所处的状态数就是有限且可数的,因此可以确定algorithm是否会停止(不允许机器进入之前的状态)。
我不好意思问这个,我觉得很愚蠢。 我有一个应用程序,我想发送一个testing在他们的机器上的testing点,但我不知道如何让Xcode产生一个.app文件发送给他们。 帮帮我?
在bash的后台运行一个进程相当简单。 $ echo "Hello I'm a background task" & [1] 2076 Hello I'm a background task [1]+ Done echo "Hello I'm a background task" 但是输出是冗长的。 在第一行打印后台任务的作业ID和进程ID,然后输出命令,最后得到作业ID,状态和触发作业的命令。 有没有一种方法来抑制运行后台任务的输出,使得输出看起来和最后没有&符号一样? 即: $ echo "Hello I'm a background task" & Hello I'm a background task 我要问的原因是我想运行一个后台进程作为tab-completion命令的一部分,所以这个命令的输出必须是不中断的。
我正在研究垃圾收集器如何在C#中工作。 我对使用Destructor , Dispose和Finalize方法感到困惑。 根据我的研究和理解,在我的类中有一个Destructor方法将告诉垃圾收集器以析构函数方法中提到的方式执行垃圾收集,这种方法不能在类的实例上显式调用。 Dispose方法是为了让用户控制垃圾收集。 Finalize方法释放类使用的资源,但不释放对象本身。 我不确定我是否正确地理解了这一点。 请澄清疑惑。 欢迎任何进一步的链接或指南。
我有一个计时器的启animation面。 我的问题是,在我finish()我的活动之前,我需要检查下一个活动已经开始,因为系统对话框popup,我只想finish() ; 一旦用户从对话框中select了一个选项? 我知道如何看待你的活动是否在前台有很多问题,但我不知道这是否允许在活动之上的对话框。 这是问题,红色是我在后台进行的活动,而对话是在前台: 编辑:我试过只是不使用finish()但然后我的活动可以回到我试图避免的应用程序的堆栈。