Udacity Web Python解释器如何工作?

时间:2012-09-14 15:16:40

标签: javascript python

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

3 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:5)

非常来到这里的聚会很晚,但我在Udacity担任工程师,所以我想我会试一试。

有两个基本的事情发生:

  1. 当前语法突出显示和编辑由Codemirror implementation提供,尽管我们在过去几年中使用过几个不同的编辑器。
  2. 当您点击提交(或运行)时,您的代码将被打包并运送到我们运行以执行的沙盒集群中。如果您正在进行提交,那么我们就会针对您的代码运行我们自己的测试并对其进行“评分”以查看它是否通过。它的输出(以各种形式)通过管道传送到前端,您就会收到反馈。
  3. 没有在本地运行它那么快,但肯定会支持数十万人第一次尝试安装Python;)

答案 2 :(得分:2)

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