X



【IT】Facebook、プログラムコードを別のプログラミング言語に翻訳する「TransCoder AI」を開発 [田杉山脈★]
■ このスレッドは過去ログ倉庫に格納されています
0001田杉山脈 ★
垢版 |
2020/06/17(水) 21:18:57.52ID: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
0002名刺は切らしておりまして
垢版 |
2020/06/17(水) 21:21:48.61ID:pdMnAXm5
もうやりたい事を日本語で文章書いたら動けよ
0004名刺は切らしておりまして
垢版 |
2020/06/17(水) 21:32:25.52ID:3bcWTHJP
こういうのって違う言語に変換してから元の言語にもう一回変換しても同じ動きするのかな
それか俺が書いた無駄な部分が最適化されてたりして
0005名刺は切らしておりまして
垢版 |
2020/06/17(水) 21:32:49.72ID:DdYJsufQ
>言語のデータ構造やメソッドも理解した
まじかよ
0006名刺は切らしておりまして
垢版 |
2020/06/17(水) 21:33:26.30ID:Cnw6NGdX
SE時代、似たようなやつをリプレースの時作ったわ
0007名刺は切らしておりまして
垢版 |
2020/06/17(水) 21:36:12.34ID:5d0pB2R+
99%変換できても残りの1%がバグになるんなら使い物にはならないんじゃね
0010名刺は切らしておりまして
垢版 |
2020/06/17(水) 21:50:57.29ID:5KHHmIK4
オーストラリアのコモンウェルス銀行はプラットフォームをCOBOLからJavaに移行するために5年の歳月と約7億5,000万米ドルを費やした。

コボルをJavaにロジックそのままで移行するのはバカ
0012名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:01:09.34ID:OxKVR8gF
>>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%



解散
0015名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:08:05.60ID:LYXQviAg
これでバグが出たら地獄見る気がする
0016名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:10:01.63ID:0AJ0qp+Y
そして、致命的な不具合が発生しても一生修復できないプログラム完成
0017名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:10:02.82ID:wq05Rhfq
~%変換とか意味ないから。
100%じゃないとゴミですよ。
0018名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:29:29.92ID:fhl8TdVp
>>1
夏が近づいてきたな
肝試しはこのジェネレータの出力コードにきまり
0020名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:30:33.79ID:iSLbcHy0
競技プログラミングぐらいなら
100%変換可能だろ
0024名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:49:36.56ID:HASRNfE3
アスペは文章を全部頭に入れてから考えるのが苦手

嫌われる要素しかない人間、それがアスペルガー症候群
0025名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:49:46.01ID:FhO6EsCB
c++とjavaは文法が似てるだけあって精度が高い
pythonはかなり違うし動的型付けやから変換しんどそう
0026名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:52:15.95ID:SVKGpFpI
単純なコード以外無理そう
0027名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:56:31.69ID:g7+gg0e7
クレーム対応部門だけが生き残るのか。
超専門用語「仕様です」のみって言う対応マニュアルが配られて・・・
0028名刺は切らしておりまして
垢版 |
2020/06/17(水) 22:57:57.63ID:FhO6EsCB
教師なしの学者機能だから延々とコード変換を繰り返して精度を上げていくんだろうな

こいつの変換精度でクソコードかどうか判定できそう
0029名刺は切らしておりまして
垢版 |
2020/06/17(水) 23:04:26.39ID:ydGIzguN
そうだね。本当に理解できたのなら、変換成功率は100%になるはず。
0030名刺は切らしておりまして
垢版 |
2020/06/17(水) 23:13:28.31ID:OXRRxryj
>PythonからC++への変換:57.8%
だめじゃん
0033名刺は切らしておりまして
垢版 |
2020/06/17(水) 23:18:36.43ID:Bg7swl4C
ちゃんと動くまで勝手にやってくれるなら素晴らしい
0034名刺は切らしておりまして
垢版 |
2020/06/17(水) 23:21:35.43ID:gKEBQvmu
COBOLからJavaとかならNTTデータがやってなかったっけ?
0035名刺は切らしておりまして
垢版 |
2020/06/17(水) 23:26:46.68ID:dJKSzFhH
勝手に要求仕様書を読んで、勝手に理解して、勝手にテストしてくれるAIが欲しいw
システム作るところが楽しいんだから、楽しみを奪わないで欲しいw
0036名刺は切らしておりまして
垢版 |
2020/06/17(水) 23:28:44.19ID:oAp0YOOF
元のソースコードが完璧ならいずれ出来そうだけど、たいていのプログラムはバグを抱えてるからソレが悪さして訳分からん不具合抱えて動作すらしなさそう
0037名刺は切らしておりまして
垢版 |
2020/06/17(水) 23:30:52.79ID:4AGSfSaK
>>2
漢字Talk時代のApple Scriptが日本語表記okだった気がする
0040名刺は切らしておりまして
垢版 |
2020/06/17(水) 23:40:46.65ID:nUTYiDSL
C系とかメモリ管理がエグいのはまず無理だろうな。

あと、クソソースは変換後もクソソースw
そう考えたらクソソースを改善してくれるAIの方が使えるわ。
内容を本当に把握できてるならだけど。
0041名刺は切らしておりまして
垢版 |
2020/06/18(木) 00:05:01.81ID:cTBLwak2
C#↔VB.NETを100%変換頼むわ
0043名刺は切らしておりまして
垢版 |
2020/06/18(木) 00:07:35.37ID:CQNMge/7
要するにまだ全然使い物にならんってことね。
10万行程度の小規模なシステムでも99%の精度じゃ1000行間違えてるってことだし。
99.99%の精度が出てやっと10行まで抑え込める。
0044名刺は切らしておりまして
垢版 |
2020/06/18(木) 00:20:39.26ID:l47ar4Dh
変換したのを逆変換したら元に戻るのかな
0045名刺は切らしておりまして
垢版 |
2020/06/18(木) 00:28:05.93ID:vQXLdcI0
PythonからVBAへの変換やってほしい
もうVBAとか触りたくないねんけど
あれ作れこれ作れってあとからあとからマクロ要望出てきてもうやだ
0047名刺は切らしておりまして
垢版 |
2020/06/18(木) 00:30:08.05ID:MAIOwiHT
テストコード込のコードの前提で、AIでテストを完全にパスするまで再帰してくれたらええのに

逆の発想で、クラスとメソッドのスケルトンとテストコードから、中身を自動実装するAIあったらええのに
0049名刺は切らしておりまして
垢版 |
2020/06/18(木) 01:42:02.35ID:oYo/HTdu
ポインタとかGCとか高階関数とか
言語によってない機能はどうすんだろ
0050名刺は切らしておりまして
垢版 |
2020/06/18(木) 01:57:35.18ID:ALUktBkW
>>1
PythonからJavaへの変換:56.1%
JavaからPythonへの変換:68.7%

PythonからJavaの変換率が悪いのはなんとなく分かるけど、
逆のパターンも出来が悪いのはなんでなのかね

Javaなんてきっちり書かせる系言語の最右翼じゃん
0051名刺は切らしておりまして
垢版 |
2020/06/18(木) 02:12:59.23ID:/CulPwXm
Intel Labsの主任研究者兼ディレクターのJustin Gottschlich氏が
インタビューで答えていることがなにひとつプログラム言語翻訳の成果ではなくて
面白い

>これらはソフトウェア開発の無駄を取り除いてくれます。
>バグ対応の手間が省けるので、プロダクティビティの加速化に役立ちます。
>そして新たな職を生み出します。
>なぜならプログラミングをしたことのない人々でもこれらのインターフェイスを通じてクリエイティブな直観を形にすることができるからです。
0052名刺は切らしておりまして
垢版 |
2020/06/18(木) 02:17:43.37ID:rKmEs2BE
>>46
センター試験の問題のようにか
0053名刺は切らしておりまして
垢版 |
2020/06/18(木) 02:27:48.77ID:6LPa6V0x
モックの繊維だけみたら全部作ってくれればよいんやで
0055名刺は切らしておりまして
垢版 |
2020/06/18(木) 03:00:21.95ID:Csf8+adC
100%でないものなんて使い物にならないような
0
1%でも抜けあるなら、結局全部だれかがチェックしないと駄目やん
0056名刺は切らしておりまして
垢版 |
2020/06/18(木) 03:08:47.06ID:3JsGnrtI
英語の翻訳ソフトのように、プログラムの文法や構文・関数の意味を
視覚的に表してくれるソフトでねーかな
0057名刺は切らしておりまして
垢版 |
2020/06/18(木) 03:11:56.21ID:Csf8+adC
>>56
日本には作れる企業はまずないだろうな
欧米頼み
0058名刺は切らしておりまして
垢版 |
2020/06/18(木) 03:19:05.76ID:4aoA9w7m
変換後のコードは人が読めるような物なのか?
0059名刺は切らしておりまして
垢版 |
2020/06/18(木) 05:30:27.92ID:X/AAx9Ff
やろうと思えばプログラムコードを別のプログラミング言語に変換するのって100%の精度でできるだろ
役に立たなさすぎ
0060名刺は切らしておりまして
垢版 |
2020/06/18(木) 05:36:29.34ID:eu2Vosef
こんな制度でアホか
作るよりデバッグの方が大変なことが分かってないニワカだな
ミズホに素材を貰って学習しなおせよ
0061名刺は切らしておりまして
垢版 |
2020/06/18(木) 05:51:22.10ID:mztzMRkp
これ、コンパイラコンパイラをニュラル的に作ったという話だよね
機種依存的になることとインタプリタ系にはできないけど
吐き出すアセンブリ言語を教師データにすれば良いのではないか?
0062名刺は切らしておりまして
垢版 |
2020/06/18(木) 06:16:21.05ID:lfFb9pMV
>>59
各言語で仕様が異なるので、100%の精度はまず不可能です。
0066名刺は切らしておりまして
垢版 |
2020/06/18(木) 08:56:59.07ID:Yxc8URqv
>>1
民族言語の翻訳ならともかく
専門家が合理的に作ったプログラミング言語の相互翻訳が
AIなしにできないことだったのは意外
AI!なんだから、一般人が構想を話すだけでプログラミングしてくれるくらいを期待したい
0067名刺は切らしておりまして
垢版 |
2020/06/18(木) 10:33:13.94ID:7lJzvvJc
プログラミングには言語に合わせてメンテナンスしやすい
書き方と言うのがあってそれに反した書き方も出来るが…
メンテナンスしにくい物になるよ。
自動変換とか…ノーメンテで動けば良いが動かないのなら使いたくないな。
解読に何日かかるのやら
0068名刺は切らしておりまして
垢版 |
2020/06/18(木) 10:35:13.67ID:poHFf5wC
N88BASICからFBASICへの変換
0069名刺は切らしておりまして
垢版 |
2020/06/18(木) 10:36:26.40ID:7lJzvvJc
>>66
ある程度はバッチで出来るよ。
javaとc++とか比較的高い言語だから…ある程度なw
0071名刺は切らしておりまして
垢版 |
2020/06/18(木) 11:02:28.94ID:1MV5QjKQ
上司「これを使えばCOBOL系システムの移行が安くできるだろ?やれ」
0072名刺は切らしておりまして
垢版 |
2020/06/18(木) 11:02:55.94ID:F9CuPdL6
せめて90%くらいないと使えんだろ
最初から書いた方が早いって事になりそう
0073名刺は切らしておりまして
垢版 |
2020/06/18(木) 11:07:49.97ID:k242yC7k
微妙な割合。
0074名刺は切らしておりまして
垢版 |
2020/06/18(木) 11:21:00.31ID:iUtf13OF
>>2
びゅう太「せやな」
0078名刺は切らしておりまして
垢版 |
2020/06/18(木) 11:44:00.83ID:bYicxqn+
変換後のデバックに100倍の時間かかる
0079名刺は切らしておりまして
垢版 |
2020/06/18(木) 11:54:21.60ID:X77IfBV5
>>76
単にgithubにCOBOLのプロジェクトがなかったんだろ
0080名刺は切らしておりまして
垢版 |
2020/06/18(木) 11:56:29.28ID:tnsqSmxA
研究者にありがち
運用の視点ゼロ
幼稚なコーディング
お飾りベンチマークの点数命
0081名刺は切らしておりまして
垢版 |
2020/06/18(木) 12:03:47.88ID:0hG2pvyz
>>71
COBOLが意外に難しい言語であることを、理解している人は少ない。
0082名刺は切らしておりまして
垢版 |
2020/06/18(木) 12:10:23.85ID:0hG2pvyz
>>57
「意味」というのは極めて厄介。
int strlen(const char *p) {
int v = 0;
while (*p++) v++;
return v;
}
この関数の「意味」を尋ねて、AI はちゃんと答えてくれるかね?
0083名刺は切らしておりまして
垢版 |
2020/06/18(木) 12:14:50.39ID:gmxxs+CT
動けばすごいんだがそれなら先にデバッガー欲しいからまぁお察し
0084名刺は切らしておりまして
垢版 |
2020/06/18(木) 12:22:31.16ID:XenJxKnp
>>1
移植は100%オーバーの変換率が求められるのでまだまだ人が必要なんだな。

100%超える分は移植元のバグも取れという要求が必ず付いてくるからね。ただしゲームはバグも完全移植しろと言われるので別。
0085名刺は切らしておりまして
垢版 |
2020/06/18(木) 12:23:05.60ID:kqsYei/c
IT系の大量失業きちゃう?
0086名刺は切らしておりまして
垢版 |
2020/06/18(木) 12:28:52.39ID:vQXLdcI0
int strlen(const char *p) {
char *p2 = p;
while(*p2++);
return(int)(p2-p);
}
このほうが速そうだが
0087名刺は切らしておりまして
垢版 |
2020/06/18(木) 12:32:22.64ID:po5JlPNM
ファミコンのソフトがPS5で遊べるようになるんやな
0088名刺は切らしておりまして
垢版 |
2020/06/18(木) 12:38:32.91ID:oypwLEmn
いらん
終わり
0090名刺は切らしておりまして
垢版 |
2020/06/18(木) 13:06:31.74ID:vQXLdcI0
>>89
strlenはバイト数じゃなく文字数を返すからsizeof(char)がいくつであってもこれでいい
0091名刺は切らしておりまして
垢版 |
2020/06/18(木) 13:15:33.06ID:KEVd5dzQ
変換して場合、そのままじゃ使えないことが多い。
それまでやってくれないと、中身解析しなければわからない場合は
糞だってこと。
0092名刺は切らしておりまして
垢版 |
2020/06/18(木) 13:21:48.78ID:KEVd5dzQ
COBOLとか設計の思想そのものが違うわけで、

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

そもそも静的言語と動的言語の違いは超えられない壁のよういに大きいぞ。
同期プログラムを非同期に書き換えることすらできないお前らPGでは
アホな発想で終るだけ。
0094名刺は切らしておりまして
垢版 |
2020/06/18(木) 13:31:14.41ID:N2MzxLJe
VBからAndroidへ移植が出来るようにオナシャス。
趣味で作ったソフトを携帯したいのだ。
ファイルアクセスもきっちり動くようにオナシャス!
0095名刺は切らしておりまして
垢版 |
2020/06/18(木) 13:54:13.46ID:SrFf9Alk
ライブラリ呼んでる場合はどうするの?
0096名刺は切らしておりまして
垢版 |
2020/06/18(木) 13:59:44.06ID:QiIRNLls
どっちかというとWin10のアップデートで認識しなくなるとか
変換したデータ全部消去とか。そっちのほうがこわいです
0097名刺は切らしておりまして
垢版 |
2020/06/18(木) 14:00:06.97ID:5gADGN2g
>>74
はやいな
0100名刺は切らしておりまして
垢版 |
2020/06/18(木) 14:39:51.68ID:X77IfBV5
>>90
strlenはバイト数を返す
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況