12

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

4

3 回答 3

13

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

查看 Udacity 上的网络活动后,我可以看到他们使用大量数据进行 ajax 调用,然后以 JSON 格式返回程序运行的结果。

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

于 2012-09-14T15:32:43.423 回答
7

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

有两个基本的事情发生:

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

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

于 2014-01-30T18:12:59.620 回答
2

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

于 2012-09-14T15:43:54.083 回答