Udacity Web Python 解释器如何工作



Udacity为学生提供了一个Web编辑器来输入Python程序。编辑器识别Python关键字和内置函数,并允许运行程序。你知道这项技术是如何工作的吗?程序是提交到后端并由标准 Python 解释器执行,还是基于 JavaScript 的 Python 解释器?编辑器是简单地保存Python关键字和内置函数的静态列表,还是与标准或基于JavaScript的Python交互以获取这些?

虽然JavaScript python解释器确实存在: http://syntensity.com/static/python.html ,他们似乎没有使用。 如果他们至少没有运行一次程序在自己的解释器上进行验证,那么作弊就太容易了。

在查看了 Udacity 上的网络活动后,我可以看到他们使用一堆数据进行 ajax 调用,然后以 JSON 格式获取程序运行的结果。

猜测他们让标准的python解释器在沙箱中运行,该沙箱将执行分配,然后将结果打包到JSON中,返回到客户端并更新到屏幕。 同时,您提交的结果将记录为您的课程成绩的一部分。

参加派对晚了,但我在 Udacity 担任工程师,所以我想我会试一试。

有两件基本的事情正在发生:

  1. 当前的语法突出显示和编辑是由 Codemirror 实现提供的,尽管我们在过去几年中使用了几个不同的编辑器。
  2. 点击提交(或运行)时,代码将被打包并传送到我们运行执行的沙盒群集。如果你点击提交,这就是我们针对你的代码运行我们自己的测试并对其进行"评分"以查看它是否通过的地方。它的输出(以各种形式)通过管道传输回前端,你会得到反馈。

没有在本地运行它那么快,但它肯定胜过支持几十万人第一次尝试安装 Python ;)

我还没有尝试过 Udacity,但对于语法突出显示部分,可以使用简单的后端代码轻松完成,该代码使用一些 Ajax 进行更新。最简单的方法之一可以用作编译器或解释器中的词法分析。

最新更新