2ヶ月前

SPoC: 検索ベースの疑似コードからコードへの変換

Sumith Kulal; Panupong Pasupat; Kartik Chandra; Mina Lee; Oded Padon; Alex Aiken; Percy Liang
SPoC: 検索ベースの疑似コードからコードへの変換
要約

疑似コードを機能的に正しい長プログラムにマッピングするタスクについて考察します。テストケースをプログラムの検証メカニズムとして与えることで、疑似コードの可能な翻訳空間を探し、検証に合格するプログラムを見つけることを目指します。しかし、プログラムの失敗源を局所化するための適切なクレジットアサインメントがなければ、より有望なプログラムへの探索を導くのは困難です。私たちは、コンパイルエラーからの信号に基づいてクレジットアサインメントを行うことを提案します。これは、プログラムの失敗の88.7%を占めています。具体的には、各疑似コード行の翻訳をプログラムの離散的な部分と捉え、合成されたプログラムがコンパイルに失敗した場合、エラーローカライゼーション手法を使用して失敗の原因となるプログラム部分を特定しようと試みます。その後、その部分に対する疑似コードの代替翻訳に焦点を当てて探索を行います。評価のために、人間によって作成された疑似コードとテストケースを含む18,356つのプログラムからなるSPoCデータセット(Search-based Pseudocode to Code)を収集しました。100回のプログラムコンパイルという予算のもとで探索を行うことで、疑似コードから最上位1つの翻訳を使用する場合よりも合成成功率が25.6%から44.7%に向上しました。