【IT】Facebook、プログラムコードを別のプログラミング言語に翻訳する「TransCoder AI」を開発

1 :田杉山脈 ★:2020/06/17(水) 21:18:57.52 ID:CAP_USER.net
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

2 :名刺は切らしておりまして:2020/06/17(水) 21:21:48.61 ID:pdMnAXm5.net
もうやりたい事を日本語で文章書いたら動けよ
37 :名刺は切らしておりまして:2020/06/17(水) 23:30:52 ID:4AGSfSaK.net
>>2
漢字Talk時代のApple Scriptが日本語表記okだった気がする
76 :名刺は切らしておりまして:2020/06/18(木) 11:21:00.31 ID:iUtf13OF.net
>>2
びゅう太「せやな」
99 :名刺は切らしておりまして:2020/06/18(木) 14:00:06.97 ID:5gADGN2g.net
>>76
はやいな
4 :名刺は切らしておりまして:2020/06/17(水) 21:32:25.52 ID:3bcWTHJP.net
こういうのって違う言語に変換してから元の言語にもう一回変換しても同じ動きするのかな
それか俺が書いた無駄な部分が最適化されてたりして
5 :名刺は切らしておりまして:2020/06/17(水) 21:32:49.72 ID:DdYJsufQ.net
>言語のデータ構造やメソッドも理解した
まじかよ
7 :名刺は切らしておりまして:2020/06/17(水) 21:36:12.34 ID:5d0pB2R+.net
99%変換できても残りの1%がバグになるんなら使い物にはならないんじゃね
13 :名刺は切らしておりまして:2020/06/17(水) 22:01:24.68 ID:n1BvwaCv.net
べーしっ君
14 :名刺は切らしておりまして:2020/06/17(水) 22:02:55 ID:uosQIoSu.net
よし、COBOLを一括変換だな
15 :名刺は切らしておりまして:2020/06/17(水) 22:08:05 ID:LYXQviAg.net
これでバグが出たら地獄見る気がする
16 :名刺は切らしておりまして:2020/06/17(水) 22:10:01.63 ID:0AJ0qp+Y.net
そして、致命的な不具合が発生しても一生修復できないプログラム完成
21 :名刺は切らしておりまして:2020/06/17(水) 22:37:05 ID:YA0LBWXl.net
バグも翻訳中に直してくれるの?
24 :名刺は切らしておりまして:2020/06/17(水) 22:49:36.56 ID:HASRNfE3.net
アスペは文章を全部頭に入れてから考えるのが苦手

嫌われる要素しかない人間、それがアスペルガー症候群

30 :名刺は切らしておりまして:2020/06/17(水) 23:13:28.31 ID:OXRRxryj.net
>PythonからC++への変換:57.8%
だめじゃん
38 :名刺は切らしておりまして:2020/06/17(水) 23:38:48 ID:upPVLLb6.net
自動変換は変数名がどうなるか分からず変な変数名になる恐れがあるな。
40 :名刺は切らしておりまして:2020/06/17(水) 23:40:46 ID:nUTYiDSL.net
C系とかメモリ管理がエグいのはまず無理だろうな。

あと、クソソースは変換後もクソソースw
そう考えたらクソソースを改善してくれるAIの方が使えるわ。
内容を本当に把握できてるならだけど。

41 :名刺は切らしておりまして:2020/06/18(Thu) 00:05:01 ID:cTBLwak2.net
C#↔VB.NETを100%変換頼むわ
45 :名刺は切らしておりまして:2020/06/18(Thu) 00:28:05 ID:vQXLdcI0.net
PythonからVBAへの変換やってほしい
もうVBAとか触りたくないねんけど
あれ作れこれ作れってあとからあとからマクロ要望出てきてもうやだ
48 :名刺は切らしておりまして:2020/06/18(木) 00:52:27.77 ID:2YU1lhVa.net
大手なら既にコンバージョンツールぐらい自前で持っている
52 :名刺は切らしておりまして:2020/06/18(木) 02:12:59.23 ID:/CulPwXm.net
Intel Labsの主任研究者兼ディレクターのJustin Gottschlich氏が
インタビューで答えていることがなにひとつプログラム言語翻訳の成果ではなくて
面白い

>これらはソフトウェア開発の無駄を取り除いてくれます。
>バグ対応の手間が省けるので、プロダクティビティの加速化に役立ちます。
>そして新たな職を生み出します。
>なぜならプログラミングをしたことのない人々でもこれらのインターフェイスを通じてクリエイティブな直観を形にすることができるからです。

55 :名刺は切らしておりまして:2020/06/18(木) 02:46:14.54 ID:fHdxspix.net
>>52
プログラム言語翻訳の成果じゃん
どう読み間違えたんだ?
54 :名刺は切らしておりまして:2020/06/18(木) 02:27:48.77 ID:6LPa6V0x.net
モックの繊維だけみたら全部作ってくれればよいんやで
60 :名刺は切らしておりまして:2020/06/18(木) 05:30:27.92 ID:X/AAx9Ff.net
やろうと思えばプログラムコードを別のプログラミング言語に変換するのって100%の精度でできるだろ
役に立たなさすぎ
63 :名刺は切らしておりまして:2020/06/18(木) 06:16:21.05 ID:lfFb9pMV.net
>>60
各言語で仕様が異なるので、100%の精度はまず不可能です。
68 :きぬさや:2020/06/18(木) 09:09:02.31 ID:scYFPWH4u
ニダー語とか🐈️?
69 :名刺は切らしておりまして:2020/06/18(Thu) 10:33:13 ID:7lJzvvJc.net
プログラミングには言語に合わせてメンテナンスしやすい
書き方と言うのがあってそれに反した書き方も出来るが…
メンテナンスしにくい物になるよ。
自動変換とか…ノーメンテで動けば良いが動かないのなら使いたくないな。
解読に何日かかるのやら
70 :名刺は切らしておりまして:2020/06/18(Thu) 10:35:13 ID:poHFf5wC.net
N88BASICからFBASICへの変換
72 :名刺は切らしておりまして:2020/06/18(Thu) 10:39:28 ID:44yCShOa.net
逆コンパイラ作れば、アセンブリ経由でいくらでも相互変換できるじゃん
73 :名刺は切らしておりまして:2020/06/18(木) 11:02:28.94 ID:1MV5QjKQ.net
上司「これを使えばCOBOL系システムの移行が安くできるだろ?やれ」
83 :名刺は切らしておりまして:2020/06/18(木) 12:03:47.88 ID:0hG2pvyz.net
>>73
COBOLが意外に難しい言語であることを、理解している人は少ない。
79 :名刺は切らしておりまして:2020/06/18(木) 11:39:11.74 ID:Z7KMCRi7.net
世界からCOBOLプログラムを根絶するのに何兆円かかるんだろうかね…
88 :名刺は切らしておりまして:2020/06/18(Thu) 12:28:52 ID:vQXLdcI0.net
int strlen(const char *p) {
char *p2 = p;
while(*p2++);
return(int)(p2-p);
}
このほうが速そうだが
91 :名刺は切らしておりまして:2020/06/18(木) 12:59:13.86 ID:44yCShOa.net
>>88
sizeof(char)が1って決まっているの?
92 :名刺は切らしておりまして:2020/06/18(木) 13:06:31.74 ID:vQXLdcI0.net
>>91
strlenはバイト数じゃなく文字数を返すからsizeof(char)がいくつであってもこれでいい
82 :名刺は切らしておりまして:2020/06/18(木) 11:56:29.28 ID:tnsqSmxA.net
研究者にありがち
運用の視点ゼロ
幼稚なコーディング
お飾りベンチマークの点数命
89 :名刺は切らしておりまして:2020/06/18(木) 12:32:22.64 ID:po5JlPNM.net
ファミコンのソフトがPS5で遊べるようになるんやな
94 :名刺は切らしておりまして:2020/06/18(木) 13:21:48.78 ID:KEVd5dzQ.net
COBOLとか設計の思想そのものが違うわけで、

平安時代の俳句を各国語に翻訳しても、概念が違うそれに変換され
意味不明になるだけ。

そもそも静的言語と動的言語の違いは超えられない壁のよういに大きいぞ。
同期プログラムを非同期に書き換えることすらできないお前らPGでは
アホな発想で終るだけ。

108 :名刺は切らしておりまして:2020/06/18(木) 18:52:41.24 ID:p00V0JhD.net
コボラーおじさんのおれ
また勝ち抜けかよ
112 :名刺は切らしておりまして:2020/06/18(木) 19:49:16.73 ID:6K45D9Wd.net
しかし、オープンシステムの場合はただポーティングするだけのプロジェクトなんて無くて、
アーキテクチャを移行するためのシステムリプレイスだろうからな。
つまり、こうした翻訳機は基本出る幕じゃない。

となると、組み込み系とかそっちの用途か?
処理系(実行環境)に依存して動いているようなプログラムもあると思うんだけどな。
あるいは処理系ならではのバグを潰しているコードはどう解釈する?

レガシーシステムのソースコードなんて「このおまじないはなんだろ???」ばかりだと思うのだが。

引用元:http://anago.2ch.sc/test/read.cgi/bizplus/1592396337