ChatGPTにプログラミング言語の解釈系になってもらった

ChatGPTの一つの可能性として色々試してみた結果をセルフまとめしてみました(一部、他の人のツイートもあります)。
15
前へ 1 ・・ 3 4
kmizu @kmizu

Scala -> Cを指示すると無理だと言うけど、Scala -> Javaを経由して、Java -> Cを指示すると、文句言いながらも実装出してくれるの面白いです(他の例でも似た現象は見られました)。 中間言語に変換することで実装を容易にするってテクニックが一般にありますが、AIにとっても同じなのかもです。 ↓ pic.twitter.com/oBtiLl5EWm

2022-12-04 17:44:41
拡大
拡大
kmizu @kmizu

C版のmyMapRevはちゃんと動作しました。関数ポインタで頑張って元の構造をエミュレーションしようとするところなんかは、とっても「人間ぽい」思考パターンですね(トランスパイラなら構造をぐちゃぐちゃにしそうなところ)。

2022-12-04 17:44:42
kmizu @kmizu

というわけで、関数ポインタを使わない形にしてさらにインライン展開することもできました。言語処理系実装者が知っている語彙は結構通用しやすいのいいですね。 pic.twitter.com/kuVZZCvaCR

2022-12-04 17:55:08
拡大
拡大
拡大
拡大
kmizu @kmizu

日本語の説明はどんどん変になっているけど、ちゃんとループ展開されたCコードは元の挙動を保っていますね。いやはや凄い。 pic.twitter.com/AP6qZ8hYtz

2022-12-04 18:00:36
拡大
拡大
kmizu @kmizu

ChatGPT君はいわばC言語処理系を(大体)持っているのだから、もう全部計算したCプログラムを返してもらえばいいんじゃないかなということで頑張ってもらいました。 一回ミスしましたが間違ってることを言ったら修正してくれました。 pic.twitter.com/Ep7BxAQbcT

2022-12-04 18:15:30
拡大
拡大
拡大
kmizu @kmizu

ここまで色々試しての結論(発展版): 1. ChatGPTはメジャーなプログラミング言語について、(完全ではないが)かなり高い精度で理解している。結果として、ChatGPTが当該言語の解釈系(インタプリタ)を持っていると仮定した時と同じ(似た)結果を出せる。 ↓

2022-12-04 18:23:23
kmizu @kmizu

2. インライン展開、ループアンローリング、コンパイル時の計算などの最適化に関する語彙も持ち合わせているので、生成プログラムの最適化も(ある程度)言語横断でお願いできる。 3. 複雑過ぎる変換はたまに間違うけど、何が間違っているか指摘すればある程度の範囲でちゃんと修正してくれる。

2022-12-04 18:23:23
kmizu @kmizu

ChatGPTでプログラミング言語のインタプリタ作ったぜ!というまあ似た発想を同時にしてたぽい人のブログ記事……だけど、デフォルトでChatGPTがなんか言語作ってくれた感じ? 6502.is-a.dev/posts/aoc-2022/

2022-12-04 20:49:20
前へ 1 ・・ 3 4