9

为什么编译器不能在我键入代码时编译我的代码?

从用户的角度来看,它可以像今天的语法着色一样流畅地工作。如果您停止输入足够长的时间(可能是几秒钟),则编译(未链接)将完成,并且将使用语法着色之类的东西来识别代码错误。

这不像我的 3GHz 四核怪物计算机真的忙于做其他事情。为什么不让它一直编译呢?

4

7 回答 7

6

这正是 Visual Studio 中的 VB.NET 代码编辑器所做的。

优点是 IntelliSense 比 C# 更准确。缺点是它浪费了大量的处理器时间和内存。:-(

于 2010-09-14T21:19:05.693 回答
5

它可以。或者,为了更有用,这个问题的答案取决于

  1. 什么语言
  2. 您需要什么程度的优化
  3. 如果你暂时输入一些愚蠢的东西,编译器会编译并将结果注入到你正在调试的二进制文件中,然后你才能修复它,你会有多恼火。

一些非常强大的优化在运行中会非常混乱。另一方面,基本编译,如果不需要担心为 X86 指令分配偏移量?当然。

于 2010-09-14T21:18:38.450 回答
3

某些 IDE 会在输入代码时编译(或至少检查语法和某些语义)代码。例如,我认为 Eclipse 可以做到。我认为 Visual Basic 6(可能还有更早的版本)做到了这一点。

于 2010-09-14T21:18:19.470 回答
3

请注意您使用的是什么 IDE,但这就是 VB.NET 的工作方式。

于 2010-09-14T21:18:51.403 回答
2

我并不精通编译器或将代码转换为 IL 和机器语言的方法等。但即便如此,我仍然可以看到通过一个流控制语句更改我的程序可以完全使编译器完成的工作无效到那时。通过添加或更改单行代码,程序的整个部分可能会变得过时、未使用或以其他方式需要重新评估。

我想我宁愿为distributed.net 或SETI @ Home 保存这些CPU 周期,而不是在我更改代码时不断地重新编译我的代码。

于 2010-09-14T21:20:56.703 回答
0

这完全取决于语言。

具有上下文无关语法的语言“可以”在键入后预编译表达式。但是,这种语言项目的编译总是很快的,为什么在代码准备好后可以快速批处理工作时使用 cpu 呢?

其他语言,比如臭名昭著的 C++,是依赖于上下文的。在大多数情况下,编译器在没有读取表达式之前的整个代码的情况下无法理解表达式。这真的很难解析,这就是为什么我们现在才在编译之前进行错误检查(在 VS2010 和其他最近的 ide 中)。在这种情况下,实现您要求的功能似乎是不可能的。

也就是说,我根本不是专家。这就是我所知道的一切。

于 2010-09-14T21:24:16.683 回答
0

甚至像 PHP 这样的解释型语言在 Komodo 编辑器中也支持这一点。我敢肯定还有更多的编辑器支持几乎所有语言。

于 2010-09-14T22:52:58.160 回答