Как работает интерпретатор Udacity web Python?

Udacity дает студентам веб-редактор для входа в программы Python. Редактор распознает ключевые слова Python и встроенные функции и позволяет запускать программу. Вы знаете, как эта технология работает? Представлены ли программы на бэкэнд и выполнены стандартным интерпретатором Python или это интерпретатор Python на основе JavaScript? Редактор просто хранит статический список ключевых слов Python и встроенных функций или взаимодействует со стандартным или основанным на JavaScript Python, чтобы получить эти данные?

Ответ 1

Хотя javascript-интерпретаторы python действительно существуют: http://syntensity.com/static/python.html, они, похоже, не используют их. Было бы слишком легко обмануть, если бы они, по крайней мере, не запускали программы один раз для проверки на своем собственном переводчике.

После просмотра сетевой активности на Udacity я вижу, что они делают ajax-вызов с кучей данных, а затем получают результаты выполнения программы в JSON.

Угадав, что у них есть стандартный интерпретатор python, работающий в песочнице, которая будет выполнять назначения, тогда результаты будут упакованы в JSON, возвращены клиенту и обновлены до экрана. В то же время результаты вашего представления будут записаны как часть результатов вашего класса.

Ответ 2

Очень поздно на вечеринку здесь, но я работаю инженером в Udacity, поэтому я решил, что дам ему шанс.

Происходят две основные вещи:

  • Текущая подсветка синтаксиса и редактирование обеспечивается реализацией Codemirror, хотя за последние пару лет мы использовали несколько разных редакторов.
  • Когда вы нажмете submit (или запустите), ваш код будет упакован и отправлен в изолированный кластер, который мы запускаем для выполнения. Если вы нажмете submit, вот где мы запускаем собственные тесты против вашего кода и "оцениваем" его, чтобы увидеть, проходит ли он. Выход из этого (в различных формах) передается обратно на передний конец, и вы получаете обратную связь.

Не так быстро, как запустить его локально, но он уверен, что поддерживает несколько сотен тысяч человек, пытающихся установить Python в первый раз;)

Ответ 3

Я не пробовал Udacity, но для элементов подсветки синтаксиса это можно легко сделать с помощью простого внутреннего кода, который обновляется с использованием некоторого Ajax. Один из самых простых способов можно использовать в качестве лексического анализа, как в компиляторах или интерпретаторах.