code-820275_1280

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が各言語に特有のシンタックスを理解するだけでなく、言語のデータ構造やメソッドも理解したことが証明されたと研究者らは述べている。

(続きはこちら)
https://thebridge.jp/2020/06/facebooks-transcoder-ai-converts-code-from-one-programming-language-into-another
3: 名刺は切らしておりまして 2020/06/17(水) 21:28:36.18 ID:Xx+137s0
こういうのはだいたい、不具合でて直そうとしたら人には理解できなくて苦労する


18: 名刺は切らしておりまして 2020/06/17(水) 22:29:29.92 ID:fhl8TdVp
>>1
夏が近づいてきたな
肝試しはこのジェネレータの出力コードにきまり

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
対応言語を一周して同じ動きになってから発表しろよ。

11: 名刺は切らしておりまして 2020/06/17(水) 22:00:17.25 ID:L6Jj4+oZ
prologから javascriptに変換してから誇ってもらおうか!

63: 名刺は切らしておりまして 2020/06/18(木) 07:09:10.21 ID:AfKJqjHC
やっとFF3の完全移植ができるな

15: 名刺は切らしておりまして 2020/06/17(水) 22:08:05.60 ID:LYXQviAg
これでバグが出たら地獄見る気がする

58: 名刺は切らしておりまして 2020/06/18(木) 03:19:05.76 ID:4aoA9w7m
変換後のコードは人が読めるような物なのか?

16: 名刺は切らしておりまして 2020/06/17(水) 22:10:01.63 ID:0AJ0qp+Y
そして、致命的な不具合が発生しても一生修復できないプログラム完成

49: 名刺は切らしておりまして 2020/06/18(木) 01:42:02.35 ID:oYo/HTdu
ポインタとかGCとか高階関数とか
言語によってない機能はどうすんだろ

25: 名刺は切らしておりまして 2020/06/17(水) 22:49:46.01 ID:FhO6EsCB
c++とjavaは文法が似てるだけあって精度が高い
pythonはかなり違うし動的型付けやから変換しんどそう

36: 名刺は切らしておりまして 2020/06/17(水) 23:28:44.19 ID:oAp0YOOF
元のソースコードが完璧ならいずれ出来そうだけど、たいていのプログラムはバグを抱えてるからソレが悪さして訳分からん不具合抱えて動作すらしなさそう

40: 名刺は切らしておりまして 2020/06/17(水) 23:40:46.65 ID:nUTYiDSL
C系とかメモリ管理がエグいのはまず無理だろうな。

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

26: 名刺は切らしておりまして 2020/06/17(水) 22:52:15.95 ID:SVKGpFpI
単純なコード以外無理そう

28: 名刺は切らしておりまして 2020/06/17(水) 22:57:57.63 ID:FhO6EsCB
教師なしの学者機能だから延々とコード変換を繰り返して精度を上げていくんだろうな

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

47: 名刺は切らしておりまして 2020/06/18(木) 00:30:08.05 ID:MAIOwiHT
テストコード込のコードの前提で、AIでテストを完全にパスするまで再帰してくれたらええのに

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

43: 名刺は切らしておりまして 2020/06/18(木) 00:07:35.37 ID:CQNMge/7
要するにまだ全然使い物にならんってことね。
10万行程度の小規模なシステムでも99%の精度じゃ1000行間違えてるってことだし。
99.99%の精度が出てやっと10行まで抑え込める。

31: 名刺は切らしておりまして 2020/06/17(水) 23:15:17.25 ID:DktoS3Cl
変換するくらいなら作り直す

35: 名刺は切らしておりまして 2020/06/17(水) 23:26:46.68 ID:dJKSzFhH
勝手に要求仕様書を読んで、勝手に理解して、勝手にテストしてくれるAIが欲しいw
システム作るところが楽しいんだから、楽しみを奪わないで欲しいw

38: 名刺は切らしておりまして 2020/06/17(水) 23:38:48.39 ID:upPVLLb6
自動変換は変数名がどうなるか分からず変な変数名になる恐れがあるな。

46: 名刺は切らしておりまして 2020/06/18(木) 00:28:19.35 ID:vJHpgiyf
変数や関数名が001aとかになってそう

52: 名刺は切らしておりまして 2020/06/18(木) 02:17:43.37 ID:rKmEs2BE
>>46
センター試験の問題のようにか

66: 名刺は切らしておりまして 2020/06/18(木) 08:56:59.07 ID:Yxc8URqv
民族言語の翻訳ならともかく
専門家が合理的に作ったプログラミング言語の相互翻訳が
AIなしにできないことだったのは意外
AI!なんだから、一般人が構想を話すだけでプログラミングしてくれるくらいを期待したい

69: 名刺は切らしておりまして 2020/06/18(木) 10:36:26.40 ID:7lJzvvJc
>>66
ある程度はバッチで出来るよ。
javaとc++とか比較的高い言語だから…ある程度なw

67: 名刺は切らしておりまして 2020/06/18(木) 10:33:13.94 ID:7lJzvvJc
プログラミングには言語に合わせてメンテナンスしやすい
書き方と言うのがあってそれに反した書き方も出来るが…
メンテナンスしにくい物になるよ。
自動変換とか…ノーメンテで動けば良いが動かないのなら使いたくないな。
解読に何日かかるのやら

71: 名刺は切らしておりまして 2020/06/18(木) 11:02:28.94 ID:1MV5QjKQ
上司「これを使えばCOBOL系システムの移行が安くできるだろ?やれ」

76: 名刺は切らしておりまして 2020/06/18(木) 11:33:32.47 ID:881DYyZc
>>71
不思議なことに>>1にCOBOLが無い
サポート切れかも

79: 名刺は切らしておりまして 2020/06/18(木) 11:54:21.60 ID:X77IfBV5
>>76
単にgithubにCOBOLのプロジェクトがなかったんだろ

81: 名刺は切らしておりまして 2020/06/18(木) 12:03:47.88 ID:0hG2pvyz
>>71
COBOLが意外に難しい言語であることを、理解している人は少ない。

75: 名刺は切らしておりまして 2020/06/18(木) 11:33:18.85 ID:Ht0Ao6jT
プログラムは人間が書くから
コメントはAIが書いてくれないかな

ソフトウェアデザイン 2020年7月号
ゆずたそ(著), 小川 詩織(著), 高本 洋(著), 末村 拓也(著), Hara, Tori(著), 吉田 英二(著), 清水 洋治(著), 結城 浩(著), 武内 覚(著), 田中ひさてる(著), 宮原 徹(著), クラスメソッド 豊崎(著), エクスデザイン ninnzinn(著), くつなりょうすけ(著), 梶山 隆輔(著), 仲亀 拓馬(著), 齊藤 秀喜(著), 高橋 憲一(著), 生沼 一公(著), 職業「戸倉彩」(著), mattn(著), あわしろいくや(著), 長嶺 精彦(著), 川上 雄也(著), りゅうちてつや(著), 齋藤 善寛(著), 杉山 貴章(著), Software Design編集部(編集)
(2020-06-18T00:00:01Z)