Udacityは、学生が Python プログラムを入力するための Web エディターを提供します。エディターは Python キーワードと組み込み関数を認識し、プログラムを実行できます。この技術がどのように機能するか知っていますか?プログラムはバックエンドに送信され、標準の Python インタープリターによって実行されますか、それとも JavaScript ベースの Python インタープリターですか? エディターは単に Python キーワードと組み込み関数の静的リストを保持するだけですか?それとも標準または JavaScript ベースの Python と対話してこれらを取得しますか?
3 に答える
While javascript python interpreters do exist: http://syntensity.com/static/python.html , they don't appear to be using one. It would be far too easy to cheat if they didn't at least run the programs once for verification on their own interpreter.
After looking at the network activity on Udacity I can see that they make an ajax call with a bunch of data and then get the results of the program run back in JSON.
At a guess they have the standard python interpreter running in a sandbox that will execute the assignments, then the results are packed into JSON, returned to the client and updated to the screen. At the same time the results of your submission will be recorded as part of your class results.
ここでのパーティーには非常に遅れましたが、私は Udacity でエンジニアとして働いているので、やってみようと思いました。
次の 2 つの基本的なことが行われています。
- 現在の構文の強調表示と編集はCodemirror の実装によって提供されていますが、過去数年間でいくつかの異なるエディターを使用してきました。
- 送信 (または実行) をクリックすると、コードがパッケージ化され、実行のために実行されるサンドボックス クラスターに送信されます。送信をクリックすると、ここでコードに対して独自のテストが実行され、合格するかどうかが「評価」されます。そこからの出力 (さまざまな形式) はパイプでフロントエンドに戻され、フィードバックが得られます。
ローカルで実行するほど高速ではありませんが、初めて Python をインストールしようとする数十万人をサポートするよりは確実に優れています ;)
Udacityは試していませんが、構文の強調表示部分については、いくつかのAjaxを使用して更新される単純なバックエンドコードで簡単に行うことができます。最も簡単な方法の1つは、コンパイラーやインタープリターのように字句分析として使用できます。