gpt4 book ai didi

parsing - 静态与动态类型是否与使编写 IDE 变得更加困难有关?

转载 作者:行者123 更新时间:2023-12-04 23:26:00 27 4
gpt4 key购买 nike

编辑:只是为了澄清,我不打算建议为动态语言编写 IDE 可能是不可能的。/编辑

在我的具体经验中,我正在考虑多年来关于 JavaScript 的对话/评论,其中很多都在堆栈上,但时不时有人会说,JS 没有像样的 IDE 的原因是因为动态类型也是如此难做。

我在为 JS 编写解析器方面考虑过这一点,但我不明白这些类型与自动完成等功能或直接进入东西的定义有什么关系。如果有的话,我可以想象通过动态语言中传递的参数来确定范围和可用性会更容易建立,而无需担心类型检查。特别是在 JS 中,在大多数情况下,规则实际上非常简单。

直到我开始听到人们将动态类型当作技术阻塞问题来引用之前,我只是假设在大多数动态脚本语言中,您可以从控制台运行,减少冗长并且在实时执行环境中易于测试使调试更容易,从而减少对 IDE 的需求。

那么它是哪个?关于静态类型的一些东西可以更容易地解析代码以建立范围/可用性,或者我对减少需求的看法是否正确?

最佳答案

IDE 是用动态语言发明的。重构是在动态语言中发明的。自动重构工具是用动态语言发明的。

当静态语言甚至没有图形时,动态语言具有图形 IDE,内置支持通过网络进行结对编程。或 IDE。或者网络支持。

例如,Smalltalk 和 Lisp IDE 仍然领先于 Java 或 C#。事实上,Eclipse 曾经是一个 Smalltalk IDE!

IDE 的质量取决于为使其良好而付出的努力。 Smalltalk 和 Lisp 社区花费了数十年的研究、数十名博士和大量资金来构建强大的 IDE。 Java 社区也是如此。 (实际上,他们花了一大笔钱购买 Smalltalk 公司……)

JavaScript 社区没有。这就是全部的区别。

有些事情需要在两者之间采取不同的方法。以 IntelliSense/Content Assist/Autocompletion 为例。静态地尝试确定动态语言中哪些标识符在范围内基本上等同于解决停机问题,因此您不能这样做。你的 IDE 也需要是动态的,那么它不需要做静态分析,它可以只查看运行代码并查看范围内的标识符。

关于parsing - 静态与动态类型是否与使编写 IDE 变得更加困难有关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12868772/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com