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

1 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:18:57.52 ID:CAP_USER

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
もうやりたい事を日本語で文章書いたら動けよ
37 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:30:52.79 ID:4AGSfSaK
>>2
漢字Talk時代のApple Scriptが日本語表記okだった気がする
3 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:28:36.18 ID:Xx+137s0
こういうのはだいたい、不具合でて直そうとしたら人には理解できなくて苦労する
4 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:32:25.52 ID:3bcWTHJP
こういうのって違う言語に変換してから元の言語にもう一回変換しても同じ動きするのかな
それか俺が書いた無駄な部分が最適化されてたりして
5 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:32:49.72 ID:DdYJsufQ
>言語のデータ構造やメソッドも理解した
まじかよ
6 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:33:26.30 ID:Cnw6NGdX
SE時代、似たようなやつをリプレースの時作ったわ
7 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:36:12.34 ID:5d0pB2R+
99%変換できても残りの1%がバグになるんなら使い物にはならないんじゃね
8 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:37:59.39 ID:MQDPCWjT
対応言語を一周して同じ動きになってから発表しろよ。
9 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:46:22.86 ID:SwSN/ozR
むしろ、ルールベースで出来ないの?
10 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 21:50:57.29 ID:5KHHmIK4
オーストラリアのコモンウェルス銀行はプラットフォームをCOBOLからJavaに移行するために5年の歳月と約7億5,000万米ドルを費やした。

コボルをJavaにロジックそのままで移行するのはバカ

11 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:00:17.25 ID:L6Jj4+oZ
prologから javascriptに変換してから誇ってもらおうか!
13 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:01:24.68 ID:n1BvwaCv
べーしっ君
14 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:02:55.00 ID:uosQIoSu
よし、COBOLを一括変換だな
15 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:08:05.60 ID:LYXQviAg
これでバグが出たら地獄見る気がする
16 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:10:01.63 ID:0AJ0qp+Y
そして、致命的な不具合が発生しても一生修復できないプログラム完成
17 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:10:02.82 ID:wq05Rhfq
~%変換とか意味ないから。
100%じゃないとゴミですよ。
18 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:29:29.92 ID:fhl8TdVp
>>1
夏が近づいてきたな
肝試しはこのジェネレータの出力コードにきまり
19 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:30:17.51 ID:d0jLNknO
C++ソースをアセンブラに翻訳してみてもらいたい。
32 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:17:40.60 ID:29WCXgwe
>>19
馬鹿発見
39 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:40:03.84 ID:Bq7nXeKX
>>19
仮にアセンブラをアセンブリに読み替えたとしてもコンパイラの役割だろそれは
20 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:30:33.79 ID:iSLbcHy0
競技プログラミングぐらいなら
100%変換可能だろ
21 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:37:05.91 ID:YA0LBWXl
バグも翻訳中に直してくれるの?
22 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:41:36.07 ID:D3u6MgW+
自然言語をプログラム言語に翻訳できる日も近い
23 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:45:11.70 ID:lbOLTlGL
FBって無能なんだな
24 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:49:36.56 ID:HASRNfE3
アスペは文章を全部頭に入れてから考えるのが苦手

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

25 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:49:46.01 ID:FhO6EsCB
c++とjavaは文法が似てるだけあって精度が高い
pythonはかなり違うし動的型付けやから変換しんどそう
26 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:52:15.95 ID:SVKGpFpI
単純なコード以外無理そう
27 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:56:31.69 ID:g7+gg0e7
クレーム対応部門だけが生き残るのか。
超専門用語「仕様です」のみって言う対応マニュアルが配られて・・・
28 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 22:57:57.63 ID:FhO6EsCB
教師なしの学者機能だから延々とコード変換を繰り返して精度を上げていくんだろうな

こいつの変換精度でクソコードかどうか判定できそう

29 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:04:26.39 ID:ydGIzguN
そうだね。本当に理解できたのなら、変換成功率は100%になるはず。
30 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:13:28.31 ID:OXRRxryj
>PythonからC++への変換:57.8%
だめじゃん
31 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:15:17.25 ID:DktoS3Cl
変換するくらいなら作り直す
33 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:18:36.43 ID:Bg7swl4C
ちゃんと動くまで勝手にやってくれるなら素晴らしい
34 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:21:35.43 ID:gKEBQvmu
COBOLからJavaとかならNTTデータがやってなかったっけ?
35 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:26:46.68 ID:dJKSzFhH
勝手に要求仕様書を読んで、勝手に理解して、勝手にテストしてくれるAIが欲しいw
システム作るところが楽しいんだから、楽しみを奪わないで欲しいw
36 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:28:44.19 ID:oAp0YOOF
元のソースコードが完璧ならいずれ出来そうだけど、たいていのプログラムはバグを抱えてるからソレが悪さして訳分からん不具合抱えて動作すらしなさそう
38 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:38:48.39 ID:upPVLLb6
自動変換は変数名がどうなるか分からず変な変数名になる恐れがあるな。
40 名前:一般よりも上級の名無しさん 投稿日時:2020/06/17(水) 23:40:46.65 ID:nUTYiDSL
C系とかメモリ管理がエグいのはまず無理だろうな。

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

41 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 00:05:01.81 ID:cTBLwak2
C#↔VB.NETを100%変換頼むわ
42 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 00:06:26.49 ID:Mash+A4a
変換率100行かないなら、どんだけテストしなきゃいけないのか
43 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 00:07:35.37 ID:CQNMge/7
要するにまだ全然使い物にならんってことね。
10万行程度の小規模なシステムでも99%の精度じゃ1000行間違えてるってことだし。
99.99%の精度が出てやっと10行まで抑え込める。
44 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 00:20:39.26 ID:l47ar4Dh
変換したのを逆変換したら元に戻るのかな
45 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 00:28:05.93 ID:vQXLdcI0
PythonからVBAへの変換やってほしい
もうVBAとか触りたくないねんけど
あれ作れこれ作れってあとからあとからマクロ要望出てきてもうやだ
46 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 00:28:19.35 ID:vJHpgiyf
変数や関数名が001aとかになってそう
47 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 00:30:08.05 ID:MAIOwiHT
テストコード込のコードの前提で、AIでテストを完全にパスするまで再帰してくれたらええのに

逆の発想で、クラスとメソッドのスケルトンとテストコードから、中身を自動実装するAIあったらええのに

48 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 00:52:27.77 ID:2YU1lhVa
大手なら既にコンバージョンツールぐらい自前で持っている
49 名前:一般よりも上級の名無しさん 投稿日時:2020/06/18(木) 01:42:02.35 ID:oYo/HTdu
ポインタとかGCとか高階関数とか
言語によってない機能はどうすんだろ

コメント一覧

タイトルとURLをコピーしました