javascript - 有关 Javascript 变量类型预测的资源?

标签 javascript static-analysis dynamic-typing dynamic-analysis

引用这篇学术论文:Syntactic and Semantic Prediction in Dynamic Languages :

IntelliSense is practically based on the knowledge of variables type. Hence the symbols describing variables have to contain their type if it's known and if it could be resolved Moreover in dynamic languages one variable can carry different type instance in different parts of the code and in different program executions. Also the variable can be initiated dynamically, and its type can be known only at runtime. Therefore the symbol should contain some list of possible types resolved within semantic analysis. But in general it cannot be resolved definitely in dynamic languages; even single program execution won't help.

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

最佳答案

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

虽然这在一般情况下是正确的,但并没有说明具体情况。稍加思考就会让您相信,如果程序员不知道某个标识符的类型是什么,他们可能无法编写任何使用它的代码。所以原始编码人员知道(除非他们编写了错误代码)。但是他们通过对系统的其余部分做出假设,然后执行这些假设(通常在其他地方)来知道。

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

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

所以我认为静态分析器的很多局限性,甚至应用于动态语言,都是由于我们不愿意或无法写下我们在编写代码时使用的假设造成的。 (在那之后,还有设计一个合适的强大分析仪的能量问题)。

关于javascript - 有关 Javascript 变量类型预测的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13496480/

相关文章:

algorithm - 动态类型语言中的快速属性查找?

javascript - Google map API 标记点击事件未触发

c++ - 用于发现 64 位可移植性问题的静态代码分析工具?

c++ - 在 C/C++ 代码中查找指针是否静态等同于停止问题?

c++ - 如何添加不同类型的属性图?

java - 如何处理 Python ~ 静态类型?

javascript - 将 HTML 表格导出到 Excel 时无法将数据加载到 excel 文件中

javascript - 在客户端(Angular JS)应用程序中渲染刮刀的元标记

javascript - 单击按钮时如何打开模态框

erlang - 在 Elixir 类型规范的类型定义中指定字符串值