Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Javascript变量类型预测的参考资料?_Javascript_Static Analysis_Dynamic Typing_Dynamic Analysis - Fatal编程技术网

关于Javascript变量类型预测的参考资料?

关于Javascript变量类型预测的参考资料?,javascript,static-analysis,dynamic-typing,dynamic-analysis,Javascript,Static Analysis,Dynamic Typing,Dynamic Analysis,引用这篇学术论文的话: IntelliSense实际上是基于变量类型的知识。 因此,描述变量的符号必须包含其类型,如果 它是已知的,而且它是否可以用动态语言解决 一个变量可以在系统的不同部分携带不同类型的实例 在不同的程序执行过程中,代码和代码会发生变化。变量也可以 可以动态启动,并且只能在运行时知道其类型。 因此,符号应包含一些可能类型的列表 在语义分析中解决。但总的来说,不可能 用动态语言明确解决偶数单个程序 执行也无济于事。 我在哪里可以找到更多关于这方面的资料,我特别感兴趣的是上面引用的

引用这篇学术论文的话:

IntelliSense实际上是基于变量类型的知识。 因此,描述变量的符号必须包含其类型,如果 它是已知的,而且它是否可以用动态语言解决 一个变量可以在系统的不同部分携带不同类型的实例 在不同的程序执行过程中,代码和代码会发生变化。变量也可以 可以动态启动,并且只能在运行时知道其类型。 因此,符号应包含一些可能类型的列表 在语义分析中解决。但总的来说,不可能 用动态语言明确解决偶数单个程序 执行也无济于事。


我在哪里可以找到更多关于这方面的资料,我特别感兴趣的是上面引用的强调语句,最终是一些关于代码静态分析预测率的统计数据。

这基本上就是著名的图灵不可计算性结果:一般来说,您无法知道计算(或作为类型生成)的结果

虽然这在总体上是正确的,但它没有说明具体情况。稍微想一想就可以让您相信,如果程序员不知道某个标识符的类型是什么,他们可能无法编写任何使用它的代码。因此,最初的程序员知道(除非他们编写了错误代码)。但他们通过对系统的其他部分做出假设,然后实施这些假设(通常在其他地方)来了解情况

静态分析器不知道程序员做出了什么样的假设,所以它不能那么精确。但在许多特定情况下,静态分析可以推断出类型。问题是,它有多少代码,它能用深层语义解释代码吗?深层语义是代码背后的语言的基础

我总是被“分析仪不可能(像人类一样)好”的概念所困扰。如果一个分析仪能够获得与人类相同的信息,那么它至少应该和人类一样好,而且通常更好;它可以以人们无法做到的方式跟踪互动。更重要的是,如果静态分析器无法访问代码背后的关键假设,那么您如何期望其他程序员处理该代码?存在什么样的proiri理由坚持他们知道某些代码块中使用的所有背景/假设


因此,我认为静态分析器的许多局限性,甚至应用于动态语言,都是由于我们不愿意或无法写下我们在编写代码时使用的假设造成的。(在那之后,就出现了设计一个适当强度的分析仪的能量问题)。

这是一个相当理论化的问题,你可以试试计算机科学SE网站。虽然答案是正确的,这从根本上说是无法解决的,但这并不意味着没有研究在某些情况下很好的启发式方法。@SAJ14SAJ这一点你是对的,但这一切都源于我试图使用javascript程序的AST(Esprima)跟踪变量类型的事实,看到它总是有很多特殊的情况,而且很多次都是错误的类型。在我的研究中,我从实践的角度出发。我理解,但在这个领域,理论和实践之间的面纱很薄。我的猜测是,学术界将拥有最好的研究成果。不幸的是,它可能会通过Scheme、Haskel或LISP中的示例加以说明。:-)我无法提供更多——这与我的专业领域相去甚远。