私があなたと別れたとき､ 私たちはPythonからCに変換するためのシンプルなユーザーインターフェイスを作ったばかりだった｡
私はこう言った｡
これをちゃんとしたプロトタイプUIにしよう｡
このJupyterノートブックに戻ったら､ もう少しメソッドを書いてみよう｡
まず第一に､ このPythonのテイク・コードの実行は､ ここでも同じように少し危険なことをしようとしている｡
そのコードを実行する｡
だから今回も､ この特別なプロトタイプは本当にあなたのためだけのものなんだ｡
もしこれを誰かと共有したら､ 彼らはあなたのボックス上で直接Pythonコードを実行する方法を手に入れることになるからだ｡
それは悪いことだ｡
だから､ このグラディオのアプリでは､ シェアは常に虚偽であるべきなのだ｡
ええと､ でも､ あなたにとっては素晴らしいプロトタイプだよ｡
つまり､ このコードを実行するんだ｡
Pythonのコードから出力される標準出力をキャプチャして､
それを返すことで､ コードを受け取って実行し､ gradioに表示するための出力を返す関数にしたいからだ｡
これがパイソンの実行だ｡
そして今度は､ Cプラス・プラス・ウムのコードを実行するための､ 少し重いコードだ｡
それで､ 最初にすることは､ 少し前に書いた関数を呼び出して､ 実際に最適化されたファイルに書き出すことだ｡
それから､ コンパイルコマンドを実行するんだ｡
私はサブプロセスのドットランというものを使っている｡ これは､ 何かを実行するためにサブプロセスをスポーンさせる方法だ｡
それが僕の仕事なんだ｡
さて､ 以前より少し長くなっていることにお気づきだろうか｡
これは､ コードが私のコンピュータに最適化されていることを確認するために､
すべてのフラグを使用するものです｡
このようなことを知り尽くしている人たちにとっては､ ほとんど表面をなぞるようなものだ｡
追加できるフラッグは山ほどある｡
しばらくして､ これで十分だと思ったので､ そのためのフラッグをたくさん入れた｡
そして､ 最適化されたプログラムを実行し､ 標準出力をキャプチャしてそれを返す｡
エラーがあれば標準エラーを返す｡
これが､ Cプラス・プラス・コードを実行し､ レスポンスを返す方法である｡
本当はコンパイルして実行した方が正確なんだけどね｡
ここではCSSの文字列を少し使っている｡
そして､ これがユーザーインターフェースの範囲であり､ すべてである｡
もうコーディングはしない｡
ただこれだけだ｡
GRブロックを使っていますが､ これはGradioの下位APIで､
ユーザーインターフェースの柔軟性を高めることができます｡
自分のCSSを渡すこともできる｡
CSSはこの変数に等しい｡
それで､ もう少しカスタマイズできるんだ｡
このドットマークダウンは､ トップに素敵な見出しをつけてくれる｡
そして､ ウィジェットが1列､ 2列､ 3列､ 4列､ 5列と並んでいる｡
あの......PythonのコードとCプラスアルファのコードはわかると思う｡
デフォルト値を円周率コードに設定する前は､ まさにそうだった｡
ええと､ これは前と同じで､ GPTかClaudeを選ぶドロップダウンです｡
コードを変換するボタンだ｡
それからもういくつかボタンがある｡
Pythonの実行はPythonを､ CPの実行はC plus plusを実行する｡
そして､ Pythonの出力CPをCプラスプラス出力のためにPythonのアウトを持っている｡
もしそうでなければ､ ユーザーインターフェイスをご覧になれば､ すべてが明らかになるでしょう｡
そして､ これを振り返って､ ワオ､ これはとてもシンプルだと言うだろう｡
変換､ Python実行､ Cプラスプラス実行の3つのボタンがあります｡
では､ この3つのボタンのどれかをクリックしたらどうなるのか？
変換ボタンを押しても以前と同じだ｡
optimizeメソッド関数を実行し､ 入力､ Pythonコード､ モデルを渡す｡
出力はC＋＋のコードになるので､ 変換を押すとPythonのコードが出力される｡
モデルを使って変換し､ それをCプラスプラスに入れる｡
Pythonの実行ボタンを押すと､ PythonコードをPythonに出力してPythonを実行する｡
Cプラスプラス実行を押すと､ Cプラスプラスの入力でCプラスプラスのコードが実行される｡
Cプラスプラス出力｡
それだけだ｡
もしそれが､ あー､ たくさんのスパゲッティみたいなものに聞こえたとしたら､ それは､ きれいに解けて､
これから見るものを見れば超明確になる｡
ええと､ これを実行しよう｡
これがユーザー・インターフェースだ｡
よりカラフルなユーザーインターフェースへようこそ｡
ここにはPythonのコードとC＋＋のコードがある｡
そして､ モデル変換コードを選択し､ Pythonを実行し､ Cプラスプラスを実行することができる｡
では､ 始めよう｡
ここでPythonの実行を押して､ このコードを実行することができる｡
このユーザー・インターフェイスから｡
今まさにそのメソッドを呼び出している｡
その結果がここにある｡
あ､ あった｡
確かに円周率はある｡
そして8人かかった｡ 4秒｡
そして､ Cプラスに変換する｡
それに
これだ｡
そして､ Cプラスプラスを走らせることができるようになった｡
これでCプラス・プラスだ｡
私の記憶が正しければ､ 約0だった以前よりかなり速くなっているのがわかるだろう｡ 2秒｡
それは､ このコードを最適化するための追加フラグがあるからなんだ｡
それで､ 2つの実装の間で100倍以上速くなったことがわかるだろう｡
そして､ ループするような数学的なコードでは､ 通常､ C＋＋＋のネイティブ・コンパイルの方が､
少なくとも100倍は速くなると予想される｡
だから､ それほど驚くような結果ではないが､ 良い結果だ｡
ええと､ もちろん､ 数字は､ ええと､ ほんの少しずれているんだけど､ それはたぶん､ 浮動小数点の丸め方のせいだと思う｡
クロードの様子を見て､ 確認しよう｡
そして､ クロードのCプラスプラスのコードを実行してみよう｡
もちろん､ とてもよく似ている｡
同じ番号､ 同じように超高速｡
その結果､ 非常によく似た......C＋＋＋のコードが生成され､ それが同じマシンコードにコンパイルされているのだと思う｡
分かった｡
もう1つ､ 次のビデオに移ってから､ ここを通してハードな問題に取り組むことになる｡
ええと､ それで今日は終わりにしよう｡
僕と同じように楽しんでもらえたら嬉しい｡
これは素晴らしい小さな製品だ｡
すぐに会おう｡