【IT】Facebook、プログラムコードを別のプログラミング言語に翻訳する「TransCoder AI」を開発 [田杉山脈★]
■ このスレッドは過去ログ倉庫に格納されています
FacebookはC++、Java、Pythonなどの高水準言語で書かれたプログラムコードを別のプログラミング言語に変換するニューラルトランスコンパイラを開発したという。このシステムは教師なし学習を採用しており、同社は従来よりもかなり効率が改善したとしている。
既存のプログラムコードを別の言語に移行するには、両方の言語について専門的な知識が必要な上、コストがかかってしまいがちだ。たとえばオーストラリアのコモンウェルス銀行はプラットフォームをCOBOLからJavaに移行するために5年の歳月と約7億5,000万米ドルを費やした。
Facebookは教師なし学習というアプローチ法に取り組み、C++、Java、Python間でソースコードを変換することができる「TransCoder」を開発した。トレーニングには280万件以上のオープンソースリポジトリからなるGitHubコーパスを使用した。TransCoderは元のプログラムコードを別の言語へ変換し、変換したプログラムコードを元の言語へ再度変換することを繰り返して学習している。
TransCoderのパフォーマンス評価にはGeeksforGeeks(コーディングの問題点や解決方法を集めたオンラインプラットフォーム)から抽出したC++、Java、Pythonの関数852個を使用した。Facebookによると、最も評価の高かったバージョンのTransCoderは、厳密に言えば同一の関数を生成していないことが多かったが、計算精度が高かった。以下にTransCoderが期待される結果を返した割合をまとめる。
C++からJavaへの変換:74.8%
C++からPythonへの変換:67.2%
JavaからC++への変換:91.6%
PythonからJavaへの変換:56.1%
PythonからC++への変換:57.8%
JavaからPythonへの変換:68.7%
TransCoderが各言語に特有のシンタックスを理解するだけでなく、言語のデータ構造やメソッドも理解したことが証明されたと研究者らは述べている。
専門知識を持たなくても、TransCoderを使えばあらゆるプログラミング言語で容易にソースコードを生成できます。しかも商業用のソリューションを大幅に上回っています。
AIによるコード生成システムを開発しているのはFacebookだけではない。今年行われたMicrosoftのカンファレンス「Build」では、OpenAIが英文で書かれたコメントから関数を生成するモデルをデモンストレーションした。2年前にはライス大学の研究者が「意図」を読み取ってコードを生成する「Bayouというシステムを作っている。
Intel Labsの主任研究者兼ディレクターのJustin Gottschlich氏はVentureBeatのインタビューに対してこう語った。
これらはソフトウェア開発の無駄を取り除いてくれます。バグ対応の手間が省けるので、プロダクティビティの加速化に役立ちます。そして新たな職を生み出します。なぜならプログラミングをしたことのない人々でもこれらのインターフェイスを通じてクリエイティブな直観を形にすることができるからです。
https://thebridge.jp/2020/06/facebooks-transcoder-ai-converts-code-from-one-programming-language-into-another こういうのはだいたい、不具合でて直そうとしたら人には理解できなくて苦労する こういうのって違う言語に変換してから元の言語にもう一回変換しても同じ動きするのかな
それか俺が書いた無駄な部分が最適化されてたりして 99%変換できても残りの1%がバグになるんなら使い物にはならないんじゃね 対応言語を一周して同じ動きになってから発表しろよ。 オーストラリアのコモンウェルス銀行はプラットフォームをCOBOLからJavaに移行するために5年の歳月と約7億5,000万米ドルを費やした。
コボルをJavaにロジックそのままで移行するのはバカ prologから javascriptに変換してから誇ってもらおうか! >>1
>C++からJavaへの変換:74.8%
>C++からPythonへの変換:67.2%
>JavaからC++への変換:91.6%
>PythonからJavaへの変換:56.1%
>PythonからC++への変換:57.8%
>JavaからPythonへの変換:68.7%
解散 そして、致命的な不具合が発生しても一生修復できないプログラム完成 ~%変換とか意味ないから。
100%じゃないとゴミですよ。 >>1
夏が近づいてきたな
肝試しはこのジェネレータの出力コードにきまり C++ソースをアセンブラに翻訳してみてもらいたい。 競技プログラミングぐらいなら
100%変換可能だろ アスペは文章を全部頭に入れてから考えるのが苦手
嫌われる要素しかない人間、それがアスペルガー症候群 c++とjavaは文法が似てるだけあって精度が高い
pythonはかなり違うし動的型付けやから変換しんどそう クレーム対応部門だけが生き残るのか。
超専門用語「仕様です」のみって言う対応マニュアルが配られて・・・ 教師なしの学者機能だから延々とコード変換を繰り返して精度を上げていくんだろうな
こいつの変換精度でクソコードかどうか判定できそう そうだね。本当に理解できたのなら、変換成功率は100%になるはず。 >PythonからC++への変換:57.8%
だめじゃん COBOLからJavaとかならNTTデータがやってなかったっけ? 勝手に要求仕様書を読んで、勝手に理解して、勝手にテストしてくれるAIが欲しいw
システム作るところが楽しいんだから、楽しみを奪わないで欲しいw 元のソースコードが完璧ならいずれ出来そうだけど、たいていのプログラムはバグを抱えてるからソレが悪さして訳分からん不具合抱えて動作すらしなさそう >>2
漢字Talk時代のApple Scriptが日本語表記okだった気がする 自動変換は変数名がどうなるか分からず変な変数名になる恐れがあるな。 >>19
仮にアセンブラをアセンブリに読み替えたとしてもコンパイラの役割だろそれは C系とかメモリ管理がエグいのはまず無理だろうな。
あと、クソソースは変換後もクソソースw
そう考えたらクソソースを改善してくれるAIの方が使えるわ。
内容を本当に把握できてるならだけど。 C#↔VB.NETを100%変換頼むわ 変換率100行かないなら、どんだけテストしなきゃいけないのか 要するにまだ全然使い物にならんってことね。
10万行程度の小規模なシステムでも99%の精度じゃ1000行間違えてるってことだし。
99.99%の精度が出てやっと10行まで抑え込める。 PythonからVBAへの変換やってほしい
もうVBAとか触りたくないねんけど
あれ作れこれ作れってあとからあとからマクロ要望出てきてもうやだ テストコード込のコードの前提で、AIでテストを完全にパスするまで再帰してくれたらええのに
逆の発想で、クラスとメソッドのスケルトンとテストコードから、中身を自動実装するAIあったらええのに 大手なら既にコンバージョンツールぐらい自前で持っている ポインタとかGCとか高階関数とか
言語によってない機能はどうすんだろ >>1
PythonからJavaへの変換:56.1%
JavaからPythonへの変換:68.7%
PythonからJavaの変換率が悪いのはなんとなく分かるけど、
逆のパターンも出来が悪いのはなんでなのかね
Javaなんてきっちり書かせる系言語の最右翼じゃん Intel Labsの主任研究者兼ディレクターのJustin Gottschlich氏が
インタビューで答えていることがなにひとつプログラム言語翻訳の成果ではなくて
面白い
>これらはソフトウェア開発の無駄を取り除いてくれます。
>バグ対応の手間が省けるので、プロダクティビティの加速化に役立ちます。
>そして新たな職を生み出します。
>なぜならプログラミングをしたことのない人々でもこれらのインターフェイスを通じてクリエイティブな直観を形にすることができるからです。 モックの繊維だけみたら全部作ってくれればよいんやで >>51
プログラム言語翻訳の成果じゃん
どう読み間違えたんだ? 100%でないものなんて使い物にならないような
0
1%でも抜けあるなら、結局全部だれかがチェックしないと駄目やん 英語の翻訳ソフトのように、プログラムの文法や構文・関数の意味を
視覚的に表してくれるソフトでねーかな >>56
日本には作れる企業はまずないだろうな
欧米頼み やろうと思えばプログラムコードを別のプログラミング言語に変換するのって100%の精度でできるだろ
役に立たなさすぎ こんな制度でアホか
作るよりデバッグの方が大変なことが分かってないニワカだな
ミズホに素材を貰って学習しなおせよ これ、コンパイラコンパイラをニュラル的に作ったという話だよね
機種依存的になることとインタプリタ系にはできないけど
吐き出すアセンブリ言語を教師データにすれば良いのではないか? >>59
各言語で仕様が異なるので、100%の精度はまず不可能です。 変換できなかった部分とオリジナルの違いとか考えると全く使えんな 『人間に危害を加えてはいけない』
AI「これ邪魔だから消したろ」 >>1
民族言語の翻訳ならともかく
専門家が合理的に作ったプログラミング言語の相互翻訳が
AIなしにできないことだったのは意外
AI!なんだから、一般人が構想を話すだけでプログラミングしてくれるくらいを期待したい プログラミングには言語に合わせてメンテナンスしやすい
書き方と言うのがあってそれに反した書き方も出来るが…
メンテナンスしにくい物になるよ。
自動変換とか…ノーメンテで動けば良いが動かないのなら使いたくないな。
解読に何日かかるのやら >>66
ある程度はバッチで出来るよ。
javaとc++とか比較的高い言語だから…ある程度なw 逆コンパイラ作れば、アセンブリ経由でいくらでも相互変換できるじゃん 上司「これを使えばCOBOL系システムの移行が安くできるだろ?やれ」 せめて90%くらいないと使えんだろ
最初から書いた方が早いって事になりそう プログラムは人間が書くから
コメントはAIが書いてくれないかな >>71
不思議なことに>>1にCOBOLが無い
サポート切れかも 世界からCOBOLプログラムを根絶するのに何兆円かかるんだろうかね… >>76
単にgithubにCOBOLのプロジェクトがなかったんだろ 研究者にありがち
運用の視点ゼロ
幼稚なコーディング
お飾りベンチマークの点数命 >>71
COBOLが意外に難しい言語であることを、理解している人は少ない。 >>57
「意味」というのは極めて厄介。
int strlen(const char *p) {
int v = 0;
while (*p++) v++;
return v;
}
この関数の「意味」を尋ねて、AI はちゃんと答えてくれるかね? 動けばすごいんだがそれなら先にデバッガー欲しいからまぁお察し >>1
移植は100%オーバーの変換率が求められるのでまだまだ人が必要なんだな。
100%超える分は移植元のバグも取れという要求が必ず付いてくるからね。ただしゲームはバグも完全移植しろと言われるので別。 int strlen(const char *p) {
char *p2 = p;
while(*p2++);
return(int)(p2-p);
}
このほうが速そうだが ファミコンのソフトがPS5で遊べるようになるんやな >>86
sizeof(char)が1って決まっているの? >>89
strlenはバイト数じゃなく文字数を返すからsizeof(char)がいくつであってもこれでいい 変換して場合、そのままじゃ使えないことが多い。
それまでやってくれないと、中身解析しなければわからない場合は
糞だってこと。 COBOLとか設計の思想そのものが違うわけで、
平安時代の俳句を各国語に翻訳しても、概念が違うそれに変換され
意味不明になるだけ。
そもそも静的言語と動的言語の違いは超えられない壁のよういに大きいぞ。
同期プログラムを非同期に書き換えることすらできないお前らPGでは
アホな発想で終るだけ。 こんなの変換しても南無三で走らせられないでしょう絶対に VBからAndroidへ移植が出来るようにオナシャス。
趣味で作ったソフトを携帯したいのだ。
ファイルアクセスもきっちり動くようにオナシャス! どっちかというとWin10のアップデートで認識しなくなるとか
変換したデータ全部消去とか。そっちのほうがこわいです 99%なら凄いって思うけど
この変換率だと別に必要ないわ ■ このスレッドは過去ログ倉庫に格納されています