Alat ini mendeteksi kemiripan antar program untuk membantu pemrogram menulis perangkat lunak yang lebih cepat dan lebih efisien.
Pemrograman komputer tidak pernah semudah ini. Pembuat kode pertama menulis program dengan tangan, menggambar karakter pada kertas grafik sebelum mengubahnya menjadi tumpukan besar kartu berlubang yang dapat diproses oleh komputer. Satu kesalahan, dan semuanya mungkin harus diulang.
Pembuat kode saat ini menggunakan banyak alat canggih yang mengotomatiskan sebagian besar pekerjaan, dari menangkap kesalahan saat Anda mengetik, hingga menguji kode Anda sebelum menerapkannya. Tapi sebaliknya, hanya sedikit yang berubah. Satu kesalahan konyol masih dapat merusak seluruh perangkat lunak. Dan karena sistem menjadi semakin kompleks, melacak kesalahan ini menjadi semakin sulit.
“Terkadang perlu beberapa hari bagi tim pembuat kode untuk memperbaiki satu bug,” kata Justin Gottschlich, direktur grup penelitian pemrograman mesin di Intel.
Inilah sebabnya mengapa beberapa orang berpikir bahwa kita sebaiknya membuat mesin memprogram dirinya sendiri. Pembuatan kode otomatis telah menjadi topik hangat penelitian selama beberapa tahun. Microsoft menanamkan pembuatan kode dasar dalam alat pengembangan perangkat lunak yang banyak digunakan, Facebook telah membuat sistem yang disebut Aroma yang secara otomatis menghentikan program kecil, dan DeepMind telah mengembangkan jaringan saraf yang dapat membuat versi algoritme sederhana yang lebih efisien daripada yang dikembangkan oleh manusia. Bahkan model bahasa OpenAI GPT-3 dapat membuat cuplikan kode sederhana , seperti tata letak halaman, dari kueri bahasa alami.
Gottslich dan koleganya menyebutnya pemrograman mesin.... Bekerja dengan kelompok dari Intel, MIT, dan Georgia Institute of Technology di Atlanta, ia mengembangkan sistem yang disebut Machine Inferred Code Similarity , atau MISIM, yang dapat mengekstrak arti dari sepotong kode - apa yang diberitahukan kode itu kepada komputer - dari dengan cara yang sama seperti sistem Natural Language Processing (NLP) dapat membaca paragraf yang ditulis dalam bahasa Inggris.
MISIM kemudian dapat menyarankan cara lain untuk menulis kode, menyarankan perbaikan dan cara untuk membuatnya lebih cepat atau lebih efisien. Kemampuan alat untuk memahami apa yang program coba lakukan memungkinkannya mengidentifikasi program lain yang melakukan hal serupa. Secara teori, pendekatan ini dapat digunakan oleh mesin yang telah menulis perangkat lunak mereka sendiri berdasarkan selimut tambal sulam dari perangkat lunak yang sudah ada sebelumnya dengan kontrol atau masukan manusia yang minimal.
MISIM bekerja dengan membandingkan potongan kode dengan jutaan program lain yang telah dilihatnya, diambil dari sejumlah besar repositori online. Ini mula-mula menerjemahkan kode ke dalam bentuk yang menangkap apa yang dilakukannya, tetapi mengabaikan cara penulisannya karena dua program, ditulis dengan cara yang sangat berbeda, terkadang melakukan hal yang sama. MISIM kemudian menggunakan jaringan saraf untuk mencari kode lain yang memiliki arti serupa. Dalam pracetak, Gottshlich dan rekannya melaporkan bahwa MISIM 40 kali lebih akurat daripada sistem sebelumnya yang mencoba melakukannya, termasuk Aroma.
MISIM adalah lompatan ke depan yang menarik, kata Veselin Raychev, CTO dari perusahaan Swiss DeepCode, yang alat deteksi kesalahannya - beberapa yang paling canggih di pasar - menggunakan jaringan saraf yang terlatih dalam jutaan program untuk menyarankan perbaikan pada pembuat kode saat mereka menulisnya.
Tetapi pembelajaran mesin masih tidak dapat memprediksi apakah ada sesuatu yang bug, kata Raichev. Ini karena sulit untuk mengajarkan jaringan saraf tentang bug atau bukan jika tidak diberi label oleh manusia.Menurutnya, ada banyak studi menarik dengan deep neural network dan error correction, "tapi secara praktis belum ada, dengan margin yang sangat besar." Sebagai aturan, alat penangkap kesalahan AI memberikan banyak kesalahan positif, katanya.
MISIM menangani ini dengan menggunakan pembelajaran mesin untuk mengidentifikasi kesamaan antar program, daripada mendeteksi bug secara langsung. Dengan membandingkan program baru dengan perangkat lunak yang sudah ada yang diketahui benar, program ini dapat mengingatkan pembuat enkode akan perbedaan penting yang menyebabkan kesalahan.
Intel berencana menggunakan alat ini sebagai sistem rekomendasi untuk pengembangnya sendiri, menawarkan alternatif untuk menulis kode lebih cepat atau lebih efisien. Tetapi karena MISIM tidak terikat pada sintaks dari program tertentu, MISIM dapat melakukan lebih banyak lagi. Misalnya, ini dapat digunakan untuk menerjemahkan kode yang ditulis dalam bahasa lama seperti COBOL ke bahasa yang lebih modern seperti Python. Ini penting karena banyak lembaga, termasuk pemerintah AS , masih mengandalkan perangkat lunak yang ditulis dalam bahasa yang hanya diketahui oleh sedikit pembuat kode.
Akhirnya, Gottslikh percaya bahwa ide ini dapat diterapkan pada bahasa alami. Dikombinasikan dengan NLP (Pemrosesan Bahasa Alami, jangan bingung dengan Pemrograman Linguistik Neuro ), kemampuan untuk bekerja dengan arti kode secara terpisah dari representasi tekstualnya mungkin suatu hari memungkinkan orang untuk menulis perangkat lunak hanya dengan menjelaskan apa yang ingin mereka lakukan dalam kata-kata, katanya.
“Membuat aplikasi kecil untuk ponsel Anda atau hal-hal semacam itu akan membantu Anda dalam kehidupan sehari-hari - menurut saya tidak sejauh itu,” kata Gottshlich. "Saya ingin melihat 8 miliar orang membuat perangkat lunak dengan cara apa pun yang alami bagi mereka."