【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%なら凄いって思うけど
この変換率だと別に必要ないわ >>98
だんだん上昇してくるんだろうな
抜かりない javaからC++とかそのままでも90%行くんじゃね こういうのって結構昔からなかったっけ?
結局、変換できなかったり、構文がおかしかったり、変換後の言語には存在しない関数使おうとしたりで人間が手作業で一個一個直していくの コード変換が仮にできても、
誤ったコードを誤ったコードに変換するし
テストを1からやらなきゃいかんし、
現システムがどう動いているかの文書は出て来ないし、
システムの改善点も教えてくれないし、
:
:
そもそも簡単に読めるシステムは、手作業で変換・改良しても苦労じゃないし クソみたいな自動生成で懲り懲り
変なアダプタクラスが大量に作られて直すがクソめんどい メタメタなメタプログラミングしてるC++とか無理じゃないの しかし、オープンシステムの場合はただポーティングするだけのプロジェクトなんて無くて、
アーキテクチャを移行するためのシステムリプレイスだろうからな。
つまり、こうした翻訳機は基本出る幕じゃない。
となると、組み込み系とかそっちの用途か?
処理系(実行環境)に依存して動いているようなプログラムもあると思うんだけどな。
あるいは処理系ならではのバグを潰しているコードはどう解釈する?
レガシーシステムのソースコードなんて「このおまじないはなんだろ???」ばかりだと思うのだが。 全然実用レベルじゃないやんwww
外部ライブラリのディペンデンシー解決してくれるわけでもないし
7割程度の変換の精度だと
結局ソース全面精査が必要
そんなんだったら手作業で移植コード書いたほうが早いわ 研究途中の話なんだから「へーここまでできるようになったんだ」で良いのに
「100パーセントじゃないと意味ない!ムキー!」ってなってる奴らは何なんだろう
職が奪われそうでビビってる底辺IT土方か
最新の研究をディスることで偉くなった気分になってる低能層ってところ? >>116
というより研究途中段階にしろ
ここまで激烈に精度低いことに感想を持つ奴が多いってだけの話
成果として嬉々として報告してるわけだしな >>117
研究ってそういうもんだろ
コンピュータだって手で回路変えるところからここまで発展したわけだし
「人力で回路変えてるより筆算したほうが早いwww」って当時笑ってた奴らは先が見えてなかった
研究途中のものに対しては笑うより「ここがこうなったらこんなふうに使えるよね」って思いを馳せたほうがよほど有益だと思うけど >>118
そういうへんな笑い方をした人は実在していたのでしょうか?
あなたの頭の中にだけ存在するのかもしれません
いちど相談なさってはいかがでしょうか
一度配線して1000人分、筆算?で1000人分
その当時すでに算盤があったはず >>119
あらー
例えもわからないとはアスペでしたか
失礼しました 不適切なたとえを指摘するのは前準備
>>118
>研究途中のものに対しては笑うより「ここがこうなったらこんなふうに使えるよね」って思いを馳せたほうがよほど有益だと思うけど
笑っていない
正当な評価を下しているのである
既存のマイグレーションツールが軒並み90%以上であることを踏まえると
この研究者達がこんな発表をするのは、世間知らずであり
ここまでのレスで明白なように
AIは今回も実用にならなかったと思いを馳せさせる始末である >>116
AIにコンバートさせたらこんな結果になりましたってだけで
それ以上のものではないからね。
理論的な裏付けがあるわけでもないし。 変換前に何度も実行して、バグを見つけ出して
修正しながら変換だな
何億回と実行すれば、どんなベテランの人間もかなわないだろ
元のプログラム言語の製作と使う人がやりたいことを話しかけるだけで大半の操作はOKになるだろうな >>118
ちょっとした文章なら手書きが早いと言ってたやつ
ちょっとした図面なら2DCADが早いと言ってたやつ
は定年退職するまで転換出来なかったな >AIによるコード生成システムを開発しているのはFacebookだけではない。
今年行われたMicrosoftのカンファレンス「Build」では、OpenAIが英文で書かれた
コメントから関数を生成するモデルをデモンストレーションした。
2年前にはライス大学の研究者が「意図」を読み取ってコードを
生成する「Bayouというシステムを作っている。
でもさ、文書の翻訳と同じでさ、荒い変換は高速かつ大量に行えても
最後に、各言語に精通した人がコードを精査して調整やデバッグは
必要になるよね。 最低でも、意図した通りの動きになってるか
ブラックボックステストは必要だよね。 システムがデカイとこの
テスト項目も膨大になるし、今でもソフト開発のマンパワーはここが
6割近いわ。 >>126
インターネット検索みたいにざっくりとした結果が得られればいい用途には使えるかもな 言語パラダイムの差も埋められるのかな
動くけど理解できないコードにされると困るんだけど エラーだらけだろこんな変換率じゃ
絶対、初めからその言語で書いたほうが早いわ >>118
>研究ってそういうもんだろ
シンプルに回答するならば違う
現段階で使えないのであればそれを問題点としてあげないのは
研究じゃなくてスピリチュアル
ちなみに回路は規模の話があるから初期の段階で笑いは起きてないし
そもそも明確に将来性が見えていた点でたとえとしても尋常じゃないレベルでマッチしとらんw 「犬」を「cat」に変換するバグがあったとして、
「cat」を逆変換して「犬」に戻ったからといって
正しく翻訳できてることには成らないのだが >>133
いやあるだろw
シンプルに間違ったこと書くなw ただでも理解に苦労するコードが余計意味不明なものになって
そんなもんをメンテナンスしていくぐらいなら
元の言語の文法勉強した方がよっぽど安全 リファクタリングAI作れよ
(更に難しいだろうけど) 99%なら検討に値するが、こんなへっぽこ変換率なら使えねーといってるも同じ。
出来るだけ元ソースいじらずに裏でゴニョゴニョするのが正しいと思うんだ。 >>116
今回発表されたのはいわばプログラム言語版エキサイト翻訳
コンパイルエラーは回避されているだろうが、まともに動くか非常に怪しい
精度がある程度以下になるとテストや修正の工数がかかるようになって、
ゼロから作るのとそう変わらなくなるんだよね >>2
これいつも思うけど英語圏の人間ならコード書くの余裕なん?
んなことねえだろw お前らコンピュータのことになるとうるさいオタク野郎だし、知ったかぶりする気ないけど。
20年以上前からあるだろ。そもそも常識レベルの話だと思うんだけど。学校で何のお勉強をしたんだ?
https://oshiete.goo.ne.jp/qa/8332787.html
C言語のプログラムをFORTRANに変換できるソフトなどはあるのでしょうか?
WEBでは「C2F」というものがあったように記載しているページがありますが、
逆のf2cは以前結構使われていました。 「ニューラルネットワークを活用」、が新しいのか。
単に変換するソフトなら20年以上前からフリーソフトであるだろ。 「株価対策をしたいマスコミが、また、くだらないことに飛びついて、あることないことわめいているんだろ」、と思った。 自然言語の翻訳と違って、意味がわかればいいってもんじゃないからなぁ。
ドキュメントがないコードのために
コードから自然言語へのコンパイルとかの方が実用的なんじゃないかと思う。 2020/05/07
【IT】増えるプログラミング教室、都市部では供給過剰に? [田杉山脈★]
https://egg.5ch.net/test/read.cgi/bizplus/1588848125/202
6/15
ゲームを作りたい。プログラミング言語は何がいいんだ?
https:
//hayabusa9.5ch.net/test/read.cgi/news/1592208260/
6/22
【日本初】世界に広がる「学費無料のIT技術者養成機関」が東京に開設 [チミル★]
https:
//asahi.5ch.net/test/read.cgi/newsplus/1592815371/
6/19
誰でもソフト開発「ノーコード」 米IT大手が熱視線
https://www.nikkei.com/article/DGXMZO60479010Y0A610C2TJ1000/
5/22
【プログラミング言語】マイクロソフトのGW-BASICがオープンソースに 1983年のMS-DOS用BASICをアセンブリ言語で【i8088環境向け】 [エリオット★]
https:
//egg.5ch.net/test/read.cgi/bizplus/1590136947/
6/16
【プログラミング】量子コンピューターのための新高水準プログラミング言語Silq [エリオット★]
https:
//egg.5ch.net/test/read.cgi/bizplus/1592284089/1-3 実は一旦疑似コードへ変換するのかね?
ダイレクトだと自由度が弱くね?
と思ったです(小並感) ■ このスレッドは過去ログ倉庫に格納されています