自分はなんちゃって技術者といわれる部類の営業職なので、当然マニュアルなどを見ながら出ないとPython
はすんなり書くことができません(C言語
などは体にしみこんでいるのでそこそこかけたりしますが)。とはいえ、もう少し体系立ててプログラミング言語を勉強できるといいなあと常々思っています。そんな中見つけたこちらのサイトですが、Python
の実行時の状況(変数など)をビジュアル化(可視化)して表示しながらステップ実行ができます。
個人的にめちゃ便利じゃん!と思ったのでちょっとサイトの紹介がてら動作を確認してみます。
上記サイトにアクセスすると以下のような表示が行われます。
このサイトはPython
以外にもJava
、C
、C++
、JavaScript
、Ruby
といったプログラミング言語にも対応しているようです。
ページには以下の様に記載があります。
Python Tutorは、プログラミングを学ぶ上での根本的な障壁を克服するのに役立ちます。つまり、コンピューターがコードの各行を実行するときに何が起こるかを理解することです。 これを使用して、WebブラウザーでPython、Java、C、C、JavaScript、およびRubyコードを記述し、その実行を段階的に視覚化することができます。
※Python
に関しては即ステップ実行してくれるようですが、Java
などのコンパイルが必要なプログラミング言語では実行時の前処理が必要のようです。
また、ページ下部にも実際のコードとデータの様子などが表示されていました。一見するとビジュアル的なデータなどの表示が行われるデバッガのような位置づけのようです。
実際にコードを試してみる
では実際にコードを実行して試してみようとおもいます。今回はPython
を使用するので画面上部にある【Python Tutor】というリンクをクリックします。
クリックするとエディタモードに画面が遷移します。エディタモードでは【Write code in】というプルダウンメニューで言語やバージョンを選択することができます。
Python
のバージョン3系は3.6が該当するので、プルダウンからPython 3.6
を選択すればよいでしょう。サポート外ながらも2.7系のPython
も使用できるようです。
使用可能なプログラミング言語の候補
エディタ部分に実行可能なPythonのコードを記入すれば準備完了です。 今回はサンプルコードとして用意されたものを実行してみます。
サンプルコード
x = [1, 2, 3] y = [4, 5, 6] z = y y = x x = z x = [1, 2, 3] # a different [1, 2, 3] list! y = x x.append(4) y.append(5) z = [1, 2, 3, 4, 5] # a different list! x.append(6) y.append(7) y = "hello" def foo(lst): lst.append("hello") bar(lst) def bar(myLst): print(myLst) foo(x) foo(z)
【Visualize Execution】ボタンをクリックするとステップ実行画面が表示されます。
この画面ではコードを各行ごとにステップ実行し、変数の値や参照などを可視化してみながら実行を行うことができます。変数の値なのか参照なのかわかるので初学者にも非常にわかりやすく見えると思います。
画面内にある【Next >】ボタンを押すことで順次コードを実行し、その時の状態を可視化してくれます。【Prev >】を押せば1つ前の状態に戻すことができます。また、【Last >>】ボタンをクリックすれば、その時点から最後までのコードまで一気に実行することができます。同様に【<< First】ボタンをクリックすれば、初期状態に戻すこともできます。ターミナルデバッガ的な使い方も簡単にできます。
また、画面の右上には標準出力で表示される内容を示すボックスがあり、その下にデータの可視化が行われるエリアが存在します。
では、このコードをステップ実行してみましょう。【Next >】ボタンをクリックします。
すると、エディタ部分の左側にある矢印が1行下に移動します。そして、右側のエリアに実行したコードの内容が可視化されて表示されます。
このような形で実行の状態が順次ステップ的に表示されます。また、この状態をパーマネントリンクとして保存する事もできます。
先程のコードを最後まで実行すると以下のような状態になります。
おわりに
Python Tutor
を使用することで、Python
の実行状態をわかりやすく確認しながら動作させることができます。
すべてのコードの実行ができるというわけでもありませんが、基本的なコード(教科書のようなコード)の動きを確認するのであれば、
かなりの助けになるサービスではないでしょうか。
このような勉強用のサイトは今まで知りませんでしたが、まだまだネットには有用なものがありますね。
うまく使ってPython
を勉強するのが捗るといいな思います。