根据应用于Web架构的MVC模式,您基本上可以拥有的是这样的东西:
- Web应用程序客户端,允许用户插入一些代码,可能利用Javascript进行早期语法检查
- 服务器端点,从客户端接收插入的代码作为输入
操作顺序可以是:
- 在服务器端,将输入转换为目标编程语言(例如Java类或C模块)的适当结构。
- 可能会定义更多上下文(例如,类路径)。
- 然后,如果语言已编译,则将调用编译器(例如javac或gcc)。这可以通过多种方式发生,例如C中的exec或Java中的Runtime.getRuntime()。exec。否则,可以将代码部署在服务器上,或者可以运行某些模拟器并传递代码。
- 随后,执行代码并截获输出(例如,通过将控制台输出定向到文件或仅利用目标语言基础结构,如本例中所示)。该执行可以通过命令行(例如Java)或其他工具(例如,用于运行已部署的php代码的curl进行,因为它是客户端浏览器对其进行访问)
- 服务器的最后一步是将拦截的输出以可读格式(例如HTML)发送回客户端。或者,如果您使用Java,则可以使用Applet,它不会改变基本架构。
但是,总的来说,重点是编译器和解释器是基本软件。它们不适合一般用户使用,它们只能轻松地与操作系统一起使用。因此,据我所知,“在线编译”与“发布代码,使其在服务器上执行并可视化答案”不同。在线编译将意味着在整个网络上分配编译的责任,这确实是有道理的,但是在我看来,它并不旨在用于演示目的(就像您提到的那样)。



