【发布时间】:2011-11-24 02:26:17
【问题描述】:
我这周刚开始上计算机科学课时想到了一些事情:
是否有编译器可以主动纠正代码中出现的编译错误(有效地减少/消除代码中的错误的反馈循环)?
在某些编程环境中,这是通过建议(例如,未知语法上的红色下划线、键入代码时自动完成)被动完成的,但是否有编译器主动执行此操作的示例(即直接重写代码)?
想到这个让我想到别的东西:
实现起来有多复杂?我想这是非常复杂的,因为它归结为分析代码和平衡精度(例如精确定位用户想要什么 - 提出问题并获得程序员反馈)和方便的通用性(例如确定“一般”用户想要什么并更改代码-然后程序员可以返回并更改代码以更具体地针对他们的任务)。这些都是粗略的想法,因为一个高度复杂、专注的程序涉及很多很多复杂的想法,它们的优先级并不总是很容易在代码中检测到(也很容易分析)。
作为一个极端的例子,可以分析一段无语法的代码,例如“绘制一个矩形”,然后根据程序员的输入(从程序员那里获得有关“在哪里绘制?”、“什么大小的矩形? ”,或“2d 或 3d 空间?”)可以编写程序(优先考虑精度而不是一般性)。或者,当发现关键字(“draw”、“rectangle”)时,可能会有用于创建代码的低级别默认值(优先考虑通用性而不是精度)。
【问题讨论】:
-
听起来您是在讨论 IDE,而不是编译器。
-
是的,我想它必须是一个 IDE 才能存在循环。
-
我不希望我的编译器主动重写代码。失去控制。编译器试图过于聪明并做出错误选择的可能性。可能总是有几种不同的方法来修复错误,我不相信编译器能够解决它。 IDE 已经提供了一个“反馈循环”,它可以显示编译错误并提出修复建议(然后用户必须接受)。
-
但是如果程序员更喜欢帮助而不是控制怎么办(即是编程新手/是一个年轻人)?我认为这就是我认为具有更多“动手”方法的 IDE 的那种程序员。
-
一个建议更正的IDE是可以的(我认为他们中的一些人会这样做)。进行更正以响应鼠标点击可能会很方便。在没有明确许可的情况下进行更正不是我希望开发系统做的事情。
标签: compiler-construction analysis autocorrect