Scala -> Cを指示すると無理だと言うけど、Scala -> Javaを経由して、Java -> Cを指示すると、文句言いながらも実装出してくれるの面白いです(他の例でも似た現象は見られました)。 中間言語に変換することで実装を容易にするってテクニックが一般にありますが、AIにとっても同じなのかもです。 ↓ pic.twitter.com/oBtiLl5EWm
2022-12-04 17:44:41C版のmyMapRevはちゃんと動作しました。関数ポインタで頑張って元の構造をエミュレーションしようとするところなんかは、とっても「人間ぽい」思考パターンですね(トランスパイラなら構造をぐちゃぐちゃにしそうなところ)。
2022-12-04 17:44:42というわけで、関数ポインタを使わない形にしてさらにインライン展開することもできました。言語処理系実装者が知っている語彙は結構通用しやすいのいいですね。 pic.twitter.com/kuVZZCvaCR
2022-12-04 17:55:08日本語の説明はどんどん変になっているけど、ちゃんとループ展開されたCコードは元の挙動を保っていますね。いやはや凄い。 pic.twitter.com/AP6qZ8hYtz
2022-12-04 18:00:36ChatGPT君はいわばC言語処理系を(大体)持っているのだから、もう全部計算したCプログラムを返してもらえばいいんじゃないかなということで頑張ってもらいました。 一回ミスしましたが間違ってることを言ったら修正してくれました。 pic.twitter.com/Ep7BxAQbcT
2022-12-04 18:15:30ここまで色々試しての結論(発展版): 1. ChatGPTはメジャーなプログラミング言語について、(完全ではないが)かなり高い精度で理解している。結果として、ChatGPTが当該言語の解釈系(インタプリタ)を持っていると仮定した時と同じ(似た)結果を出せる。 ↓
2022-12-04 18:23:232. インライン展開、ループアンローリング、コンパイル時の計算などの最適化に関する語彙も持ち合わせているので、生成プログラムの最適化も(ある程度)言語横断でお願いできる。 3. 複雑過ぎる変換はたまに間違うけど、何が間違っているか指摘すればある程度の範囲でちゃんと修正してくれる。
2022-12-04 18:23:23ChatGPTでプログラミング言語のインタプリタ作ったぜ!というまあ似た発想を同時にしてたぽい人のブログ記事……だけど、デフォルトでChatGPTがなんか言語作ってくれた感じ? 6502.is-a.dev/posts/aoc-2022/
2022-12-04 20:49:20